Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

[C++/Problem] Podział stringa przy operacjach na dużych liczbach.

Ostatnio zmodyfikowano 2016-05-29 16:32
Autor Wiadomość
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ę.
P-148671
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ę?
P-148672
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ć.
P-148673
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.
P-148674
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ć?
P-148676
carlosmay
» 2016-05-29 14:02:33
getline( cin, s, '-' );
 wczytuje dane do zmiennej 's' z bufora strumienia do znaku '-'.
P-148678
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:
C/C++
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'.
P-148679
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?
P-148682
« 1 » 2 3
  Strona 1 z 3 Następna strona