thorback Temat założony przez niniejszego użytkownika |
Problem - wczytywanie zmiennej typu "string" do funkcji » 2015-05-21 14:06:21 Witam ponownie. #include<iostream> #include<string>
void wczytajOsobe( std::string imie[], std::string nazwisko[], int wiek[] ) { bool bDobrze = 1; for( int i = 0; i < 2; i++ ) { std::cin >> imie[ i ]; std::cin >> nazwisko[ i ]; do { std::cin.sync(); std::cin >> wiek[ i ]; std::cin.good() = bDobrze; } while( bDobrze == 0 ); } }
void wypiszOsobe( std::string imie[], std::string nazwisko[], int wiek[] ) { for( int i = 0; i < 2; i++ ) std::cout << imie[ i ] << std::endl << nazwisko[ i ] << std::endl << wiek[ i ] << std::endl; }
int main() { std::string imie[ 2 ]; std::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; }
Jest to zadanie z kursu - problem polega na tym, że kompilator nie zgadza się na rozwiązanie sprawy poprzez wywołanie klasy w argumencie funkcji. Jak inaczej mogę to zrobić? Coś przeoczyłem, jedynie nie wiem, co. |
|
Maciek |
» 2015-05-21 15:48:47 Dlatego się nie kompiluje bo ty przekazujesz w petlach elementy tablicy a argumentami funkcji są tablice, musisz to poprawić pozatym cin::good to nie jest l-wartość, nie możesz tak przypisywać, nie miałes tez takiego błędu ?? |
|
BadBullPL |
» 2015-05-21 15:54:47 i usuń też te pętle (oby dwie) w mainie |
|
thorback Temat założony przez niniejszego użytkownika |
» 2015-05-21 19:13:11 #include<iostream> #include<string>
void wczytajOsobe( std::string imie, std::string nazwisko, int wiek ) { bool good; for( int i = 0; i < 2; i++ ) { std::cin >> imie[ i ]; std::cin >> nazwisko[ i ]; stop:; std::cin >> wiek[ i ]; good = std::cin.good(); if( good == 0 ) goto stop; } }
void wypiszOsobe( std::string imie, std::string nazwisko, int wiek ) { for( int i = 0; i < 2; i++ ) std::cout << imie[ i ] << std::endl << nazwisko[ i ] << std::endl << wiek[ i ] << std::endl; }
int main() { std::string imie[ 2 ]; std::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; }
Teraz z kolei dostaję informacje o błędzie int[int]. BadBullPL - Funkcja główna była w zadaniu podana, wiec to raczej nie jest to. |
|
Maciek |
» 2015-05-21 20:11:14 Widze tu błędy u podstaw, teraz dobrze przekazujesz argumenty, ale w funkcjach nie mozesz po nich iterować bo już nie są tablicami, reszty nie sprawdzam narazie. Czytaj to co pisze ci kompilator, choć wiem ze czasami błędy sa troche nieczytelne, ale nie w tym przypadku. |
|
thorback Temat założony przez niniejszego użytkownika |
» 2015-05-21 20:47:28 #include<iostream> #include<string>
void wczytajOsobe( std::string & imie, std::string & nazwisko, int & wiek ) { bool good; std::cin >> imie; std::cin >> nazwisko; stop:; std::cin >> wiek; if( std::cin.good() == 0 ) { std::cout << "Nie!"; std::cin.clear(); std::cin.sync(); goto stop; } }
void wypiszOsobe( std::string imie, std::string nazwisko, int wiek ) { std::cout << imie << std::endl << nazwisko << std::endl << wiek << std::endl; }
int main() { std::string imie[ 2 ]; std::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; }
@Maciek Błędy u podstaw są uzasadnione, jestem u podstaw. Tym niemniej dzięki za wskazówki, kod powyżej działa. Pozdrawiam. |
|
« 1 » |