morgenz Temat założony przez niniejszego użytkownika |
Problem z pętlą while i getline (rozszerzona gra papier kamień nożyce) » 2015-10-30 16:38:30 Witam ,mam pewien problem z moim programem. Sprawa wygląda tak że wpisując ciąg 4(każda oddzielona spacją) muszę je potem porównać i stworzyć coś na zasadzie rozszerzonej gry kamień papier nożyce. Kod który zajmuję się porównywaniem już napisałem :D ,ale mam problem z wczytywaniem tych znaków.Dodam że nie można używać tutaj pętli for oraz []. Próbowałem zrobić coś takiego:
l-ile razy będziemy wpisywać te 4 litery
while(l>0) { getline(cin,b); id1=b.at(0); w1=b.at(2); id2=b.at(4); w2=b.at(6);
...//reszta kodu zajmująca się porównywaniem wyborów } Niestety przy uruchomieniu programu wyskakuje mi taki błąd: terminate called after throwing an instance of std out of range what basic string at __n (which is 0)>=this->size() (which is 0)
Niestety nie bardzo rozumiem dlaczego tak się dzieje :( , byłbym bardzo wdzięczny o wytłumaczenie mi mojego błędu albo o jakiś pomysł jak można rozwiązać ten problem w inny sposób.
|
|
michal11 |
» 2015-10-30 16:51:59 Wpisujesz za krótkiego stringa. |
|
morgenz Temat założony przez niniejszego użytkownika |
» 2015-10-30 16:55:06 niezależnie czy wpisze 10 liter czy 1 problem nadal jest taki sam :/
Zapomniałem chyba o najważniejszym ,błąd występuje po wpisaniu liczby powtórzeń pętli, do wspisania stringa nie dochodzi. Kiedy usunę ten fragment który napisałem powyżej program działa bez problemów. |
|
michal11 |
» 2015-10-30 17:28:03 Wstaw cały kod, bez niego ciężko coś powiedzieć. |
|
morgenz Temat założony przez niniejszego użytkownika |
» 2015-10-30 17:38:52 cały kod ma około 524 wersy więc to chyba bez sensu :P, wiem że ten błąd wyskakuje kiedy umieszczę getline(cin,b) w pętli while, wcześniej zamiast tego te 4 litery wprowadzałem oddzielnie i wszystko działało ,ale jest to niezgodne z zadaniem.
wklejam początek kodu
#include<iostream> using namespace std; int main() {
double l,lga=0,lgb=0,lgc=0,wa=0,wb=0,wc=0,pa=0,pb=0,pc=0,ra=0,rb=0,rc=0; cout<<"podaj liczbe rozgywek"<<endl; cin>>l; string b; char id1,id2,w1,w2; string b;
while(l>0) { getline(cin,b); id1=b.at(0); w1=b.at(2); id2=b.at(4); w2=b.at(6);
|
|
carlosmay |
» 2015-10-30 17:46:09 Przed getline() wpisz cin.get(); PS. W sumie to przed pętlą lub po wpisaniu liczby prób. |
|
morgenz Temat założony przez niniejszego użytkownika |
» 2015-10-30 17:56:42 O kurde działa :D, dzięki wielkie ludzie !!! |
|
« 1 » |