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 »  |