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

[Lekcja 26] Segmentation fault przy wpisywaniu danych

Ostatnio zmodyfikowano 2012-03-12 21:26
Autor Wiadomość
willhelm
Temat założony przez niniejszego użytkownika
[Lekcja 26] Segmentation fault przy wpisywaniu danych
» 2012-02-29 13:16:38
Witam,
 
przebrnąłem przez kilka forów i nie mogę znaleźć rozwiązania problemu. Program kompiluje się, odpala, ale po wpisaniu 3 nazwiska wyskakuje Segmentation Fault. Czy ktoś wytłumaczy mi dlaczego?
 
C/C++
#include <iostream>
#include <string>

using namespace std;

int wczytajOsobe( string & imie, string & nazwisko, int & wiek, int i )
{
    cout << "Wpisz dane " << i + 1 << " osoby: ";
    cin >> imie;
    cin.ignore();
    cin >> nazwisko;
    cin.ignore();
    cin >> wiek;
    cin.ignore();
}

void wypiszOsobe( string & imie, string & nazwisko, int & wiek, int i )
{
    cout << i << imie << " " << nazwisko << " " << wiek << endl;
}

int main()
{
    /*    cout << "Wpisz tekst " << endl;
        string tekst;
        getline (cin, tekst);
        cout << "Wpisales: " << tekst;
    */
   
    string imie[ 2 ];
    string nazwisko[ 2 ];
    int wiek[ 2 ];
    for( int i = 0; i <= 2; i++ )
         wczytajOsobe( imie[ i ], nazwisko[ i ], wiek[ i ], i );
   
    for( int i = 0; i <= 2; i++ )
         wypiszOsobe( imie[ i ], nazwisko[ i ], wiek[ i ], i );
   
   
   
    return 0;
}
P-51619
pekfos
» 2012-02-29 15:48:22
C/C++
string imie[ 2 ];
string nazwisko[ 2 ];
int wiek[ 2 ];
for( int i = 0; i <= 2; i++ )
Wychodzisz poza zakres tablicy.
P-51622
willhelm
Temat założony przez niniejszego użytkownika
» 2012-03-06 21:24:24
Ale wychodzę dopiero po wprowadzeniu 3 elementu ( i <= 2)! Najpierw sprawdza 0, 1, 2 i dopiero przy 3 powinien konczyć petlę for, a on nie chce puścić mnie już wcześniej.

Mało tego. Zmieniłem komputer (też linuks, te same programy), ale już przy pierwszym elemencie (0) się wywala (po wpisaniu ostatniego elementu pierwszej tury). Zwiększenie tablicy też nic nie dało.
P-52117
Chlorek
» 2012-03-06 22:21:47
Sam się ze sobą nie zgadzasz, ewidentnie - 0,1,2 to razem trzy.
P-52137
willhelm
Temat założony przez niniejszego użytkownika
» 2012-03-06 22:39:18
Zamiana warunku pętli na i < 3 też nie jest rozwiązaniem. Chyba, że źle Was zrozumiałem. Mógłbyś mi napisać jak to powinno wygladać?
P-52144
Chlorek
» 2012-03-07 12:57:34
Postaram się poprawić ci ten kod jak tylko będę w domu. Chyba już widzę błąd.
P-52164
willhelm
Temat założony przez niniejszego użytkownika
» 2012-03-11 23:19:37
Chlorek, znalazłeś ten błąd?
P-52454
ison
» 2012-03-12 00:06:37
pisząc tab[2] masz 2 elementy o indeksach 0,1
jeśli chcesz wczytać elementy o indeksach <=2 czyli 0,1,2 to powinieneś zadeklarować tablicę [3]
P-52455
« 1 » 2
  Strona 1 z 2 Następna strona