[C++] Błąd kompilacji programu function-definition-is-not allowed
Ostatnio zmodyfikowano 2017-08-27 10:41
Drocsid Temat założony przez niniejszego użytkownika |
[C++] Błąd kompilacji programu function-definition-is-not allowed » 2017-08-26 16:47:08 Witam.. przychodzę tutaj gdyż mam problem z takim o to kodem... #include <iostream> #include <string> #include <cstdio> #include <windows.h> using namespace std;
void wczytajOsobe( string & imie, string & nazwisko, int & wiek ) { do { cin.clear(); cin.sync(); cout << "Podaj imie: "; cin >> imie; if( cin.good() == true ) { break; } } while( 1 < 2 ); do { cin.clear(); cin.sync(); cout << "Podaj nazwisko: "; cin >> nazwisko; if( cin.good() == true ) { break; } } while( 1 < 2 ); do { cin.clear(); cin.sync(); cout << "Podaj wiek: "; cin >> wiek; if( cin.good() == true ) { break; } } while( 1 < 2 ); void wypiszOsobe( string imie, string nazwisko, int wiek ) { cout << "Imie: " << imie.c_str() << endl; cout << "Nazwisko: " << nazwisko.c_str() << endl; cout << "Wiek: " << wiek << endl; cout << endl; } int main() { string imie[ 2 ]; string nazwisko[ 2 ]; int wiek[ 2 ]; for( int i = 0; i < 2; i++ ) { wczytajOsobe( imie[ i ], nazwisko[ i ], wiek[ i ] ); } for( int i = 0; i < 2; i++ ) { wypiszOsobe( imie[ i ], nazwisko[ i ], wiek[ i ] ); } return 0; }
W wyniku kompilacji otrzymuję 3 błędy: function-definition-is-not-allowed... function-definition-is-not-allowed... i jakis trzeci który uważam że naprawi się sam po naprawieniu tych dwóch... Najpierw, zanim założyłem ten temat przeszukałem internet.. dowiedziałem się ,że dotyczy on tworzenia funkcji w funkcji... możliwe, że źle zrozumiałem problem bo nie widzę tego błędu w moim kodzie a kompilator raczej nie kłamie... Jeśli ma ktoś czas i ochotę zerknąć na ten kod byłbym wdzięczny. Prosiłbym o wskazanie miejsca gdzie jest błąd.. i ewentualne wytłumaczenie co tam nie gra :) |
|
mateczek |
» 2017-08-26 16:50:37 kod wstawiaj w znaczniki [cpp]tutaj kod[/cpp] A problemem jest brak klamry domykającej funkcję |
|
Drocsid Temat założony przez niniejszego użytkownika |
» 2017-08-26 16:55:49 Faktycznie.. nie zauważyłem tego a skupiłem się na środku funckji.. dzięki za wszystko :) |
|
mateczek |
» 2017-08-26 17:10:13 no i raczej nie ma sensu testować poprawności wczytania stringa. Bo zawsze będzie poprawne warunki while( 1 < 2 ); są bez sensu bo zawsze prawdziwe #include <iostream> #include <string> using namespace std;
void wczytajOsobe( string & imie, string & nazwisko, int & wiek ) { cout << "Podaj imie: "; cin >> imie; cout << "Podaj nazwisko: "; cin >> nazwisko; while( cout << "Podaj wiek: ", !( cin >> wiek ) ) { cin.clear(); cin.sync(); } }
void wypiszOsobe( string imie, string nazwisko, int wiek ) { cout << "Imie: " << imie << endl; cout << "Nazwisko: " << nazwisko << endl; cout << "Wiek: " << wiek << endl; cout << endl; } int main() { string imie[ 2 ]; string nazwisko[ 2 ]; int wiek[ 2 ]; for( int i = 0; i < 2; i++ ) { wczytajOsobe( imie[ i ], nazwisko[ i ], wiek[ i ] ); } for( int i = 0; i < 2; i++ ) { wypiszOsobe( imie[ i ], nazwisko[ i ], wiek[ i ] ); } return 0; } |
|
Drocsid Temat założony przez niniejszego użytkownika |
» 2017-08-27 10:33:38 A czy jest możliwość zabezpieczenia przed wprowadzaniem liczby w miejsce gdzie powinien występować wyraz? W sensie żeby w miejsce "Nazwisko" nie dało sie wpisać "123" |
|
karambaHZP |
» 2017-08-27 10:41:43 Litery i cyfry są znakami nie zostaną potraktowane jako błąd. Musisz samemu zapewnić sobie, aby cyfry nie pojawiały się we wprowadzonym łańcuchu. Pobierać znak po znaku i sprawdzać czy przypadkiem nie pojawiła się cyfra, lub sprawdzić łańcuch pod kątem występowania cyfr i odpowiednio zareagować. edit: #include <iostream> #include <string>
std::string GetText() { std::string text; std::getline( std::cin, text ); if( text.find_first_of( "1234567890" ) != std::string::npos ) { return std::string { }; } else { return text; } }
int main() { std::string text = GetText(); if( text.empty() ) { std::cout << "Tekst zawieral cyferki\n"; } else { std::cout << text << '\n'; } } |
|
« 1 » |