Pablo_Hasan Δημοσ. 24 Μαΐου 2005 Δημοσ. 24 Μαΐου 2005 einai ena programma pou topo8etei ta pionia se mia skakiera, kai meta dinei thn 8esh tous. O g++ to kanei compile xwris la8os alla otan paw na to tre3w mou dinei segmentation fault. kapoio la8os uparxei profanws me thn diaxeirish ths mnhmhs... >#include <iostream> using namespace std; main() { enum Feld {LEER, BW, TW, SW, LW, DW, KW, BS, TS, SS, LS, DS, KS}; Feld brett[8][8]; //h skakiera int zeile, spalte; //seira, sthlh for (zeile = 0; zeile < 8; zeile++) //dinw arxikh timh ston pinaka for(spalte = 0; spalte < 8; spalte++) brett[zeile][spalte] = LEER; for (spalte = 0; spalte < 8; spalte++) brett[1][spalte] = BW; brett[0][0] = brett[0][7] = TW; brett[0][1] = brett[0][6] = SW; brett[0][2] = brett[0][5] = LW; brett[0][3] = DW; brett[0][4] = KW; for (zeile = 7; zeile >= 0; zeile--) { for (spalte = 0; zeile < 8; spalte++) switch (brett[zeile][spalte]) { case LEER: cout << " . "; break; case BW : cout << " BW"; break; case TW : cout << " TW"; break; case SW : cout << " SW"; break; case LW : cout << " LW"; break; case DW : cout << " DW"; break; case KW : cout << " KW"; break; default:; } cout <<'\n'; } }
Directx Δημοσ. 25 Μαΐου 2005 Δημοσ. 25 Μαΐου 2005 To segmentation error (ή GPF στα Windows) προέρχεται τουλάχιστον στον δικό μου compiler (Borland C/C++ Builder 6) από την λανθασμένη συνθήκη: for (spalte = 0; zeile < 8; spalte++) όπου αν και αυξάνεις το spalte κατά μια μονάδα εντούτοις ελέγχεις την τιμή της zeile για το εάν είναι < 8 πράγμα που οδηγεί σε ένα ατέρμονα βρόχο με αποτέλεσμα η spalte να αυξάνεται συνεχώς πέραν των ορίων του πίνακα brett (σε συστήματα με ανεκτικό διαχειριστή μνήμης αυτό το λάθος μπορεί να εμφανισθεί ακόμα και ύστερα από αρκετούς φαινομενικά -και μόνο- σωστούς κύκλους εκτέλεσης). Το πρόγραμμα φαίνεται πως ξεπερνά το segmentation error εάν αλλάξουμε την zeile < 8 σε spalte < 8. Καλή συνέχεια!!
Προτεινόμενες αναρτήσεις
Αρχειοθετημένο
Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.