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 » |