Ciao, nel codice ci sono diversi errori di distrazione. Comunque ho visto che hai sbagliato un po la sintassi delle condizioni multiple, lo switch. La sintassi è
switch(variabile)
{
case 0:
/*codice*/
case 1:
/*codice*/
case 2:
/*codice*/
case 3:
/*codice*/
}
poi i prototipi delle funzioni non vanno messi nella funzione main() ma in generale sotto gli include o le define.
ti posto il codice completo:
#include <stdio.h>
#include <stdlib.h>
#define MAX 20
/* prototipi */
int empty_stack(int S[]);
int full_stack(int S[]);
void push(int S[],int valore);
int pop(int S[]);
void stampa(int S[]);
void new_stack(int S[]);
int main()
{
void push(int S[],int valore);
int pop(int S[]);
void new_stack(int S[]);
void stampa(int S[]);
int empty_stack(int S[]);
int full_stack(int S[]);
int S[MAX+1],scelta,valore;
do
{
printf("\n scelta: 0-Crea, 1-Stampa, 2-Pop, 3-Push, 4-Uscita: ");
scanf("%d",&scelta);
switch (scelta)
{
case 0:
new_stack(S); break;
case 1:
stampa(S); break;
case 2:
if (!empty_stack(S))
printf("\n Top dello stack %d", pop(S));
else
printf("\n spiacente, stack vuoto");
break;
case 3:
if (!full_stack(S))
{
printf("\n valore da inserire nello stack: ");
scanf("%d",&valore);
push(S,valore);
}
else
printf("\n spiacente, stack pieno");
}
}
while(scelta!=4);
}
void push(int S[],int valore)
{
S[0]=S[0]+1;
S[S[0]]=valore;
}
int pop(int S[])
{
int val=0;
{
S[0]=S[0]-1;
val=S[S[0]+1];
}
return val;
}
void new_stack(int S[])
{
int num_elementi,valore;
printf("\n Quanti elementi (max%d elementi):",MAX);
scanf("%d",&num_elementi);
while (num_elementi>MAX){
printf("\n max %d elementi: ",MAX);
scanf("%d",&num_elementi);
}
while (num_elementi) {
printf("\n Inserire un valore:");
scanf("%d",&valore);
push(S,valore);
--num_elementi;
}
}
void stampa(int S[])
{
int valore;
while (!empty_stack(S))
{
valore=pop(S);
printf("%d",valore);
stampa(S);}
push(S,valore);
}
int empty_stack(int S[])
{
return S[0]==0;
}
int full_stack(int S[])
{
return S[0]==MAX;
}
cosi dovrebbe andare.
P.S.: non ho tolto solo gli errori, ma non ho visto l'efficienza del codice(se funziona il prog)