anna61 Temat założony przez niniejszego użytkownika |
[C++/Problem] Podział stringa przy operacjach na dużych liczbach. » 2016-05-29 13:09:09 Witam. Muszę napisać program, który wykonuje obliczenia na dużych liczbach. Ma to wyglądać w ten sposób: wejście: 8000000000+888888888 wyjście: 8888888888 Pytanie jest następujące: W jaki sposób rozdzielić stringa, żeby wyłapywał znak dodawania i dzielił ciąg na dwie liczby? Chcę zrobić to w ten sposób, że jeżeli program wykryje znak np. dodawania, to będzie korzystał z odpowiedniej funkcji i wykona odpowiednią operację na liczba1 i liczba2. Jestem początkująca, więc proszę o wskazówki w jaki sposób podzielić stringa i wyłapać znak, a także byłabym wdzięczna za inne pomocne rady. Z góry dziękuję. |
|
hit |
» 2016-05-29 13:24:45 Do tego możesz użyć funkcji http://www.cplusplus.com/reference/string/string/find/. Aczkolwiek nie uważam takiej metody obliczeń za dobre rozwiązanie ; ) Nie lepiej wczytywać osobno dwie liczby i wybierać operację? |
|
anna61 Temat założony przez niniejszego użytkownika |
» 2016-05-29 13:35:12 Niestety nie mogę zrobić tego osobno, bo taką mam treść zadania. Użytkownik wpisuję działanie w całości, czyli 2 liczby ze znakiem pomiędzy i program musi to policzyć. |
|
hit |
» 2016-05-29 13:41:33 Możesz także użyć getline, zakładając, że liczby i znak na wejściu będą oddzielone spacją (123 + 456). Wtedy od razu będziesz mogła przypisać odpowiednie wartości do zmiennych.
Edit:
Albo po prostu zrobić pętle, która leci po tym stringu i przepisuje wartości dopóki trafi znak inny niż cyfra, przepisze ten znak osobno i reszta stringa będzie drugą liczbą. Ale wtedy chyba lepszym rozwiązaniem będzie użycie tej funkcji find do wyszukania znaku działania. Z tym, że wtedy musiałabyś używać tej funkcji dla każdego działania z osobna. |
|
anna61 Temat założony przez niniejszego użytkownika |
» 2016-05-29 13:51:05 Sprawdziłam jak korzystać z getline i znalazłam takie rozwiązanie: http://programdnia.blogspot.com/2013/06/podzia-stringa-getline.html Tylko nie do końca rozumiem jakby to zrobić na dwie liczby. Bo w tym rozwiązaniu jest string s i do tego są przypisywane kolejne wartości liczbowe daty. Mogę zrobić string liczba1; string liczba2; i do funkcji getline dopisać (cin, liczba1, '-', liczba2)? Czy inaczej to ma wyglądać? |
|
carlosmay |
» 2016-05-29 14:02:33 getline( cin, s, '-' ); wczytuje dane do zmiennej 's' z bufora strumienia do znaku '-'. |
|
hit |
» 2016-05-29 14:03:42 Tam parametrem w getline jest '-', a ja Ci zasugerowałem, żeby była to spacja. W Twoim przypadku byłoby coś mniej więcej takiego: string s = "123 + 456"; while( getline( cin, s, ' ' ) ) { cout << s << endl; }
Tyle, że to co będzie wypisane jako 's' wewnątrz pętli (cout << s << endl;) musiałabyś sobie przypisać do nowych zmiennych. Wtedy po podziale miałabyś zmienne '123', '+', '456'. |
|
anna61 Temat założony przez niniejszego użytkownika |
» 2016-05-29 14:21:15 Chyba rozumiem. Czyli wtedy wewnątrz pętli mogę wpisać string liczba1 = s; int znak = s+1; string liczba2 = s+2; I wtedy będzie przypisywał kolejne fragmenty to poszczególnych zmiennych? |
|
« 1 » 2 3 |