Problem z warunkiem pętli, który ma kończyć wczytywanie danych na '@'
Ostatnio zmodyfikowano 2019-11-10 15:50
Vatnax Temat założony przez niniejszego użytkownika |
Problem z warunkiem pętli, który ma kończyć wczytywanie danych na '@' » 2019-11-10 12:24:14 Witam, otóż mam taki kod:
#include <iostream> #include <cctype> using namespace std;
int main() { string x; cout<<"Pisz cos: (znak @ konczy wpisywanie danych)"<<endl; getline (cin,x); for (int i = 0 ; x!='@'; i++) { if (islower(x)) x= toupper (x); else if (isupper(x)) x = tolower (x); else if (isdigit(x)) x = 0; else x=' '; }
cout<<"Przekonwertowany zapis: "; cout<<x;
return 0; }
Niestety, nie działa on prawidłowo, bo kończy się po kliknięciu Enter, a w warunku pętli jest napisane, że ma się kończyć dopiero, gdy napotka znak '@'. Nie wiem, co jest tutaj źle napisane, byłbym wdzięczny za pomoc. |
|
nanoant20 |
» 2019-11-10 15:47:31 mozna by skorzystać z pętli nieskończonej, np. tak for( int i = 0;; i++ ) { if( x == "@" ) { cout << "wpisales @ - koniec programu" << endl; break; }
ale i tak dalej nie zadziała mozna by i tak #include <locale> #include <string>
locale loc; string str; char c;
cout << "Pisz cos: (znak @ konczy wpisywanie danych)" << endl;
for( int i = 0;; i++ ) { getline( cin, str ); c = str[ i ]; if( str == "@" ) { cout << "wpisales @ - koniec programu" << endl; break; } if( islower( c, loc ) ) c = toupper( c, loc ); cout << c; } |
|
pekfos |
» 2019-11-10 15:50:47 getline( cin, str, '@' );
|
|
« 1 » |