empty2102 Temat założony przez niniejszego użytkownika |
Rozdział 26 Wczytywanie tekstu - wysypuje błąd przy kompilacji » 2018-02-03 17:47:16 Witam, problem dotyczy tego kodu: #include<iostream> #include<string>
using namespace std;
void WczytajOsobe( string & imie, string & nazwisko, int & wiek ) { cout << "Podaj imie " << i + 1 << " osoby: " << endl; cin >> imie[ i ]; cout << "Podaj nazwisko " << i + 1 << " osoby: " << endl; cin >> nazwisko[ i ]; cout << "Podaj wiek " << i + 1 << " osoby: " << endl; cin >> wiek[ i ]; } void WypiszOsobe( string & imie, string & nazwisko, int & wiek ) { cout << "Imie " << i + 1 << " osoby: " << endl; cout << imie[ i ] << endl; cout << "Nazwisko " << i + 1 << " osoby: " << endl; cout << nazwisko[ i ] << endl; cout << "Wiek " << i + 1 << " osoby: " << endl; cout << wiek[ i ] << endl; } int main() { string imie[ 3 ]; string nazwisko[ 3 ]; int wiek[ 3 ]; for( int i = 0; i < 3; i++ ) WczytajOsobe( imie[ i ], nazwisko[ i ], wiek[ i ] ); for( int i = 0; i < 3; i++ ) WypiszOsobe( imie[ i ], nazwisko[ i ], wiek[ i ] ); return 0; }
log: ||=== Build file: "no target" in "no project" (compiler: unknown) ===| C:\Users\Intel-i5\Documents\C++ projects\wczytywanie tekstu.cpp||In function 'void WczytajOsobe(std::string&, std::string&, int&)':| C:\Users\Intel-i5\Documents\C++ projects\wczytywanie tekstu.cpp|15|error: invalid types 'int[int]' for array subscript| C:\Users\Intel-i5\Documents\C++ projects\wczytywanie tekstu.cpp||In function 'void WypiszOsobe(std::string, std::string, int)':| C:\Users\Intel-i5\Documents\C++ projects\wczytywanie tekstu.cpp|25|error: invalid types 'int[int]' for array subscript| ||=== Build failed: 2 error(s), 0 warning(s) (0 minute(s), 0 second(s)) ===|
Pierwsze pytanie - dlaczego wysypuje ten błąd? Referencja na tablice jest, gdy próbuje za pomocą argumentów przekazywać to zaczyna sypać mi jeszcze więcej błędów. Grzebałem w googlach na stronach angielskich, większość osób piszę coś o wskaźnikach których do tej pory nie znam i nie chce ich użyć bo zadanie ma zostać wykonane z aktualną wiedzą. :) Drugie pytanie - Czy gdy wywołam funkcję, zmienna i zostanie przekazana? Jeśli tak, nie rozumiem w jaki sposób ona zostanie przekazana, przecież jej nie deklarowałem w funkcji a referencja z tego co rozumiem powinna odnosić się tylko do danych tablicy? Chciałbym aby program informował o numerze wypisywanej osoby. Próbując za pomocą argumentów wysypywało iż zmienna i nie została zadeklarowana w funkcji. |
|
YooSy |
» 2018-02-03 18:25:13 W funkcjach nie ma tablicy stringów, więc używasz imie i nazwisko jak zwykłych zmiennych. Wywołując funkcje WczytajOsobe( imie[ i ], nazwisko[ i ], wiek[ i ] ); w ten sposób, przekazujesz wyłuskaną wartość z tablicy. |
|
empty2102 Temat założony przez niniejszego użytkownika |
» 2018-02-03 18:43:43 Próbuję zrozumieć to co napisałeś ale nic z tego. Chodzi Ci o deklaracje w funkcji? Musze to zrobić inaczej wysypuje ze zmienne są niezadeklarowane. Tablice stringów są bo jest referencja w funkcji do nich, gdybym dodał void WczytajOsobe(string &imie, string &nazwisko,int &wiek) klamry [] po zmiennych to funkcja odbiera to jako zwykły argument prawda? Może źle myślę, chce znaleźć rozwiązanie problemu. Czy może chodziło Ci o to w jaki sposób funkcja widzi tablice stringów z main? Co wg Ciebie znaczy wyłuskana wartość? |
|
empty2102 Temat założony przez niniejszego użytkownika |
» 2018-02-03 19:14:16 Ok rozwiązałem problem. Nie wiem czy to wina kompilatora czy coś przegapiłem. Nie rozumiem sam do końca dlaczego wysypywało mi wcześniejszy błąd, po zresetowaniu komputera zaczął mi wyskakiwać kolejny. Otóż zmienna i nie była zadeklarowana w funkcji. Zmienna i jest przesyłana do funkcji ale z tego co widzę nie można z niej w żaden sposób korzystać. Jedynie jest wykorzystana przez funkcje do inkrementacji. Kod po wyeliminowaniu błędów : #include<iostream> #include<string> #include<cstdlib> #include<cstdio> using namespace std;
void WczytajOsobe( string & imie, string & nazwisko, int & wiek ) { cin >> imie; cin >> nazwisko; cin >> wiek; } void WypiszOsobe( string & imie, string & nazwisko, int & wiek ) { cout << imie << endl; cout << nazwisko << endl; cout << wiek << endl; } int main() { string imie[ 3 ]; string nazwisko[ 3 ]; int wiek[ 3 ]; for( int i = 0; i < 3; i++ ) WczytajOsobe( imie[ i ], nazwisko[ i ], wiek[ i ] ); for( int i = 0; i < 3; i++ ) WypiszOsobe( imie[ i ], nazwisko[ i ], wiek[ i ] ); return 0; }
Może komuś się przyda :) |
|
« 1 » |