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

Wczytywanie-tekstu-standardowy-strumien-wejscia lekcja 26 problem z funkcjami

Ostatnio zmodyfikowano 2014-07-28 15:10
Autor Wiadomość
reshi
Temat założony przez niniejszego użytkownika
Wczytywanie-tekstu-standardowy-strumien-wejscia lekcja 26 problem z funkcjami
» 2012-10-10 17:51:09
Witam mam problem z funkcjami jestem na lekcji 26 i występuje ten problem ze mam przekazać string do funkcji (zadanie domowe) jednak to nie działa ponieważ nie wiem jak to zrobić myślałem żeby to zrobić żeby w ten sposób
void wczytajosobe( std::string imie1[], std::string naziwsko1[], std::string wiek1[] )
ale to nie działa gdy tamto std zniknie nadal to nie działa. Może mi ktoś powiedzieć jak przekazywać te klasy stringi do funkcji ? Wszystko dogłębnie czytałem nawet parę razy ten dział ale nie znalazłem odpowiedzi jak przekazać string do funkcji.
P-66563
SeaMonster131
» 2012-10-10 18:05:43
Usuń nawiasy kwadratowe. Nie czytałem zadania, lecz domyślam się, iż będziesz musiał tutaj użyć referencji.
P-66567
reshi
Temat założony przez niniejszego użytkownika
» 2012-10-10 20:08:05
Ale to jest tablica więc z tego co wiem nawiasy muszą być
P-66584
SeaMonster131
» 2012-10-10 20:10:57
Nie przekazujesz do funkcji tablicy stringów, tylko jedną zmienną. Dodatkowo ostatnim argumentem w funkcji nie jest string, ale int.
P-66586
reshi
Temat założony przez niniejszego użytkownika
» 2012-10-11 15:35:30
tylko jedną zmienną. Możesz mi to lepiej wytłumaczyć ? bo nie rozumiem jak jedną zmienną bo nie kapuje

Ok mam prawie dobrze tylko teraz wyskakuje taki błąd
error: cannot convert 'std::string' to 'std::string*' for argument '1' to 'void wczytajOsobe(std::string*, std::string*, int*)'|
error: cannot convert 'std::string' to 'std::string*' for argument '1' to 'void wypiszOsobe(std::string*, std::string*, int*)'|

Aktualny kod mam taki co prawda nie skończone bo męczę się nadal z tym problemem
C/C++
#include <iostream>
#include <cstdio>
#include <limits>
void wczytajOsobe( std::string imie1, std::string naziwsko1, int wiek1[] )
{
}
void wypiszOsobe( std::string imie1, std::string naziwsko1, int wiek1[] )
{
   
}
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 ] );
        std::cin.clear();
        std::cin.sync();
    }
    for( int i = 0; i < 2; i++ )
    {
        wypiszOsobe( imie[ i ], nazwisko[ i ], wiek[ i ] );
        std::cin.clear();
        std::cin.sync();
    }
    getchar();
    return 0;
}
Pomóżcie bo ja nie rozumiem tego
P-66629
DejaVu
» 2012-10-11 16:34:08
Przeczytaj jeszcze raz wszystkie lekcje, poczynając od przekazywania zmiennych do funkcji przez referencję.

/edit:
Choć ta na dobrą sprawę powinieneś zacząć od http://cpp0x.pl/kursy/Kurs-C++/Poziom-2 /Tablice-jednowymiarowe/292
P-66633
SeaMonster131
» 2012-10-11 16:36:52
Usuń nawiasy kwadratowe :P

C/C++
void wczytajOsobe( std::string imie1, std::string naziwsko1, int wiek1 )
{
}
void wypiszOsobe( std::string imie1, std::string naziwsko1, int wiek1 )
{
}

Jeżeli argumentem funkcji jest
typ zmienna[]
, to musisz przesłać tejże funkcji tablicę tego samego typu, np:
C/C++
void fun( int var[] )
{
    std::cout << var[ 0 ];
}

..
int tab[ 3 ] = { 1, 2, 3 };
fun( tab );

Więc jak widzisz, w ten sposób przesyłasz do funkcji całą tablicę. Natomiast każdy element tablicy (czyli w tym wypadku tab[0], tab[1], tab[2]) to tak jakby pojedyncza zmienna. Więc kod wyglądałby w ten sposób:
C/C++
void fun( int var )
{
    std::cout << var;
}

..
int tab[ 3 ] = { 1, 2, 3 };
fun( tab[ 0 ] );

Więc skoro w treści zadania, w podanym kodzie, jest ten drugi przypadek (
fun( tab[ 0 ] )
), więc do funkcji przesyłasz zmienną, a nie tablicą.


Nie jestem dobry w tłumaczeniu różnych rzeczy, ale mam nadzieję, że choć trochę Ci to przybliżyłem?
P-66634
reshi
Temat założony przez niniejszego użytkownika
» 2012-10-11 16:41:42
Trochę przybliżyłeś poszukałem na forum znalazłem kod innego użytkownika z tym że on się o co innego pytał a kod miał dobry pomyślałem dobrze i zrozumiałem
gdy przekazujemy tablice i podajemy konkretnie którą to w funkcji nie możemy jej podawać jeszcze raz ale gdy mamy tablicę nie podaną to w funkcji musimy ją podać yyy chyba dobrze zrozumiałem co nie ?
P-66636
« 1 » 2
  Strona 1 z 2 Następna strona