Wpisanie stringa do tablicy i wypisanie go

Odpowiedz Nowy wątek
2019-11-27 17:54

Rejestracja: 3 miesiące temu

Ostatnio: 2 miesiące temu

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:error: cannot convert 'std::cxx11::string {aka std::cxx11::basic_string<char>}' to 'std::cxx11::string* {aka std::cxx11::basic_string<char>}' for argument '1' to 'std::cxx11::string wczytajOsobe(std::cxx11::string, std::cxx11::string*, std::cxx11::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;

}
edytowany 1x, ostatnio: Dam Dam, 2019-11-27 17:55

Pozostało 580 znaków

kq
2019-11-27 17:55
kq
Moderator C/C++

Rejestracja: 6 lat temu

Ostatnio: 8 godzin temu

Lokalizacja: Szczecin

1

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


Pozostało 580 znaków

2019-11-27 17:56

Rejestracja: 3 miesiące temu

Ostatnio: 2 miesiące temu

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;
}
edytowany 2x, ostatnio: Dam Dam, 2019-11-27 17:57

Pozostało 580 znaków

kq
2019-11-27 17:57
kq
Moderator C/C++

Rejestracja: 6 lat temu

Ostatnio: 8 godzin temu

Lokalizacja: Szczecin

1

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


Pozostało 580 znaków

2019-11-27 18:00

Rejestracja: 3 miesiące temu

Ostatnio: 2 miesiące temu

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

Pozostało 580 znaków

kq
2019-11-27 18:01
kq
Moderator C/C++

Rejestracja: 6 lat temu

Ostatnio: 8 godzin temu

Lokalizacja: Szczecin

2019-11-27 18:06

Rejestracja: 3 miesiące temu

Ostatnio: 2 miesiące temu

0

Przeczytałem, jeszcze nie miałem wskaźników więc nimi się nie zajme narazie. 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/)

Pozostało 580 znaków

kq
2019-11-27 18:08
kq
Moderator C/C++

Rejestracja: 6 lat temu

Ostatnio: 8 godzin temu

Lokalizacja: Szczecin

1

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

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

Pozostało 580 znaków

2019-11-27 18:12

Rejestracja: 3 miesiące temu

Ostatnio: 2 miesiące temu

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.

edytowany 2x, ostatnio: Dam Dam, 2019-11-27 18:22

Pozostało 580 znaków

kq
2019-11-27 18:26
kq
Moderator C/C++

Rejestracja: 6 lat temu

Ostatnio: 8 godzin temu

Lokalizacja: Szczecin

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.


Pozostało 580 znaków

2019-11-27 19:12

Rejestracja: 6 lat temu

Ostatnio: 3 dni temu

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.


Wole wizerunek z nożem w zębach, przejść po trupie
Niż zgrywać ćwierćinteligenta z piórkiem w d.

Pozostało 580 znaków

Odpowiedz

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