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

Problem z pętlą while i getline (rozszerzona gra papier kamień nożyce)

Ostatnio zmodyfikowano 2015-10-30 17:56
Autor Wiadomość
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.
P-139384
michal11
» 2015-10-30 16:51:59
Wpisujesz za krótkiego stringa.
P-139385
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.
P-139386
michal11
» 2015-10-30 17:28:03
Wstaw cały kod, bez niego ciężko coś powiedzieć.
P-139390
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);





P-139391
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.
P-139392
morgenz
Temat założony przez niniejszego użytkownika
» 2015-10-30 17:56:42
O kurde działa :D, dzięki wielkie ludzie !!!
P-139393
« 1 »
  Strona 1 z 1