Po przypisaniu funkcji do zmiennej program przestaje działać
Ostatnio zmodyfikowano 2012-05-01 19:53
| quentine Temat założony przez niniejszego użytkownika | Po przypisaniu funkcji do zmiennej program przestaje działać » 2012-05-01 18:49:25 Witam :) Ćwiczę sobie dalej c++ i piszę program, który ze stworzonej tablicy wynajduje element największy i go wypisuje. W dalszej części będę jeszcze chciał pokazać ile razy w tablicy ten element występuje, ale po drodze pojawił się problem. Program w takiej wersji zadziała normalnie: #include <cstdlib>#include <iostream>
 
 using namespace std;
 int wczytajLiczby( int t[], int ile )
 {
 int i = 0;
 do
 {
 cin >> t[ i ];
 i++;
 } while( i < ile );
 
 }
 int najwieksza( int t[], int ile )
 {
 int i = 0;
 int max = t[ 0 ];
 do
 {
 if( t[ i ] > max )
 max = t[ i ];
 
 i++;
 } while( i < ile );
 
 return max;
 }
 int ileRazy( int t[], int ile, int max )
 {
 int i = 0;
 int k = 0;
 do
 {
 if( t[ i ] = max )
 k++;
 
 i++;
 } while( i < ile );
 
 return k;
 }
 int main( int argc, char * argv[] )
 {
 int howmuch;
 int tablica[ howmuch ];
 cout << "Ile liczb chcesz wprowadzic do tablicy?" << endl;
 cin >> howmuch;
 if( cin.good() )
 cout << "Poprawnie utworzono tablice zlozna z " << howmuch << " elementow." << endl;
 else
 { cout << "Wprowadzono niepoprawna wartosc." << endl; }
 cout << "Wprowadz teraz " << howmuch << " kolejnych liczb do tablicy" << endl;
 wczytajLiczby( tablica, howmuch );
 cout << "Najwieksza liczba z tablicy to: " << najwieksza( tablica, howmuch ) << endl;
 
 system( "pause" );
 return 0;
 }
Funkcję "najwieksza" wywołałem w cout. Ale gdybym chciał przypisać do zmiennej wartość zwracaną przez funkcję największa, to program nie zadziała. Pojawia się okienko "Program przestał działać" i po kliknięciu anuluj zamyka się. Przy samej kompilacji nie ma błędów. Ten kod nie zadziała: #include <cstdlib>#include <iostream>
 
 using namespace std;
 int wczytajLiczby( int t[], int ile )
 {
 int i = 0;
 do
 {
 cin >> t[ i ];
 i++;
 } while( i < ile );
 
 }
 int najwieksza( int t[], int ile )
 {
 int i = 0;
 int max = t[ 0 ];
 do
 {
 if( t[ i ] > max )
 max = t[ i ];
 
 i++;
 } while( i < ile );
 
 return max;
 }
 int ileRazy( int t[], int ile, int max )
 {
 int i = 0;
 int k = 0;
 do
 {
 if( t[ i ] = max )
 k++;
 
 i++;
 } while( i < ile );
 
 return k;
 }
 int main( int argc, char * argv[] )
 {
 int howmuch;
 int tablica[ howmuch ];
 cout << "Ile liczb chcesz wprowadzic do tablicy?" << endl;
 cin >> howmuch;
 if( cin.good() )
 cout << "Poprawnie utworzono tablice zlozna z " << howmuch << " elementow." << endl;
 else
 { cout << "Wprowadzono niepoprawna wartosc." << endl; }
 cout << "Wprowadz teraz " << howmuch << " kolejnych liczb do tablicy" << endl;
 wczytajLiczby( tablica, howmuch );
 int max = najwieksza( tablica, howmuch );
 cout << "Najwieksza liczba z tablicy to: " << max << endl;
 
 system( "pause" );
 return 0;
 }
 
Jeżeli ma ktoś pomysł dlaczego tak się dzieje, to proszę o pomoc :) Pozdrawiam | 
|  | 
| szyx_yankez | » 2012-05-01 19:24:23 int howmuch;int tablica[ howmuch ];
 
Co to? | 
|  | 
| quentine Temat założony przez niniejszego użytkownika | » 2012-05-01 19:31:26 Zmienna, za pomocą której użytkownik może określić ile elementów ma mieć tablica. Kompilator nie krzyczał, więc uznałem, że tak jest dobrze :) EDIT: OK, problem był właśnie w tym miejscu :P Przeniosłem tworzenie tablicy poniżej przypisania zmiennej wartości i działa :) Dzięki za pomoc :) Poprawiony kod: 
 
 #include <cstdlib>
 #include <iostream>
 
 using namespace std;
 int wczytajLiczby( int t[], int ile )
 {
 int i = 0;
 do
 {
 cin >> t[ i ];
 i++;
 } while( i < ile );
 
 }
 int najwieksza( int t[], int ile )
 {
 int i = 0;
 int max = t[ 0 ];
 do
 {
 if( t[ i ] > max )
 max = t[ i ];
 
 i++;
 } while( i < ile );
 
 return max;
 }
 int ileRazy( int t[], int ile, int max )
 {
 int i = 0;
 int k = 0;
 do
 {
 if( t[ i ] = max )
 k++;
 
 i++;
 } while( i < ile );
 
 return k;
 }
 int main( int argc, char * argv[] )
 {
 int howmuch;
 cout << "Ile liczb chcesz wprowadzic do tablicy?" << endl;
 cin >> howmuch;
 int tablica[ howmuch ];
 if( cin.good() )
 cout << "Poprawnie utworzono tablice zlozna z " << howmuch << " elementow." << endl;
 else
 { cout << "Wprowadzono niepoprawna wartosc." << endl; }
 cout << "Wprowadz teraz " << howmuch << " kolejnych liczb do tablicy" << endl;
 wczytajLiczby( tablica, howmuch );
 int max = najwieksza( tablica, howmuch );
 cout << "Najwieksza liczba z tablicy to: " << max << endl;
 
 system( "pause" );
 return 0;
 }
 | 
|  | 
| szyx_yankez | » 2012-05-01 19:53:03 Kod nadal nie jest poprawny. | 
|  | 
| « 1 » |