StErMiNeiToR
24-09-2004, 15:41
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <iostream>
using namespace std;
int main ()
{
char es [100];
char n [16];
int numeri [64];
char op [64];
int risultato = 0;
int i,c = 0, k = 0, j=0;
gets(es);
for ( i = 0; i < strlen ( es ); i++ )
{
if ( es[i] >= '0' && es[i] <= '9' )
{
n[c] = es [i];
c++;
}
else {
if ( c )
{
n[c] = '\0';
c = 0;
numeri[k] = atoi ( n );
k++;
}
if ( es[i] == '+' || es[i] == '-' || es[i] == '*' || es[i] == '/' )
{
op[j] = es[i];
j++;
}
}
}
if ( c )
{
n[c] = '\0';
c = 0;
numeri[k] = atoi ( n );
k++;
}
c = 0;
i = 0;
for (; i < j;)
{
for(; c < k; c++ )
{
switch( op[i] )
{
case '+':
if ( c == 0 ) risultato += ( numeri[c] + numeri[++c] );
else if ( c != 0 ) risultato += numeri[c];
i++;
break;
case '-':
if ( c == 0 ) risultato += ( numeri[c] - numeri[++c] );
else if ( c != 0 ) risultato -= numeri[c];
i++;
break;
case '*':
if ( c == 0 ) risultato += ( numeri[c] * numeri[++c] );
else if ( c != 0 ) risultato *= numeri[c];
i++;
break;
case '/':
if ( c == 0 ) risultato += ( numeri[c] / numeri[++c] );
else if ( c != 0 ) risultato /= numeri[c];
i++;
break;
default: {}
}
}
}
cout<<endl<<endl<<"Il risultato dell'espressione e': "<<risultato<<endl;
system ( "pause" );
return 0;
}
adesso il mio dubbio è... come faccio a mettere i controlli per le priorita dei * e / ?
#include <stdio.h>
#include <string.h>
#include <iostream>
using namespace std;
int main ()
{
char es [100];
char n [16];
int numeri [64];
char op [64];
int risultato = 0;
int i,c = 0, k = 0, j=0;
gets(es);
for ( i = 0; i < strlen ( es ); i++ )
{
if ( es[i] >= '0' && es[i] <= '9' )
{
n[c] = es [i];
c++;
}
else {
if ( c )
{
n[c] = '\0';
c = 0;
numeri[k] = atoi ( n );
k++;
}
if ( es[i] == '+' || es[i] == '-' || es[i] == '*' || es[i] == '/' )
{
op[j] = es[i];
j++;
}
}
}
if ( c )
{
n[c] = '\0';
c = 0;
numeri[k] = atoi ( n );
k++;
}
c = 0;
i = 0;
for (; i < j;)
{
for(; c < k; c++ )
{
switch( op[i] )
{
case '+':
if ( c == 0 ) risultato += ( numeri[c] + numeri[++c] );
else if ( c != 0 ) risultato += numeri[c];
i++;
break;
case '-':
if ( c == 0 ) risultato += ( numeri[c] - numeri[++c] );
else if ( c != 0 ) risultato -= numeri[c];
i++;
break;
case '*':
if ( c == 0 ) risultato += ( numeri[c] * numeri[++c] );
else if ( c != 0 ) risultato *= numeri[c];
i++;
break;
case '/':
if ( c == 0 ) risultato += ( numeri[c] / numeri[++c] );
else if ( c != 0 ) risultato /= numeri[c];
i++;
break;
default: {}
}
}
}
cout<<endl<<endl<<"Il risultato dell'espressione e': "<<risultato<<endl;
system ( "pause" );
return 0;
}
adesso il mio dubbio è... come faccio a mettere i controlli per le priorita dei * e / ?