Obliczanie sumy ciągu

0

Mam napisać program, który pobiera o użytkownika łańcuch tekstowy zawierający liczby od 1 do 9 i znaki "+", "-" np. 4-3+2+5-1. Na wyjściu program ma wyświetlić wynik tego ciągu czy w tym wypadku 7. Nie mam pojęcia jak zrobić aby program nie dodawał wartości liczb z tablicy ASCII.

#include <stdio.h>
#include <math.h>
#include<string.h>
int main (void)
{
	char tab[999];
	int i,g=0;
	printf("Podaj tekst\n");
	gets(tab);
    for(i=0;i<=strlen(tab);i++)
	{
	if(tab[i+1]==43)
	g=g+tab[i];
    }
    if(tab[i+1]==45)
    {
    g=g-tab[i];
    }
	printf("%d",g);
	
	return 0;
}
0

Coś mi się źle skopiowało przy dodawaniu powinni być

g=g+tab[i]+tab[i+2];
0

Poczekaj tydzień na forum, za kilka dni znowu ktoś wrzuci to samo pytanie.

Ja w tym roku widziałem te pytanie, chyba ze 100 razy.

0

Jeżeli masz problem z odczytaniem cyfr zrób sobie w swojej pętli drugą:

int cyfra = 0;
for(int j=0; j<=9; j++) {
    if(tab[i]==48+j)
        cyfra=j;
}
0

Kod wygląda teraz tak:

#include <stdio.h>
#include <math.h>
#include<string.h>
int main (void)
{
    char tab[999];
    int i,g=0;
    printf("Podaj tekst\n");
    gets(tab);
    for(int j=0; j<=9; j++) 
    {
    if(tab[0]==48+j)
    g=j;
    }
    for(i=0;i<=strlen(tab);i++)
    {
    int cyfra = 0, cyfra1=0;
    for(int j=0; j<=9; j++) 
    {
    if(tab[i]==48+j)
    cyfra=j;
    if(tab[i+2]==48+j)
    cyfra1=j;
    }
	if(tab[i+1]==43)
    g=g+cyfra;
    if(tab[i+1]==45)
    {
    g=g-cyfra;
    }
    }
    printf("%d",g);
 
    return 0;
}

Wybaczcie mi taką wielkość. Jednak w przypadku kiedy podaje mieszane działanie np.4+2-2+2 czyli np "-" jest w środku wychodzi zły wynik.

1 użytkowników online, w tym zalogowanych: 0, gości: 1