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 |