Ultron Δημοσ. 30 Απριλίου 2013 Δημοσ. 30 Απριλίου 2013 Καλησπερα,εχω ενα περιεργο προβληματακι!Ρωταω τον χρηστη να καθορισει εναν πινακα (δινει int) κλπ κλπ και μετα κανει bubblesort kai selection sort. Απο το 1-14 καταχωρει τον πινακα κομπλε βγαζει αποτελεσματα κλπ κλπ αλλα μολις βαλω 15 και πανω τρωω ακυρο και κλεινει το προγραμμα ξερει κανεις τι παιζει?
albNik Δημοσ. 30 Απριλίου 2013 Δημοσ. 30 Απριλίου 2013 Το σιγουρο είναι ότι έχεις κάποιο λάθος στον κώδικα . 1
Ultron Δημοσ. 30 Απριλίου 2013 Μέλος Δημοσ. 30 Απριλίου 2013 Το σιγουρο είναι ότι έχεις κάποιο λάθος στον κώδικα . Thanks Captain xDDDDD
albNik Δημοσ. 30 Απριλίου 2013 Δημοσ. 30 Απριλίου 2013 Συμφωνα με τις μαντικές μου ικανότητες ο πίνακάς σου είναι <15 θέσεων. Π.χ. αν τον δηλώσεις int[Ν] για Ν<8 μπορεί να κρατάει 8 θέσεις (σαν minimum). Ο χρήστης δίνει το μέγεθος του πίνακα? Aν είναι ετσι πρέπει να δεσμέυσεις μνήμη με pointer. 2
Ultron Δημοσ. 30 Απριλίου 2013 Μέλος Δημοσ. 30 Απριλίου 2013 int bbsoptimized(int d[], int vbbs) { int i = 0, j = 0, steps = 0, temp=0, swapped = 1; for (i = 0; i < (vbbs - 1); i++) { swapped = 1; steps = steps + 1; for (j = 0; j < vbbs - i - 1; j++) { steps = steps + 1; if (d[j] > d[j + 1]) { int temp = d[j + 1]; d[j + 1] = d[j]; d[j] = temp; swapped = 0; } } if (swapped == 1) { break; } } return steps; } κώδικας της BBS ^ Καταχώρηση printf("Dwse arithmo thesewn tou pinaka:"); fflush(stdout); scanf("%d", &n); και μετα απο αυτα ξερω γω καλω την function vb=n; for (i = 0; i < vb; i++) { //initialize pinaka kanontas oles tis metablhtes tou pinaka 0. a[i] = 0; d[i] = 0; } srand(time(NULL)); for (i = 0; i < vb; i++) { a[i] = -rand() % 1000 + rand() % 1000; d[i] = a[i]; }
albNik Δημοσ. 30 Απριλίου 2013 Δημοσ. 30 Απριλίου 2013 Ο χρήστης δίνει το μέγεθος του a[] και d[]? Aν είναι ετσι πρέπει να δεσμέυσεις μνήμη με pointer. int *a; scanf("%d",&n); a=(int *) malloc(n*sizeof(int)); 1
Ultron Δημοσ. 30 Απριλίου 2013 Μέλος Δημοσ. 30 Απριλίου 2013 Ο χρήστης δίνει το μέγεθος του a[] και d[]? Aν είναι ετσι πρέπει να δεσμέυσεις μνήμη με pointer. int *a; scanf("%d",&n); a=(int *) malloc(n*sizeof(int)); Εισαι Θεός
nilosgr Δημοσ. 30 Απριλίου 2013 Δημοσ. 30 Απριλίου 2013 Ναι αλλά πριν κλείσει το πρόγραμμα σου πρέπει να απελευθερώνεις τη μνήμη του a. Βέβαια υπάρχει και το: int n; scanf("%d",&n); int a[n];Προφανώς και πρέπει να ελέγχεις την τιμή του n για να είναι θετική
Προτεινόμενες αναρτήσεις
Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε
Πρέπει να είστε μέλος για να αφήσετε σχόλιο
Δημιουργία λογαριασμού
Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!
Δημιουργία νέου λογαριασμούΣύνδεση
Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.
Συνδεθείτε τώρα