Błąd w zadaniu domowym w rozdziale 26
Ostatnio zmodyfikowano 2015-02-20 16:28
szneqz Temat założony przez niniejszego użytkownika |
Błąd w zadaniu domowym w rozdziale 26 » 2015-02-19 20:10:53 Witam w zadaniu domowym twórca nakazuje nam użyć takiej funkcji głównej: 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; }
Miałem problem z tym zadaniem przez jakiś czas, ale okazało się, że nie można od tak sobie definiować "i" w tablicy, która zostaje przenoszona do funkcji wczytajOsobe() i wypiszOsobe(), dlatego należałoby zmienić trochę kod: int main() { std::string imie[ 2 ]; std::string nazwisko[ 2 ]; int wiek[ 2 ]; for( int i = 0; i < 2; i++ ) wczytajOsobe( imie, nazwisko, wiek, i ); for( int i = 0; i < 2; i++ ) wypiszOsobe( imie, nazwisko, wiek, i ); return 0; }
No chyba, że źle zinterpretowałem zadanie i kod nie zgrywał mi się z funkcją główną. Pozdrawiam. |
|
DejaVu |
» 2015-02-19 20:27:57 No to nie zrozumiałeś rozdziału i źle zrobiłeś zadanie. |
|
GGG205 |
» 2015-02-19 23:10:21 Pokaż funkcję |
|
szneqz Temat założony przez niniejszego użytkownika |
» 2015-02-20 16:28:31 Tak uznałem, że należy zrobić zadanie, a na zrobienie tego tak jak nakazuje kurs nie mam pomysłu, chociaż próbowałem deklarować nawet wewnątrz tablicy. #include <iostream> #include <string>
void wczytajOsobe( std::string imie[], std::string nazwisko[], int wiek[], int i ) { bool dobrze = 1; std::cout << "Wprowadz imie " << i + 1 << " osoby "; std::cin >> imie[ i ]; std::cout << "Wprowadz nazwisko " << i + 1 << " osoby "; std::cin >> nazwisko[ i ]; do { std::cout << "Wprowadz wiek " << i + 1 << " osoby "; std::cin >> wiek[ i ]; dobrze = std::cin.good(); std::cin.clear(); std::cin.sync(); if( dobrze == 0 || wiek[ i ] <= 0 ) { std::cout << "Nieprawidlowy wiek" << std::endl; } } while( dobrze == 0 || wiek[ i ] <= 0 ); }
void wypiszOsobe( std::string imie[], std::string nazwisko[], int wiek[], int i ) { std::cout << "Imie " << i + 1 << " osoby to " << imie[ i ] << std::endl; std::cout << "Nazwisko " << i + 1 << " osoby to " << nazwisko[ i ] << std::endl; std::cout << "Wiek " << i + 1 << " osoby to " << 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, nazwisko, wiek, i ); for( int i = 0; i < 2; i++ ) wypiszOsobe( imie, nazwisko, wiek, i ); return 0; }
@edit: Źle popatrzyłem na zadanie i udało mi się wywnioskowac, że nie trzeba tylko i wyłącznie przesyłać tablic do tablic, a można to zrobić tak: #include <iostream> #include <string>
void wczytajOsobe( std::string & imie, std::string & nazwisko, int & wiek ) { bool dobrze = 1; std::cout << "Wprowadz imie "; std::cin >> imie; std::cout << "Wprowadz nazwisko "; std::cin >> nazwisko; do { std::cout << "Wprowadz wiek "; std::cin >> wiek; dobrze = std::cin.good(); std::cin.clear(); std::cin.sync(); if( dobrze == 0 || wiek <= 0 ) { std::cout << "Nieprawidlowy wiek" << std::endl; } } while( dobrze == 0 || wiek <= 0 ); }
void wypiszOsobe( std::string & imie, std::string & nazwisko, int & wiek ) { std::cout << "Imie osoby to " << imie << std::endl; std::cout << "Nazwisko osoby to " << nazwisko << std::endl; std::cout << "Wiek osoby to " << 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; }
|
|
« 1 » |