Zwracanie wartosci z funkcji
Ostatnio zmodyfikowano 2015-12-13 13:21
kigrins Temat założony przez niniejszego użytkownika |
Zwracanie wartosci z funkcji » 2015-12-13 12:22:17 #include <iostream> #include <string.h>
using namespace std; struct Samochody { char marka[16]; int data_produkcji; }; Samochody samochod[1]; int xxx() { int licznik; for(int i=0 ; i<5; i++) if( strcmp(samochod.marka,"fiat")==0 ) licznik++; return licznik; }
int main() { Samochody samochod[1]; int licznik; cout << licznik;
cin >> samochod[0].marka; cin >> samochod[1].marka; cin >> samochod[1].data_produkcji; cin >> samochod[1].data_produkcji; cout << samochod[1].marka;
licznik = xxx();
cout << licznik; return 0;
}
Cześć, w podanym wyżej kodzie licznik zawsze na końcu wynosi 0 jeśli użyje funkcji xxx, jeśli wplotę ją w int main() to działa poprawnie. Nie mam pomysłu czemu tak się dzieje :(
|
|
carlosmay |
» 2015-12-13 12:31:00 W funkcji 'xxx' zmienna 'licznik' nie ma wartości początkowej. Inkrementujesz 'śmiecia', po zwróceniu to nadal 'śmieć' powiększony o jeden. Samochody samochod[ 1 ];
int xxx() { int licznik; for( int i = 0; i < 5; i++ ) }
|
|
kigrins Temat założony przez niniejszego użytkownika |
» 2015-12-13 12:35:18 zmieniłem licznik na licznik = 0, dalej to samo :/ pętle też zmieniłem na i<2 |
|
BezPrzewodowy |
» 2015-12-13 12:46:04 Samochody samochod[ 1 ];
cin >> samochod[ 0 ].marka; cin >> samochod[ 1 ].marka;
|
|
carlosmay |
» 2015-12-13 12:46:28 Napisz konkretnie co chcesz osiągnąć.
Masz dwie deklaracje tej samej tablicy. Zakrywasz jedną i wpisujesz do niej dane. Później odkrywasz i porównujesz niewypełnioną tablicę. To dla tego nie dodaje licznika w funkcji. Wychodzisz poza zakresy. No i w 'main()' wprowadzanie danych (wygląda tak jakbyś nie miał pojecia ile elementów ma samochod samochody[1]; . |
|
kigrins Temat założony przez niniejszego użytkownika |
» 2015-12-13 13:21:59 Działa! Usunąłem tą niepotrzebną deklaracje int Samochody samochod[1] w int main(). Dziękuję bardzo za pomoc :) Miłego dnia życzę :) |
|
« 1 » |