ΠΙ Ν Α Κ Ε Σ (arrays) ΤΑΞΙΝΟΜΗΣΗ Η μέθοδος της φυσαλίδας (bubble sort) Η μέθοδος της επιλογής (selection) Η μέθοδος της γρήγορης ταξινόμησης (quicksort) Η μέθοδος της συγχώνευσης (merge sort)
ΠΙ Ν Α Κ Ε Σ (arrays) ΑΝΑΖΗΤΗΣΗ Η μέθοδος της ακολουθιακής αναζήτησης (sequential search) Η μέθοδος της δυαδικής αναζήτησης (binary search)
0 1 2 3 4 5... 18 19???????????? Δήλωση Πίνακα τύπος όνομα_πίνακα [ μέγεθος ] ; Παράδειγμα #define N 20 double a[n]; Αν a[4] αναφέρεται στο 5ο στοιχείο Αν i = 3 a[i+2] αναφέρεται στο 6ο στοιχείο
for ( i=0; i<20; i ++) vathmos [i] = 0; 0 1 2 3 4 5... 18 19 0 0 0 0 0 0 0 0 0 0 0 0 0 Δείκτες #define N 20 int vathmos [N], *dktis; dktis = vathmos dktis = &vathmos[0];
Χωρίς τη χρήση δεικτών athroisma = 0; for ( i=0; i<n; i++) athroisma += vathmos[i]; Με τη χρήση δεικτών athroisma = 0; for ( i=0; i<n; i++) athroisma += *(vathmos +i); int vathmos[]; int *vathmos;
Το πέρασμα των πινάκων στις συναρτήσεις γίνεται μόνο με αναφορά. Παράδειγμα Να γραφεί μία συνάρτηση που να υπολογίζει το μέσο όρο των τιμών των στοιχείων του πίνακα. double mesos_oros ( int vathmos[], int megethos); int i; double athroisma = 0.0; for ( i=0; i< megethos; i++) athroisma += vathmos[i]; return ( athroisma / megethos ); }
Δυναμικές μεταβλητές και Δυναμικοί πίνακες Δυναμικές μεταβλητές : Μεταβλητές που δημιουργούνται κατά τη διάρκεια εκτέλεσης του προγράμματος και καταστρέφονται όταν δεν χρειάζονται.
int *dktis; dktis? dktis = malloc(sizeof(int)); dktis *dktis? *dktis = 10; free(dktis); dktis = NULL; dktis dktis Μη έγκυρη διεύθυνση dktis NULL *dktis 10
Δυναμικοί Πίνακες int *a; a = malloc(megethos * sizeof(int)); a???????? a[0] a[1] a[2].a[megethos-1] Αποδέσμευση free( a ); a = NULL;
Η μέθοδος της φυσαλίδας (bubble sort) Πρόβλημα Γράψτε μία function που να ταξινομεί σε αύξουσα σειρά τους ακέραιους αριθμούς μ i, i = 1(1) n με τη μέθοδο της φυσαλίδας. Τέλος 1 ης φάσης Τέλος 2 ης φάσης Τέλος 3 ης φάσης 4 η φάση m[0] 60 42 42 42 42 25 25 m[1] 42 60 60 60 25 42 42 m[2] 83 83 25 25 60 60 60 m[3] 25 25 83 75 75 75 75 m[4] 75 75 75 83 83 83 83
void andallagi(int *p, int *q) int pros; pros = *p; *p = *q; *q = pros; }
void fysalida(int m[], int n) } while (taxinomisi == o ); } int pros, i; char taxinomisi= o ; /* όχι ταξινομημένη*/ do taxinomisi = n ; for (i=0; i<n-1; i++) if ( m[i] > m[i+1]) andallagi( &m[i], &m[i+1]); taxinomisi = o ; } n = n - 1; /*ελαττώνεται κατά ένα ο πίνακας*/
#include <stdio.h> #define N 200 void andallagi(int *p, *int *q); void fysalida(int m[], int n) int main(void) int i, pinakas[n]; printf( \nεισάγετε %d ακέραιους αριθμούς, N); for (i=0; i <N; ++i) scanf( %d, &pinakas[i]); fysalida(pinakas, N); /* κλήση της fysalida */
printf( \nοι ταξινομημένοι αριθμοί είναι : ); for (i=0; i <N; ++i) printf( %d, pinakas[i]); return 0; }
Η μέθοδος της επιλογής (selection sort) Πρόβλημα Γράψτε μία function που να ταξινομεί σε φθίνουσα σειρά τους ακεραίους αριθμούς μ i, i = 1(1) n με τη μέθοδο της επιλογής (selection sort). 1 η 2 η 3 η 4 η m[0] 60 83 83 83 83 m[1] 42 42 75 75 45 m[2] 83 60 60 60 60 m[3] 25 25 25 25 42 m[4] 75 75 42 42 25
void epilogi(int m[], int n) /* n είναι το μέγεθος του m[] */ int i, j, meg; for ( i=0; i<n-1; i++) meg = i; for ( j= i; j<n; j++) if ( m[j] > m[meg]) meg =j; andallagi( &m[i], &m[meg]); } } ( 2 O n ) συγκρίσεις
void andallagi(int *p, int*q) int pros; pros = *p; *p = *q; *q = pros; }
#include <stdio.h> #define N 200 void andallagi(int *p, *int *q); void epilogi(int m[], int n); int main(void) int i, pinakas[n]; printf( \nεισάγετε %d ακέραιους αριθμούς, N); for (i=0; i <N; ++i) scanf( %d, &pinakas[i]); epilogi(pinakas, N); /* κλήση της epilogi */
printf( \nοι ταξινομημένοι αριθμοί είναι : ); for (i=0; i <N; ++i) printf( \n%d, pinakas[i]); return 0; }
Μέθοδος της Γρήγορης Ταξινόμησης (quicksort) οδηγό στοιχείο = το πρώτο (4) 4 3 1 9 2 6 5 p q 4 3 1 9 2 6 5 p q 4 3 1 9 2 6 5 p q
4 3 1 9 2 6 5 p q 4 3 1 9 2 6 5 p q 4 3 1 9 2 6 5 p q 4 3 1 2 9 6 5 (εναλλαγή) p q
4 3 1 2 9 6 5 p q [2 3 1] 4 [9 6 5] τελική θέση του οδηγού [2 3 1] 4 [9 6 5] [1] 2 [3] 4 [5 6] 9 1 2 3 4 5 [6] 9 1 2 3 4 5 6 9
void grigori_tax (int a[ ], int arxi, int telos) /* H γρήγορη ταξινόμηση ταξινομεί σε αύξουσα σειρά τα στοιχεία του a[ ] */ int p, q, odigo; if (arxi < telos ) /* αν ο πίνακας περιέχει λιγότερα από δύο στοιχεία (arxi >= telos) τότε σταμάτησε (κατάσταση διακοπής) */ p= arxi; q = telos; odigo = a[arxi];
/*επανάλαβε την ακόλουθη διαδικασία μέχρις ότου p>= q */ while (p < q) /* μετακίνηση του δείκτη q */ while ( a[q] > odigo ) --q; /* μετακίνηση του δείκτη p*/ while ( a[p ] <= odigo && p < q) ++p; if (p < q) andallagi (&a[p], &a[q]); }/* τέλος του while */
/* Επειδή p=q,απαιτείται ανταλλαγή του οδηγού στοιχείου με αυτό που δείχνουν οι p και q */ } } andallagi (&a[arxi], &a[q]); grigori_tax (a, arxi, q-1); grigori_tax (a, q+1, telos); O(nlogn) συγκρίσεις
#include <stdio.h> #define N_1 200 void andallagi(int *p, *int *q); void grigori_tax(int m[], int arxi, int telos); int main(void) int i, N, pinakas[n_1]; printf( \nεισάγετε το πλήθος των αριθμών : ); scanf( %d, N); printf( \nεισάγετε %d ακέραιους αριθμούς, N);
for (i=0; i <N; ++i) scanf( %d, &pinakas[i]); grigori_tax(pinakas, 0, N-1); /* κλήση της grigori_tax */ printf( \nοι ταξινομημένοι αριθμοί είναι : ); for (i=0; i <N; ++i) printf( \n%d, pinakas[i]); return 0; }
ΔΗΜΙΟΥΡΓΙΑ ΒΙΒΛΙΟΘΗΚΗΣ ΤΑΞΙΝΟΜΗΣΗΣ Το αρχείο taxi.h void fysalida(int m[], int n); void andallagi (int *p, int *q); void epilogi(int m[], int n); void grigori_tax(int a[], int arxi, int telos); Το αρχείο taxi.c #include "taxi.h" Κώδικας των συναρτήσεων που περιέχονται στο αρχείο taxi.h #include <stdio.h> #include taxi.c int main(void)
Πρόβλημα ΣΥΓΧΩΝΕΥΣΗ Γράψτε ένα υποπρόγραμμα που να δέχεται σαν είσοδο δύο πίνακες ταξινομημένους σε αύξουσα (φθίνουσα) σειρά και να τους συγχωνεύει σε ένα τρίτο ταξινομημένο πίνακα. Τυχαίο βήμα i a b k j c
Σύγκριση a[i] με b[j] και τοποθέτηση του μικρότερου στο c[k]. if a[i] < b[j] c[k] = a[i]; ++ i; ++ k; } else /* b[j] <= a[i] */ c[k] = b[j]; ++ j; ++ k; }
Στην περίπτωση που έχουν τελειώσει τα στοιχεία του a[ ], τότε αντιγράφονται τα υπόλοιπα στοιχεία του b[ ] στον c[ ]. a b αντιγραφή c Στην περίπτωση που έχουν τελειώσει τα στοιχεία του b[ ], τότε αντιγράφονται τα υπόλοιπα στοιχεία του a[ ] στον c[ ].
void syghonefsi (int a[ ], int b[ ], int c[ ], int n, int m) /* Συγχωνεύει τους ταξινομημένους πίνακες a[i] και b[j] σε ένα ταξινομημένο πίνακα c[k] */ int i, j, k; i = 0; /* δείκτης για τον a[ ] */ j = 0; /* δείκτης για τον b[ ] */ k = 0; /* δείκτης για τον c[ ] */ /* Όσο υπάρχουν στοιχεία στους πίνακες a[i] και b[j] να τοποθετούνται στον πίνακα c[k] σε αύξουσα σειρά */
while (i < n && j < m) if (a[i] < b[j]) c[k] = a[i]; ++ i; ++ k; } else c[k] = b[j]; ++ j; ++ k; }
/* Στην περίπτωση που τελειώσουν πρώτα τα στοιχεία του πίνακα a[ ], αντιγράφονται τα υπόλοιπα στοιχεία του b[ ] στον πίνακα c[ ] */ while (j < m) c[k] = b[j]; ++ j; ++ k; }
/* Στην περίπτωση που τελειώσουν πρώτα τα στοιχεία του πίνακα b[ ], αντιγράφονται τα υπόλοιπα στοιχεία του a[ ] στον πίνακα c[ ] */ while (i < n) c[k] = a[i]; ++ i; ++ k; }
#include <stdio.h> #define N1 200 int main(void) int i, N, M, pin1[n1], pin2[n1], neos_pin[n1]; printf( \nεισάγετε το πλήθος των στοιχείων του 1ου πίνακα ); scanf( %d, &N); printf( \nεισάγετε τα στοιχεία του 1ου πίνακα ); for (i=0; i<n; ++i) scanf( %d, &pin1[i]);
printf( \nεισάγετε το πλήθος των στοιχείων του 2ου πίνακα ); scanf( %d, &M); printf( \nεισάγετε τα στοιχεία του 2ου πίνακα ); for (i=0; i<m; ++i) scanf( %d, &pin2[i]); /* Δημιουργία του νέου συγχωνευμένου πίνακα */ if (N+M <= N1) syghonefsi(pin1, pin2, neos_pin, N, M); else printf( \nδεν είναι δυνατή η συγχώνευση );
printf( \nο συγχωνευμένος πίνακας είναι ο εξής : ); for (i=0; i< N+M; ++i) printf( \n%d, neos_pin[i]); return 0; }
Σειριακή Αναζήτηση Πρόβλημα ΑΝΑΖΗΤΗΣΗ Γράψτε μία συνάρτηση που να βρίσκει ένα συγκεκριμένο στοιχείο του πίνακα των ακεραίων αριθμών.
Συνάρτηση /* Υλοποιεί τη μέθοδο της σειριακής αναζήτησης σε μη ταξινομημένη λίστα */ void seiriaki_anazitisi_1 (int kleidi, int megethos, int pinakas [ ], int *deiktis, int *vrethike) int i; *vrethike = 0; /* δεν έχει βρεθεί το στοιχείο */ *deiktis = -1;
} for (i = 0; i < megethos; i++) if (kleidi = = pinakas [i]) deiktis = i; *vrethike = 1; /* βρέθηκε το στοιχείο */ break; }
Συνάρτηση /* Σειριακή αναζήτηση σε ταξινομημένη (αύξουσα) λίστα */ void seiriaki_anazitisi_2 (int kleidi, int megethos, int pinakas [ ], int *deiktis, int *vrethike) int i; *vrethike = 0; /* δεν έχει βρεθεί το στοιχείο */ *deiktis = -1;
} for (i = 0; i < megethos; i++) if (kleidi < pinakas [i]) /*δεν υπάρχει το κλειδί στη λίστα */ break; else if (kleidi = = pinakas [i]) *deiktis = i; *vrethike = 1; break; }
Δυαδική Αναζήτηση (Binary Search) Παράδειγμα Αναζήτηση του 18 0 1 2 3 4 5 6 7 8 9 2 3 5 7 8 [11 15 17 18 19] 11 15 17 [18 19] 18 19
Μη αναδρομική Συνάρτηση /* Εντοπίζει τη θέση του κλειδιού αναζήτησης σε ένα ταξινομημένο πίνακα με τη μέθοδο της δυαδικής αναζήτησης. */ void dyadiki_anazitisi_1 (int kleidi, int pinakas [ ], int megethos, int arxi, telos, mesaio; *vrethike = 0; arxi = 0; telos = megethos-1; int *deiktis, int *vrethike) while ( arxi <= telos &&!*vrethike )
mesaio = (arxi + telos) / 2; if (kleidi = = pinakas [mesaio]) *deiktis = mesaio; *vrethike = 1; /* βρέθηκε το στοιχείο */ } } } else /* δεν βρέθηκε */ if (kleidi < pinakas [mesaio]) telos = mesaio-1; else /* kleidi >= pinakas[mesaio] */ arxi = mesaio+1;
Aναδρομική Συνάρτηση /* Εντοπίζει τη θέση του κλειδιού αναζήτησης στον πίνακα με τη μέθοδο της δυαδικής αναζήτησης */ void dyadiki_anazitisi_2 (int kleidi, int pinakas [ ], int arxi, int mesaio; *vrethike = 0; if (arxi <= telos &&!*vrethike) mesaio = (arxi + telos) / 2; int telos, int *deiktis, int *vrethike)
if (kleidi = = pinakas [mesaio]) *deiktis = mesaio; *vrethike = 1; } else if (kleidi < pinakas [mesaio]) dyadiki_anazitisi_2 (kleidi, pinakas, arxi, mesaio-1, deiktis, vrethike); else dyadiki_anazitisi_2 (kleidi, pinakas, mesaio+1, telos, deiktis, vrethike); } }
Δυναμικοί Πίνακες void analysi_vathmon (int megethos, int *megisti, int *elaxisti, int *mesi_timi) int *vathmos; int plithos, mertritis, athroisma; plithos = 0; /* Δημιουργία δυναμικού πίνακα */ vathmos = malloc (megethos *sizeof(int)); printf ( \n Εισάγετε το πλήθος των βαθμών: ); scanf ( %d, plithos); printf ( \n Εισάγετε %d βαθμούς:, plithos);
for (i = 0; i < plithos; i++) scanf ( %d, &vathmos [i]); *megisti = vathmos [0]; *elaxisti = vathmos [0]; athroisma = 0; metritis = 1; while (metritis < plithos) /* Βρίσκει τη μέγιστη τιμή */ if (*megisti < vathmos[metritis]) *megisti = vathmos[metritis];
/* Βρίσκει την ελάχιστη τιμή */ if (*elaxisti > vathmos[metritis]) *elaxisti = vathmos[metritis]; /* Υπολογίζει το άθροισμα */ athroisma += vathmos[metritis]; metritis++; } /* Τέλος του while */ free (vathmos); /* αποδέσμευση της μνήμης */ vathmos = NULL; /* συνιστάται */ *mesi_timi = athroisma/metritis; } /* Τέλος της analysi_vathmon */
Πρόβλημα Να γραφεί ένα πρόγραμμα, το οποίο 1. Να δημιουργεί ένα πίνακα ακέραιων αριθμών, οι οποίοι δίνονται από το πληκτρολόγιο. 2. Να ταξινομεί τους αριθμούς αυτούς με τη χρήση της μεθόδου ταξινόμησης φυσαλίδα και 3. Να αναζητά ένα δεδομένο αριθμό με τη μέθοδο της δυαδικής αναζήτησης
Πρόγραμμα #include <stdio.h> #include taxi.c #include anaz.c #define MEGETHOS 100 /* Πρωτότυπα συναρτήσεων */ void eisodos (int pinakas[], int *megethos); int main (void) int megethos, kleidi, thesi, i; int pinakas [MEGETHOS] eisodos (pinakas, &megethos); printf ( \n Μη ταξινομημένος πίνακας );
for (i = 0; i < megethos; ++i) printf ( \n %d %d, i, pinakas[i]); fysalida(pinakas, megethos); printf ( \n Ταξινομημένος πίνακας ); for (i = 0; i < megethos; ++i) printf( \n %d %d, i, pinakas[i]); printf ( \n Εισάγετε έναν ακέραιο αριθμό για αναζήτηση (κλειδί) ); scanf ( %d, &kleidi); dyadiki_anazitisi_1 (kleidi, pinakas, megethos, &thesi, &vrethike); if (vrethike) printf ( \n Επιτυχημένη αναζήτηση. Ο αριθμός %d είναι το% -οστό στοιχείο του πίνακα, kleidi, thesi+1);
else printf ( \n Αποτυχημένη αναζήτηση ); return 0; } void eisodos (int pinakas[], int *megethos) int i; printf ( \n Εισάγετε το πλήθος των αριθμών ); scanf ( %d, megethos); for (i = 0; i < *megethos; ++i) printf ( \n Εισάγετε ένα ακέραιο αριθμό: ); scanf ( %d, &pinakas [i]); } } /* Τέλος της eisodos */
Οι Πίνακες Μεγαλύτερης Διάστασης Στήλες 0 1 2 α[0][0] α[0][1] α[0][2] 0 86 73 35 α[1][0] α[1][1] α[1][2] Γραμμές 1 64 52 43 α[2][0] α[2][1] α[2][2] 2 87 93 57 α[3][0] α[3][1] α[3][2] 3 28 32 14 Αναφορά στοιχείου πίνακα A[i][j] Δείκτης γραμμής δείκτης στήλης
Δήλωση Δισδιάστατων Πινάκων int a[4][3]; 86 73 35 64 52 43 87 93 57 28 32 14 Γραμμή 0 Γραμμή 1 Γραμμή 2 Γραμμή 3 Επεξεργασία Δισδιάστατων Πινάκων int vathmos [4][3]; for (i = 0; i < 4; i++) for (i = 0; i < 4; i++) vathmos [i][j] = 0;
int a[4][3] = 86,73,35}, 64,52,43}, 87,93,57}, 28,32,14}}; int a[ ][3] = 86,73,35}, 64,52,43}, 87,93,57}, 28,32,14}}; Δισδιάστατοι Πίνακες σαν ορίσματα στις Συναρτήσεις Συνάρτηση double mesi_timi(int a[ ][STHLES], int n, int m) int athroisma, i, j; double mesos_oros; athroisma = 0;
} for (i = 0; i < n; i++) for (j = 0; j < m; j++) athroisma += a[i][j]; mesos_oros = athroisma/(n*m); return mesos_oros; Παράδειγμα #include <stdio.h> #define GRAMMES 50 #define STHLES 50 void eisodos (int pin[] [STHLES], int *n, int *m); void exodos (int pin[] [STHLES], int n, int m); double mesi_timi (int pin[] [STHLES], int n, int m);
int main (void) int pinakas [GRAMMES] [STHLES]; int n, m; eisodos (pinakas, &n, &m); exodos (pinakas, n, m); printf( \n\n Η μέση τιμή είναι: %d, mesi_timi (pinakas, n, m)); return 0; } void eisodos (int pinakas [ ] [STHLES], int *n, int *m) int i, j;
printf( \n Εισάγετε πλήθος γραμμών: ); scanf ( %d, n); printf( \n Εισάγετε πλήθος στηλών: ); scanf ( %d, m); for (i = 0; i < *n; ++i) for (j = 0; j < *m; ++j) printf( \n Εισάγετε μια τιμή για το στοιχείο του πίνακα [%d] [%d]:, i, j); } /* τέλος for */ } /* τέλος eisodos */
void exodos (int pinakas [ ] [STHLES], int n, int m) int i, j; for (i = 0; i < n; ++i) for (j = 0; j < m; ++j) printf( %3d, pinakas [i] [j]); } /* τέλος της exodos */ double mesi-timi (int pinakas [ ] [STHLES], int n, int m) Δηλώσεις και σώμα της mesi_timi } /* τέλος της mesi_timi */
Δισδιάστατοι Πίνακες και Δείκτες int a[3][2] = 75,80}, 78,95}, 65,57}} Οι Συμβολοσειρές char symvoloseira [10]; char symvoloseira [15] = Kalimera ; symvoloseira K a 1 i m e r a \0?????? 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14
char *symboloseira; char *symvoloseira = Kalimera ; *symboloseira = Kalimera ; symvoloseira K a 1 i m e r a \0 0 1 2 3 4 5 6 7 8 char symboloseira [ ] = a ; a \0 0 1
Εκτύπωση μιας μεταβλητής συμβολοσειρά printf ( %s, symvoloseira) puts (symvoloseira); sprintf (symvoloseira1, %s, symvoloseira2); Διάβασμα μιας μεταβλητής συμβολοσειρά scanf char symvoloseira [15]; scanf ( %s, symvoloseira);
G e i a \0?????????? 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 char symvoloseira [15]; scanf ( %10s, symboloseira); P r 0 g r a m m a t \0???? 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14
gets gets (συμβολοσειρά); char symvoloseira [15]; gets (symboloseira); G e i a s a s! \0??? 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14
Παράδειγμα Τα αποτελέσματα των char symvoloseira1 [15], symvoloseira2 [15]; gets (symvoloseira); sscanf (symvoloseira1, %s, symvoloseira2); Είναι η symvoloseira1 και symvoloseira2 να περιέχουν την ίδια συμβολοσειρά εισόδου Πέρασμα των Συμβολοσειρών στις Συναρτήσεις void diavase_seira (char symvoloseira [ ]) void diavase_seira (grammi);
Συναρτήσεις που επιστρέφουν μία ακέραια τιμή strcmp (s1, s2) strncmp (s1, s2, n) strlen (s) strchr (s1, c) Συναρτήσεις που επιστρέφουν μία συμβολοσειρά strcat (s1, s2) strncat (s1, s2, n) strcpy (s1, s2) strncpy (s1, s2, n) strstr (s1, s2)
Ηχρήση του typedef typedef τύπος λίστα-τύπων ; typedef int typos_stoixeiou; typos_stoixeiou dianysma[n]; Αν ο τύπος των δεδομένων αλλάξει από int σε double, τότε typedef double typos_stoixeiou ; Ορισμός δισδιάστατου πίνακα 1ος τρόπος #define N 100 typedef int typos_stoixeiou; typedef typos_stoixeiou dianysma[n]; typedef typos_stoixeiou dianysma[n][n];
dianysma v1, v2, v3 ; pinakas a, b, c ; Οι ανωτέρω δηλώσεις είναι ισοδύναμες με τις ακόλουθες : 2ος τρόπος int v1[n], v2[n], v3[n] ; int a[n][n], b[n][n], c[n][n] ; 3ος τρόπος ( οικοδόμηση σύνθετου τύπου ) #define n 100 typedef int typos_stoixeiou ; typedef typos_stoixeiou dianysma[n]; typedef dianysma dianysma[n];
Δημιουργία Τυχαίων αριθμών Παράδειγμα Nα γραφεί ένα πρόγραμμα το οποίο να υπολογίζει και τυπώνει το αποτέλεσμα 20 ρίψεων ενός ζαριού. Πρόγραμμα
#include <stdio.h> #include <stdlib.h> int main(void) int i; for (i = 1; i <= 20; ++i) printf( %d, (1+rand( )%6)); if (i%5 = = 0) printf( \n ); } return 0; }
Παράδειγμα Nα τροποποιηθεί το πρόγραμμα του προηγούμενου παραδείγματος προκειμένου να παράγει πραγματικά τυχαίους ακέραιους αριθμούς μεταξύ του 1 και του 6 #include <stdio.h> #include <stdlib.h> #include <time.h> int main(void) int i; unsigned int tyxaios; Πρόγραμμα
} tyxaios = time(0); /* ή time(null) */ srand(tyxaios); for (i = 1; i <= 20; ++i) printf( %d, (1+rand( )%6)); if (i%5 = = 0) printf( \n ); } return 0;