Czytanie string i int z jednej linii
Ostatnio zmodyfikowano 2016-02-23 16:22
| mrci Temat założony przez niniejszego użytkownika | Czytanie string i int z jednej linii » 2016-02-23 16:03:13 Witam! 
 Probuje rozwiązać jedno z zadań na SPOJ'u (http://pl.spoj.com/problems/HILLS2/) i mam problem z czytaniem linii odpowiedzialnej za wywołanie komedy(PREPARE, MOVE, TURN).
 
 string nazwa;
 int wartosc;
 
 cin>>nazwa>>wartosc;
 
 if (nazwa=="MOVE")
 obiekt.move(wartosc);
 else if (name=="TURN")
 obiekt.turn(wartosc);
 else if (name=="PREPARE")
 obiekt.prepare();
 
 Powyższy kawałek kodu byłby idealny, lecz komenda PREPARE jest wywoływana bez wartości, wiec jeśli chce zakończyć linie to muszę podać PREPARE 0, co skutkuje błędną odpowiedzią.
 
 Drugi sposób:
 
 string komenda;
 string nazwa;
 int wartosc;
 
 getline(cin,komenda);
 istringstream iss(komenda);
 iss>>nazwa>>wartosc;
 
 if (name=="MOVE")
 obiekt.move(value);
 else if (name=="TURN")
 obiekt.turn(value);
 else if (name=="PREPARE")
 obiekt.prepare();
 
 Drugi sposób jaki wymyśliłem jest w 100% sprawny, lecz platforma SPOJ zwraca informacje przekroczono limit czasu :(
 Z góry dzięki za jakieś cenne wskazówki.
 | 
|  | 
| Gibas11 | » 2016-02-23 16:06:18 Wczytuj drugą wartość tylko jeżeli nazwa != prepare. cin >> nazwa;if( nazwa != "PREPARE" )
 cin >> wartosc;
 
 
 | 
|  | 
| mrci Temat założony przez niniejszego użytkownika | » 2016-02-23 16:12:05 nazwa i wartosc muszą być wczytane w jednej lini niestety :( | 
|  | 
| Gibas11 | » 2016-02-23 16:17:14 I? = cin >> nazwa;cin >> wartosc;
 
EDIT: Operator >> zwraca w tym wypadku referencję na cin i zdziwiłbym się gdyby dwa podane przeze mnie kawałki kodu zostały skompilowane w inny sposób. | 
|  | 
| mrci Temat założony przez niniejszego użytkownika | » 2016-02-23 16:22:29 Wielkie dzięki! Nie wiedziałem tego. | 
|  | 
| « 1 » |