Wywala mi bład że
Kod: Zaznacz cały
returnValue = get_value(returnValue, actions[i], input[j]);
Ja nie wiem gdzie tkwi ten błąd co jest nie tak zadeklarowane-> po części ze względu na uboższą wiedzę odnośnie C niż mój kolega posiada, w sumie on sam nie wie dlaczego to nie działa tak jak powinno.
Nie wiem co to da ale poniżej umieszczam cały kod programu. I z góry bardzo dziękuje za pomoc w tym
A jeśli jest możliwość tego uproszczenia to bardzo ale to bardzo prosiłbym o sugestie -> toż to jest mały sajgon tam ?
Kod: Zaznacz cały
#include<stdio.h>
#include<string.h>
#include<math.h>
#include<ctype.h>
# define MAX 4
// do sprawdzania czy akcja jest ok
int is_valid_action( char action )
{
   if ( action == '+' || action == '-' || action == '*' || action == '/' || action == '=' )
   {
       return 1;
   }
   return 0;
}
// tutaj liczymy całość
// jedziemy po tablicy input i wg odpowiedniego klucza tablicy actions wykonujemy dane matematyczne działanie
int do_calc( int input[], char actions[] )
{
   int i, j, returnValue, firstCall = 0;
   for ( i = 0; i < sizeof(input); i++)
   {
       // potrzebne zeby wziasc I element z tablicy input, potem returnValue przechowuje juz wykonane działania
       // tzn mamy działanie 10+60*2 czyli za pierwszym razem returnValue = 10; przy i=1; returnValue = 60;
       if ( firstCall  == 0 )
       {
               returnValue = input[i];
           firstCall   = 1;
       }
       // tutaj wykonujemy działania, czyli returnValue przechowuje ostatnią wartość działania lub za I przebiegiem For, I element tablicy,
       // actions[i] - jaka akcje wykonać
       // input[j] - nastpna wartość w talibcy input czyli np. to nasze 60 w I przebiegu funkcji FOR ;
       returnValue = get_value(returnValue, actions[i], input[j]);
       j++;
   }
   return returnValue;
}
// tutaj dokładnie wykonujesz działania, chyba nie trzegba szczegoółowo omawiac
int get_value( int current, char action, int nextValue )
{
   switch ( action )
   {
       case '+':
           return current + nextValue;
       break;
       case '-':
           return current - nextValue;
       break;
       case '*':
           return current * nextValue;
       break;
       case '/':
           return current / nextValue;
       break;
       default:
           printf("Error: brak akcji \n");
           return 0;
       break;
   }
}
int main(void)
{
       char
       actions[MAX], action;
       int
       input[MAX], inputIndex = 0, actionIndex, i;
   printf("Welcome to SimpleCalc v 0.1.0.0 \n");
   printf("Podaj pierwszą liczbę \n");
   scanf("%s", &action);
   while( action != '=' )
   {
       printf("Wybierz działanie ( '+', '-', '*', '/' ) \n");
       scanf("%s", &action);
       if (isxdigit(action)) // sprawdzam czy dodać wartość do liczenia
       {
           input[inputIndex] = atoi(action);
           inputIndex++;
           if (inputIndex > (actionIndex + 1) ) // ten potworek jest żeby wsio sie zgadzało miedzy np. input[] i actions[]
           {
               actionIndex = actionIndex + 1;
           }
       }
       else // czy dodać wpisaną komende jako akcje
       {
           if (is_valid_action(action))
           {
               actions[actionIndex] = action;
               actionIndex++;
               if (actionIndex > (inputIndex + 1)) // ten potworek jest żeby wsio sie zgadzało miedzy np. input[] i actions[]
               {
                       inputIndex = inputIndex + 1;
               }
           }
           else
           {
               printf("KERNEL PANIC: \n Niedozwolona akcja! \n");
               return 0;
           }
       }
     
   }
   // sprawdzam czy mam dane, jak nie to koniec prog.
   if (sizeof(input) == 0)
   {
       printf("Error: \n brak danych! \n");
       return 0;
   }
   // wywal na screen wprowadzone dane i jakie operacje pokolei zrobilismy
   for ( i = 0; i < sizeof(input); i++)
   {
       printf("%d \n", input[i]);
       printf("%s \n", actions[i]);
   }
   // podsumowanie + rezultat do_calc czyli końcowe wyliczenia :d
   printf("------------------------ \n\t\t %d", do_calc( input, actions ) );
   // the end :P nice programist story :D
       return 0;
}