Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Błąd w zadaniu domowym w rozdziale 26

Ostatnio zmodyfikowano 2015-02-20 16:28
Autor Wiadomość
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:

C/C++
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:

C/C++
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.
P-126823
DejaVu
» 2015-02-19 20:27:57
No to nie zrozumiałeś rozdziału i źle zrobiłeś zadanie.
P-126825
GGG205
» 2015-02-19 23:10:21
Pokaż funkcję
P-126843
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.

C/C++
#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:

C/C++
#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;
}
P-126893
« 1 »
  Strona 1 z 1