Witam szanowne grono programistów.
Chciałbym prosić Was o pomoc, mam za zadanie odczytać z tablicy charów wyłuskać równanie oraz zwrócić jego wynik, liczby w tej tablicy są tylko typu int, a działania to +,-, dodatkowo wartości int mogą być różnej długości(Nie tylko jedno cyfrowe, ale i kilku)
Z góry dzięki za każdą podpowiedź
Pozdrawiam
Mysza
Odwrotna notacja polska.
Podziel całego stringa na trzy, a potem skorzystaj z funkcji atol() lub atoi() aby zmienić stringa na liczbę, a w zależności od znaku wykonasz na nich działanie.
Ewentualnie, możesz wykonać działanie pisemnie, ale nad funkcjami będziesz wtedy musiał pomyśleć sam, tutaj ewentualnie pomożemy.
strtol będzie lepsze w użyciu bo zwraca pozycję, gdzie się skończyła liczba (łatwiej parsować).
Dzięki za odpowiedzi.
Podszedłem do tego jak do jeża. Czyli podaję liczbę doklejam do niej wartość k, następnie wczytuję znak doklejam do niego k, i z ostatnią wartością robię tak samo.
Moje pytanie teraz brzmi w jaki sposób mogę z tych wartości przed k zrobić inta?
Witam zapisuje to do tablicy niestety nie wypisuje mi pierwszej liczby w czym moe by problem?
#include<stdlib.h>
#include<stdio.h>
main(){
int a, b;
char znak;
char wyslij[80];
printf("Podaj rownanie A: "); scanf("%d", &a);
while(getchar()!='\n') continue;
snprintf(wyslij, 80, "%d", a);
printf("Podaj znak: "); scanf("%s", &znak);
snprintf(wyslij + strlen(wyslij), 80 - strlen(wyslij), "%c", znak);
printf("Podaj rownanie B: "); scanf("%d", &b);
snprintf(wyslij + strlen(wyslij), 80 - strlen(wyslij), "%d", b);
printf("rownanie: %s ",wyslij);
}
Co ty wyprawiasz? Do jednego znaku pakujesz cały napis. Tak szczęśliwie się składa, że w okolicy masz tablicę. Kompiluj z opcją -Wall by ustrzec się głupich błędów.
#include<stdlib.h>
#include<stdio.h>
int main() {
char bufor[256];
printf("Podaj rownanie: ");
fgets(bufor, sizeof(bufor), stdin); // czyta całą linię
// tu masz już wczytane dane teraz to rozłóż na części używając strtol albo atoi.
....
}