Wpisanie stringa do tablicy i wypisanie go

0

Cześ mam problem, treść zadania: Napisz prosty program, który wczyta imię, nazwisko i wiek dwóch osób.
W programie do wczytywania tekstu użyj std::cin.

W kodzie niżej jest podany main od zadania, trzeba tylko napisać te funkcje.
Mam 2 errory cannot convert 'std::string {aka std::basic_string<char>}' to 'std::string* {aka std::basic_string<char>}' for argument '1' to 'std::string wczytajOsobe(std::string, std::string*, std::string*)'|

#include <iostream>
#include <limits>
#include <string>

using namespace std;

void wczytajOsobe( string imie[], string nazwisko[], string wiek[])
{
    for( int i = 0; i < 2; i++ )
        {
         cout << "Podaj imie: "; cin >> imie[i]; cout << "Podaj nazwisko: "; cin >> nazwisko[i]; cout << "Podaj wiek: "; cin >> wiek[i];
         cout << endl << endl;
         }
}
void wypiszOsobe( string imie[], string nazwisko[], string wiek[]){
    for( int i = 0; i < 2; i++ )
         {
         cout << "Dane " << i << "osoby: " << endl;
         cout << imie[i] << endl << nazwisko[i] << endl << wiek[i] << endl << 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;

}

1

W przykładzie masz wszystko (tylko bez sensu). Pokaż samo zadanie.

0

Tak jak napisałem, to całe zadanie: Napisz prosty program, który wczyta imię, nazwisko i wiek dwóch osób.
W programie do wczytywania tekstu użyj std::cin.

Dodali do tego że main ma wyglądać w ten sposób :

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

No i teraz wszystko jasne. Co przekazywane jest z funkcji main()? Skoro wyznacza ona API, to musisz w swoich funkcjach przyjmować odpowiednie typy.

0

Racja, w wiek dałem string zamiast int jako argument gdzie zmienna w main jest int. Zmieniłem to lecz nadal ten sam error

0

Przeczytałem, jeszcze nie miałem wskaźników więc nimi się nie zajme na razie. Referencję znam, zmieniłem więc:

void wczytajOsobe( string& imie[], string& nazwisko[], int& wiek[])
{
    for( int i = 0; i < 2; i++ )
        {
         cout << "Podaj imie: "; cin >> imie[i]; cout << "Podaj nazwisko: "; cin >> nazwisko[i]; cout << "Podaj wiek: "; cin >> wiek[i];
         cout << endl << endl;
         }
}

ale nadal jest (https://i.imgur.com/FmskCuM.png/)

1

Jeszcze raz: co jest przekazywane z main? Opisz słownie. Np. tutaj:

         wczytajOsobe( imie[ i ], nazwisko[ i ], wiek[ i ] );
0

Tablica typu string o nazwie imie, tablica typu string o nazwie nazwisko i tablica typu int o nazwie wiek. Usunąłem klamry w wywołaniu funkcji. Nie no już się pogmatwałem, wcześniej jak wywoływałem funkcje gdzie argumentem była tablica np o rozmiarze 10 to wyglądało to tak: nazwa_f(nazwa_tablicy).
Potem w tej oddzielnej funkcji kolejne pola tablicy wypełniałem pętlą for. Więc zmylili tutaj i podali złe ciało maina? Mimo wszystko zrobiłem tak jak wcześniej


         wczytajOsobe( imie, nazwisko, wiek );
         wypiszOsobe( imie, nazwisko, wiek );

Ale nadal nie działa.

1

Dlaczego modyfikujesz maina jak zadanie właśnie tego zabrania? Poszukaj pierw błędu u siebie, a nie zakładaj że zrobił go ktoś bardziej doświadczony.

1
Dam Dam napisał(a):

Tablica typu string o nazwie imie, tablica typu string o nazwie nazwisko i tablica typu int o nazwie wiek.

Nie tablica a element tablicy.

0
tajny_agent napisał(a):
Dam Dam napisał(a):

Tablica typu string o nazwie imie, tablica typu string o nazwie nazwisko i tablica typu int o nazwie wiek.

Nie tablica a element tablicy.

Racja, element tablicy o nazwie imie, nazwisko i wiek typu string, string i integer. Mimo wszystko nadal do tego nie doszedłem.

2

Te funkcje mogą wyglądać na przykład tak:

void wczytajOsobe(std::string &imie,std::string &nazwisko,int &wiek){
// kod
}

void wypiszOsobe(const std::string imie,const std::string nazwisko,int wiek){
//kod
}

Powinieneś przekazywać argumenty przez referencję (& - przed nazwą).
Poczytaj o przekazywaniu przez referencję, tak jak Tobie radzili.

0

Przeczytałem, tak też zrobiłem, tylko wtedy jak w pętli for mam np cin>imie[i] to wyskakuje

error: invalid types 'int[int]' for array subscript|
2

No to teraz zastanów się po co w tej funkcji robisz pętlę.

0

Ok, już wszystko rozumiem, dziękuję bardzo :)

1 użytkowników online, w tym zalogowanych: 0, gości: 1