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

zadanie kontrolne ciagi znakow lancuchy

Ostatnio zmodyfikowano 2012-02-15 11:04
Autor Wiadomość
insulator
Temat założony przez niniejszego użytkownika
zadanie kontrolne ciagi znakow lancuchy
» 2012-02-12 18:07:16
Witam, mam proble z rozwiazaniem zadania kontrolnego na tej stronie http://cpp0x.pl/kursy/Kurs-C++/Ciagi-znakow-lancuchy/299.
Mój obecny kod wyglada tak:
C/C++
#include<iostream>
using namespace std;
string podaj_marke( string mr[], int & li ) {
    int j = 1;
    mr[ li ];
    for( int i = 0; i < li; i++ ) {
        cout << "podaj marke samochodu nr " << j << " ";
        j++;
        getline( cin, mr[ i ] );
    }
    return mr[ li ];
}
string podaj_model( string mo[], int & li ) {
    int j = 1;
    for( int i = 0; i < li; i++ ) {
        cout << "podaj model samochodu nr " << j << " ";
        j++;
        getline( cin, mo[ i ] );
    }
    return mo[ li ];
}
float podaj_poj_sil( float sil[], int & li ) {
    int j = 1;
    for( int i = 0; i < li; i++ ) {
        cout << "podaj pojemnosc silnika nr " << j << " ";
        j++;
        cin >> sil[ i ];
        cin.clear();
        cin.ignore( 1000, '\n' );
    }
    return sil[ li ];
}
int podaj_pr_max( int pred[], int & li ) {
    int j = 1;
    for( int i = 0; i < li; i++ ) {
        cout << "podaj predkosc maksymalna camochodu nr " << j++<< " ";
        cin >> pred[ i ];
       
        cin.clear();
        cin.ignore( 1000, '\n' );
    }
    return pred[ li ];
}
void wyswietl_dane( string mr[], int & li, string mod[], int & li2, float sil[], int & li3, int pred[], int & li4 ) {
    for( int i = 0; i < 3; i++ ) {
        cout << mr[ i ] << "; " << mod[ i ] << "; " << sil[ i ] << "; " << pred[ i ] << endl;
    }
}
int main() {
    int zak = 3;
    string marki[ zak ];
    string model[ zak ];
    float silnik[ zak ];
    int predkosc[ zak ];
    podaj_marke( marki, zak );
    podaj_model( model, zak );
    podaj_poj_sil( silnik, zak );
    podaj_pr_max( predkosc, zak );
    wyswietl_dane( marki, zak, model, zak, silnik, zak, predkosc, zak );
    return 0;
}

Program się kompiluje, wszystko dobrze żadnych ostrzeżeń itd. lecz po wpisaniu trzech wartosci do stringow wywala taki blad

terminate called after throwing an instance of 'std::lenght_error'
what(): basic_string::_S_create

Proces returned -1

Jak dalem w komentarz tablice string to tablica int i float wyswietla sie prawidlowo.
P-50583
GoldWolf
» 2012-02-13 09:59:15
mnie się nie kompiluje
P-50639
GoldWolf
» 2012-02-13 09:59:19
<< double post >>
P-50640
GoldWolf
» 2012-02-13 09:59:20
<< double post >>
P-50641
insulator
Temat założony przez niniejszego użytkownika
» 2012-02-13 12:07:58
@GoldWolf
Mi program nadal sie poprawnie kompiluje. Pewnie jest to zwiazane z tym, ze programuje na linuxie.

Już rozwiazalem to zadanie uzywajac tablicy char, ale nadal nie rozumiem jaki blad popelniłem wcześniej. Fajnie byłoby jakby ktoś to wyjaśnił.
P-50645
malan
» 2012-02-13 19:43:29
Jak mógł Ci się skompilować program, w którym nie podajesz typu zmiennej -
mr[ li ];
?
P-50697
m4tx
» 2012-02-13 19:55:31
@up bardzo prosto:
C/C++
string podaj_marke( string mr[], int & li ) {
    mr[ li ];

Chociaż kompilator powinien wywalić warninga "Statement has no effect", a autor tematu nic o tym nie pisze...
P-50698
akwes
» 2012-02-13 20:07:37
Bardziej mnie ciekawi to:
C/C++
int zak = 3;
string marki[ zak ];
string model[ zak ];
float silnik[ zak ];
P-50699
« 1 » 2
  Strona 1 z 2 Następna strona