View Full Version : [C] Notazione Polacca Semplice Esercizio
Qualcuno mi aiuta a capire dove sbaglio in questo esercizio sulla notazione polacca?
#include <stdio.h>
#include <stdlib.h>
#include "funzioni_pile.h"
int Notazione_Polacca(char s[])
{
pilaPtr P=NULL;
int i=0;
char c;
int op1=0;
int op2=0;
int risultato=0;
while(c=s[i])
{
i=i+1;
if(c!='+' && c!='-')
{
if(c!='*' && c!='/')
{
P=Push(P,c-'0');
}
}else
{
op1=Pop(P);
op2=Pop(P);
switch(c)
{
case'+':P=Push(P,op1+op2);break;
case'-':P=Push(P,op1-op2);break;
case'/':P=Push(P,op1/op2);break;
case'*':P=Push(P,op1*op2);break;
}}}
risultato=Pop(P);
return risultato;}
int main(void){
pilaPtr P=NULL;
char s[10]={'2','1','5','1','-','*','+','2','-'};
printf("%d\n", Notazione_Polacca(s));
system("PAUSE");}
[OT] ahiahiahi, pessima formattazione, cazziatone in arrivo... :asd:
pessima formattazione?????????????????
ma se ho perso 10 minuti solo per indentare perchè la mia solita indentazione non era buona...
ma come c... si indenta?
wizard1993
03-04-2008, 17:16
sicuramente con la clausola while che invece di confrontare assegna bene non deve funzionare.
le indentature si fatto con il tasto tab
pessima formattazione?????????????????
ma se ho perso 10 minuti solo per indentare perchè la mia solita indentazione non era buona...
ma come c... si indenta? tanto per cominciare ogni parentesi graffa chiusa va messa allo stesso livello di indentazione della corrispondente aperta:
{
...
{
...
{
...
}
...
}
...
}
questo rende molto più chiaro l'inizio e la fine di ciascuno scope, nonché tutto ciò che esso contiene. altri errori che hai commesso nella formattazione per ora non so dirteli perché in quel codice io di scope non ne capisco neanche uno :p
Qualcuno mi aiuta a capire dove sbaglio in questo esercizio sulla notazione polacca?
Sbagli a usare la notazione polacca, sbagli la formattazione e sbagli a usare il C.
con l'aiuto del formattatore automatico di Visual C++ 2008 ho ottenuto questo, non ancora perfetto ma già mille volte più leggibile:
#include <stdio.h>
#include <stdlib.h>
#include "funzioni_pile.h"
int Notazione_Polacca(char s[])
{
pilaPtr P=NULL;
int i=0;
char c;
int op1=0;
int op2=0;
int risultato=0;
while(c=s[i])
{
i=i+1;
if(c!='+' && c!='-')
{
if(c!='*' && c!='/')
{
P=Push(P,c-'0');
}
}
else
{
op1=Pop(P);
op2=Pop(P);
switch(c)
{
case'+':
P=Push(P,op1+op2);
break;
case'-':
P=Push(P,op1-op2);
break;
case'/':
P=Push(P,op1/op2);
break;
case'*':
P=Push(P,op1*op2);
break;
}
}
}
risultato=Pop(P);
return risultato;
}
int main(void)
{
pilaPtr P=NULL;
char s[10]={'2','1','5','1','-','*','+','2','-'};
printf("%d\n", Notazione_Polacca(s));
system("PAUSE");
}
Sbagli a usare la notazione polacca, sbagli la formattazione e sbagli a usare il C. eddai su, se gli hanno detto di fare quell'esercizio mica può dare retta a te o peggio ancora a Cesare che gli dice di rifarlo in Python perché così diventerà un buon programmatore molto più velocemente :asd:
eddai su, se gli hanno detto di fare quell'esercizio mica può dare retta a te o peggio ancora a Cesare che gli dice di rifarlo in Python perché così diventerà un buon programmatore molto più velocemente :asd:
Sbaglia a frequentare il corso dove gli hanno dato quell'esercizio allora :D
Sbaglia a frequentare il corso dove gli hanno dato quell'esercizio allora :D :rotfl:
perchè queste cose non le dicevi ai tuoi professori quando facevi l'università e facevi esami di C (presumo)....:D ?
Gli dicevo di molto peggio :D
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.