Η-Υ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ. Εργαστήριο 8 Ασκήσεις Πινάκων Ταξινόμηση Αναζήτηση. Γιώργος Λαμπρινίδης

Σχετικά έγγραφα
Εχουμε ήδη συναντήσει μονοδιάστατους πίνακες, οι οποίοι ορίζονται ως εξής:

Η-Υ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ. Εργαστήριο 2 Εντολές Εισόδου/Εξόδου Τελεστές. Δρ. Γιώργος Λαμπρινίδης 23/10/2015 Η - Υ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ 1

Πίνακες. 1 Πίνακες. 30 Μαρτίου 2014

ΕΝΤΟΛΕΣ ΕΠΑΝΑΛΗΨΗΣ. for (παράσταση_1; παράσταση_2; παράσταση_3) εντολή επόμενη εντολή

Προγραμματισμός Η/Υ 1 (Εργαστήριο)

Εισαγωγή στους Αλγόριθμους και τον Προγραμματισμό. 3η Διάλεξη Είσοδος Δεδομένων Συνθήκες Βρόχοι Παραδείγματα

Η Υ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ. Εργαστήριο 6 Εντολές Επανάληψης Ασκήσεις. Γιώργος Λαμπρινίδης

ΠΙΝΑΚΕΣ ΔΥΟ ΔΙΑΣΤΑΣΕΩΝ

Παρακάτω δίνεται o σκελετός προγράμματος σε γλώσσα C. Σχολιάστε κάθε γραμμή του κώδικα.

242 -ΕισαγωγήστουςΗ/Υ

242 -ΕισαγωγήστουςΗ/Υ

Η Υ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ. Εργαστήριο 5 Εντολές Επανάληψης for while do while. Λαμπρινίδης Γεώργιος

Κεφάλαιο 8.6. Πίνακες ΙI (Διάλεξη 17)

Σημειώσεις για πρόοδο στο εργαστήριο

ΠΡΟΓΡΜΜΑΤΑ ΣΕ C. Γράψτε σε γλώσσα προγραμματισμού C τη συνάρτηση:

Η-Υ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ. Εργαστήριο 3 Εντολές Επιλογής. Γιώργος Λαμπρινίδης Η - Υ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ 1

Γλώσσα Προγραμματισμού C. Προγραμματισμός HY: Γλώσσα Προγραμματισμού C. Γρήγορος Πίνακας Αναφοράς Σύνταξης. Εισήγηση #4. Επαναληπτικές δομές:

Κατανεμημένος και Παράλληλος Προγραμματισμός. Εισαγωγή στο MPI. Εγκατάσταση MPICH σε ένα ΗΥ 10/3/2017

Βήματα: μνήμη 2. Αλγόριθμος βήματα που περιγράφουν την επεξεργασία των δεδομένων. Δομές Δεδομένων + Αλγόριθμοι = Προγράμματα

Μεθόδων Επίλυσης Προβλημάτων

Ασκηή σεις 12ο Μαά θημα - Λυύ σεις

Διαδικασιακός Προγραμματισμός

Δομημένος Προγραμματισμός. Τμήμα Επιχειρηματικού Σχεδιασμού και Πληροφοριακών Συστημάτων

ΠΙ Ν Α Κ Ε Σ (arrays)

10. Εντολές επανάληψηςκαι οι εντολές

Εργαστηριακή Άσκηση 1

Η γλώσσα προγραμματισμού C

Γλώσσα Προγραμματισμού C

Προγραμματισμός Η/Υ Ι (Χρήση της C) 6 η Θεωρία ΜΟΝΟΔΙΑΣΤΑΤΟΙ ΠΙΝΑΚΕΣ

Κεφάλαιο 8.6. Πίνακες ΙI ( ιάλεξη 16) ιδάσκων: ηµήτρης Ζεϊναλιπούρ

ΚΟΡΥΦΑΙΟ ΦΡΟΝΤΙΣΤΗΡΙΟ korifeo.gr

Ενότητα 3: «Εισαγωγή στην Αλγοριθμική και στον Προγραμματισμό: loops, subroutines, tables»

Εργαστήριο 2: Πίνακες

Απλά Προγράμματα. Βήματα: 1. Καθορισμός παράστασης δεδομένων στη μνήμη 2. Αλγόριθμος βήματα που περιγράφουν την επεξεργασία των δεδομένων

Κεφάλαιο 4: Συνθήκες Έλεγχου (if-else, switch) και Λογικοί τελεστές / παραστάσεις. (Διάλεξη 8)

6. ΠΙΝΑΚΕΣ & ΑΛΦΑΡΙΘΜΗΤΙΚΑ

ΑΣΚΗΣΗ 5: ΠΙΝΑΚΕΣ. Σχήµα 1: H έννοια των πινάκων

Ελληνική Δημοκρατία Τεχνολογικό Εκπαιδευτικό Ίδρυμα Ηπείρου. Προγραμματισμός Ι. Ενότητα 8 : Πίνακες IΙ. Αλέξανδρος Τζάλλας

Νικόλαος Μιχαλοδημητράκης Σημειώσεις C (Εργαστήριο) 7 ο Μέρος 1

Α. unsigned int Β. double. Γ. int. unsigned char x = 1; x = x + x ; x = x * x ; x = x ^ x ; printf("%u\n", x); Β. unsigned char

Εισαγωγή στον Προγραμματισμό

Κεφάλαιο : Επαναλήψεις (oι βρόγχοιfor, do-while) (Διάλεξη 10) Εντολές Επανάληψης που θα καλυφθούν σήμερα

3ο σετ σημειώσεων - Πίνακες, συμβολοσειρές, συναρτήσεις

5. ΒΡΟΧΟΙ ΕΠΑΝΑΛΗΨΗΣ (Β' μέρος: while - do..while)

Κατανεμημένος και Παράλληλος Προγραμματισμός

Τα δεδομένα στη C++ χωρίζονται σε 3 κατηγορίες: τους αριθμούς (numbers), τους χαρακτήρες (characters) και τις συμβολοσειρές (strings).

ΤΕΙ ΙΟΝΙΩΝ ΝΗΣΩΝ ΣΧΟΛΗ ΔΙΟΙΚΗΣΗΣ ΚΑΙ ΟΙΚΟΝΟΜΙΑΣ ΤΜΗΜΑ ΔΙΟΙΚΗΣΗΣ ΕΠΙΧΕΙΡΗΣΕΩΝ - ΕΙΣ

Υπολογισμός - Συλλογή Δεδομένων - Πίνακες

4. ΒΡΟΧΟΙ ΕΠΑΝΑΛΗΨΗΣ (Α' μέρος: for)

A[0] = 0; /* To μηδέν δεν έχει διαιρέτες */ for (i=1; i<n; i++) { S=0; for (d=1; d<=i; d++) if (i % d == 0) S += d; A[i] = S; }

Εντολές ελέγχου ροής if, for, while, do-while

Η γλώσσα προγραμματισμού C

Διάλεξη 5η: Εντολές Επανάληψης

ΣΧΕΔΙΑΣΗ ΚΑΙ ΥΛΟΠΟΙΗΣΗ ΛΟΓΙΣΜΙΚΟΥ. p: i: 3 p: i: 5

ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΙΑΣ ΣΧΟΛΗ ΘΕΤΙΚΩΝ ΕΠΙΣΤΗΜΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ

Δομημένος Προγραμματισμός

Δείκτες (Pointers) Ένας δείκτης είναι μια μεταβλητή με τιμή μια διεύθυνση μνήμης. 9.8

ΔΙΑΓΩΝΙΣΜΑ ΠΡΟΣΟΜΟΙΩΣΗΣ ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ

Α2. Να γράψετε στο τετράδιο απαντήσεών σας το κατάλληλο τμήμα κώδικα, κάνοντας τις απαραίτητες αλλαγές σύμφωνα με την εκάστοτε εκφώνηση:

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ Ακαδημαϊκό έτος ΤΕΤΡΑΔΙΟ ΕΡΓΑΣΤΗΡΙΟΥ #3

Βαθμός Σχόλια. lab PASS 1194 PASS 1238 PASS 1239 PASS

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ Ακαδηµαϊκό έτος ΑΣΚΗΣΗ #5 Προτεινόµενη λύση

ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΔΟΜΗΜΕΝΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ

Εισαγωγή στους Αλγόριθμους και τον Προγραμματισμό. 4η Διάλεξη Πίνακες Συναρτήσεις

Αλγόριθμοι Αναζήτησης. (AeppAcademy.com)

ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΔΟΜΗΜΕΝΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ

Ερωτήσεις πολλαπλής επιλογής - Κεφάλαιο Κάθε δομή μπορεί να χρησιμοποιηθεί σε οποιοδήποτε πρόβλημα ή εφαρμογή

ΕΙΣΑΓΩΓΗ ΣΤΟΥΣ ΑΛΓΟΡΙΘΜΟΥΣ ΚΑΙ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΙΓΑΙΟΥ ΤΜΗΜΑ ΠΟΛΙΤΙΣΜΙΚΗΣ ΤΕΧΝΟΛΟΓΙΑΣ ΚΑΙ ΕΠΙΚΟΙΝΩΝΙΑΣ. Διδάσκουσα Δρ Β.

ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΔΟΜΗΜΕΝΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ

2. ΕΝΤΟΛΕΣ ΕΛΕΓΧΟΥ (Α' μέρος: if)

8. Συνθήκες ελέγχου, λογικοί τελεστές

Υπολογισμός - Εντολές Επανάληψης

Η γλώσσα προγραμματισμού C

Ημερομηνία: 1/03/15 Διάρκεια διαγωνίσματος: 180 Εξεταζόμενο μάθημα: Προγραμματισμός (Δομή Επανάληψης) Υπεύθυνος καθηγητής: Παπαδόπουλος Πέτρος

ΕΠΛ232: Εργαστήριο 2

Προγραμματισμός Ι. Χαρακτήρες. Πανεπιστήμιο Πελοποννήσου Τμήμα Πληροφορικής & Τηλεπικοινωνιών

Στη C++ υπάρχουν τρεις τύποι βρόχων: (a) while, (b) do while, και (c) for. Ακολουθεί η σύνταξη για κάθε μια:

Επανάληψη για τις Τελικές εξετάσεις. (Διάλεξη 24) ΕΠΛ 032: ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΜΕΘΟΔΩΝ ΕΠΙΛΥΣΗΣ ΠΡΟΒΛΗΜΑΤΩΝ

Δομημένος Προγραμματισμός. Τμήμα Επιχειρηματικού Σχεδιασμού και Πληροφοριακών Συστημάτων

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΕΠΑΝΑΛΗΠΤΙΚΟ ΔΙΑΓΩΝΙΣΜΑ ΟΝΟΜΑΤΕΠΩΝΥΜΟ:

Δομημένος Προγραμματισμός

Προγραμματισμός Ι (ΗΥ120)

ΠΕΡΙΣΣΟΤΕΡΑ ΠΑΡΑΔΕΙΓΜΑΤΑ ΜΕ ΧΡΗΣΗ ΣΥΝΑΡΤΗΣΕΩΝ. ΠΑΡ 1 ΔΙΑΒΑΣΜΑ-ΕΚΤΥΠΩΣΗ ΕΥΡΕΣΗ ΜΕΣΟΥ ΟΡΟΥ ΜΟΝΟΔΙΑΣΤΑΤΟΥ ΠΙΝΑΚΑ ΜΕ ΧΡΗΣΗ ΣΥΝΑΡΤΗΣΕΩΝ #include <stdio.

Η γλώσσα προγραμματισμού C

Κεφάλαιο : Επαναλήψεις (for, do-while)

Κατανεμημένος και Παράλληλος Προγραμματισμός. Εισαγωγή στο MPI. Εγκατάσταση MPICH σε ένα ΗΥ 6/3/2016

2ο σετ σημειώσεων. 1 Εντολές εκτέλεσης υπό συνθήκη. 19 Μαρτίου 2012

Στόχοι και αντικείμενο ενότητας. Πέρασμα Πίνακα σε Συνάρτηση (συν.) Πέρασμα Πίνακα σε Συνάρτηση. #8.. Ειδικά Θέματα Αλγορίθμων

Εισαγωγή στον προγραμματισμό. Τμήμα Πληροφορικής & Επικοινωνιών ΤΕΙ Σερρών Εργαστήριο 4

Προγραμματισμός Ι (ΗΥ120)

"ΓΛΩΣΣΑ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Η/Υ" (ΕΜ102), ΕΡΓΑΣΙΑ 1η

H ΓΛΩΣΣΑ C. Μάθηµα 17: Είσοδος/Έξοδος: Επικοινωνία µε το Λειτουργικό Σύστηµα. ηµήτρης Ψούνης

Οι εντολές ελέγχου της ροής ενός προγράμματος.

Κεφάλαιο 2.2 Δραστηριότητες

Δομημένος Προγραμματισμός. Τμήμα Επιχειρηματικού Σχεδιασμού και Πληροφοριακών Συστημάτων

Εκτέλεση της εντολής1 και στη συνέχεια εκτέλεση της ΕΝΟΤΗΤΑΣ και της εντολής2 όσο η ΣΥΝΘΗΚΗ είναι αληθής.

Σημειώσεις του εργαστηριακού μαθήματος Πληροφορική ΙΙ. Εισαγωγή στην γλώσσα προγραμματισμού

Θέµα 1 (15%): (απαιτούµενος χρόνος < 15 λεπτά)

Νικόλαος Μιχαλοδημητράκης Σημειώσεις C (Εργαστήριο) 5 ο Μέρος 5 ο Μέρος Εντολές Επανάληψης: FOR - WHILE. Περιγραφή

Εισαγωγή στις Συναρτήσεις

Transcript:

Εργαστήριο 8 Ασκήσεις Πινάκων Ταξινόμηση Αναζήτηση Γιώργος Λαμπρινίδης amprinidis@pharm.uoa.gr

Παραδείγματα στους πίνακες (1) Έστω ότι έχετε το εξής: int a[20]; for(i = 0; i < 20; i++) a[i] = i+1; Ποιες θα είναι οι τιμές των στοιχείων του πίνακα μετά τη for; 2

Παραδείγματα στους πίνακες (2) Έστω ότι έχουμε τον πίνακα του προηγούμενου παραδείγματος. Τι θα εκτυπώσει η παρακάτω εντολή; for(i = 0 ; i < 20; i++) prine( a[%d] = %d\n,i+1, a[i]); 3

Παραδείγματα στους πίνακες (3) Τι κάνει το ακόλουθο κομμάτι κώδικα; int i, temp, a[5]; for (i = 0; i < 4; i++) { if (a[i] > a[i+1]) { temp = a[i]; a[i] = a[i+1]; a[i+1] = temp; Βοήθεια: Σκεφτείτε ότι έχετε τον πίνακα a[5] = {5,1,3,6,4; και τρέξτε τον αλγόριθμο με το χέρι για να δείτε τι θα κάνει στην προκειμένη περίπτωση. Γιατί η for τρέχει μέχρι το 4 και όχι μέχρι το 5; 4

Πράξεις σε πίνακες Ταξινόμηση Αλγόριθμος bubbesort Αναζήτηση Σειριακή αναζήτηση Δυαδική αναζήτηση (δεν θα τη δούμε σε αυτό το εργαστήριο) 5

Ταξινόμηση στοιχείων πίνακα Είναι συχνό φαινόμενο να θέλουμε τα στοιχεία ενός πίνακα ταξινομημένα κατ αύξουσα σειρά. π.χ. αντί για τον πίνακα α[5] = {3,1,5,4,2; προτιμάμε τον πίνακα α[5] = {1,2,3,4,5; 6

Αλγόριθμος bubbesort για την ταξινόμηση στοιχείων πίνακα (1) Δίνουμε τη λογική του αλγορίθμου με ένα παράδειγμα: Έστω ότι θέλουμε να ταξινομήσουμε τον πίνακα με στοιχεία (5,1,4,2,8). Ο αλγόριθμος θα τρέξει ως εξής: 1 ο τρέξιμο: ( 5 1 4 2 8 ) ( 1 5 4 2 8 ) ( 1 5 4 2 8 ) ( 1 4 5 2 8 ) ( 1 4 5 2 8 ) ( 1 4 2 5 8 ) ( 1 4 2 5 8 ) ( 1 4 2 5 8 ) 2 ο τρέξιμο: ( 1 4 2 5 8 ) ( 1 4 2 5 8 ) ( 1 4 2 5 8 ) ( 1 2 4 5 8 ) ( 1 2 4 5 8 ) ( 1 2 4 5 8 ) ( 1 2 4 5 8 ) ( 1 2 4 5 8 ) 3 ο τρέξιμο: ( 1 2 4 5 8 ) ( 1 2 4 5 8 ) ( 1 2 4 5 8 ) ( 1 2 4 5 8 ) ( 1 2 4 5 8 ) ( 1 2 4 5 8 ) ( 1 2 4 5 8 ) ( 1 2 4 5 8 ) 7

Αλγόριθμος bubbesort για την ταξινόμηση στοιχείων πίνακα (2) int i, fag, temp, a[5]; a[5] = {5,1,4,2,8; do { fag = 0; for (i = 0; i < 4; i++) { if (a[i] > a[i+1]) { temp = a[i]; a[i] = a[i+1]; a[i+1] = temp; fag =1; whie (fag == 1); 8

Αναζήτηση στοιχείων πίνακα Γράψτε ένα πρόγραμμα σε C που να ορίζει αρχικοποιεί έναν πίνακα 10 ακεραίων με δικά σας στοιχεία. Στη συνέχεια, να διαβάζει ένα στοιχείο που δίνει ο χρήστης από το πληκτρολόγιο. Το πρόγραμμα να ψάχνει για το στοιχείο αυτό μέσα στον πίνακα. Αν το βρίσκει να ενημερώνει το χρήστη ότι βρέθηκε και σε ποια θέση. Αν δεν υπάρχει να ενημερώνει το χρήστη αντίστοιχα. 9

Λύση #incude <stdio.h> main() { int i, stoixeio, vrethike = 0; int a[10] = {2,56,9,34,44,21,90,78,45,5; prine("\ndwste to stoixeio pou anazitate:"); scanf("%d", &stoixeio); for (i = 0; i < 10; i++) { if (a[i] == stoixeio) { prine("\nvrethike to dothen stoixeio s thesi %d tou pinaka.", i); vrethike = 1; break; if (vrethike == 0) prine("\nto stoixeio pou dwsate den yparxei ston pinaka."); getchar(); getchar(); 10

Πρόβλημα 1 Γράψτε ένα πρόγραμμα σε C που να διαβάζει για 10 οπλίτες τα εξής στοιχεία: το σώμα κατάταξης (1 = στρατός, 2 = ναυτικό) και την ηλικία. Το πρόγραμμα να ελέγχει αν η ηλικία είναι στο διάστημα 17-40. Μόλις διαβάσει τα στοιχεία ενός οπλίτη, τοποθετεί την ηλικία του σε αντίστοιχο πίνακα ανάλογα με το σώμα που ανήκει και υπολογίζει τον μέσο όρο ηλικίας για το κάθε σώμα. 11

Λύση #incude <stdio.h> main() { int age, swma, i; int i_str = 0, i_naut = 0; int sum_str_age = 0; int sum_naut_age = 0; int str_age[10]; int naut_age[10]; doube mo_str_age; doube mo_naut_age; /*oi metavites aytes metroun posous opites exoume sto strato kai posous sto nay ko*/ /*athroisma iikiwn gia strato*/ /*athroisma iikiwn gia nau ko*/ /*pinakas me iikies gia strato*/ /*pinakas me iikies gia nau ko*/ /*mesos oros iikiwn gia strato*/ /*mesos oros iikiwn gia nau ko*/ for (i = 0; I < 10; i++) { do { prine("\ndwste to swma toy %doy opi (1,2): ", i); scanf("%d", &swma); whie (swma!= 1 && swma!= 2); /*eegxw o tha mou dwsei 1,2 aiws ksanazitw mi*/ do { prine("\ndwste n iikia toy %doy opi (17-40): ", i); scanf("%d", &age); whie (age < 17 age > 40); 12

Λύση (Συνέχεια) if (swma == 1) { str_age[i_str] = age; i_str++; sum_str_age += age; ese { naut_age[i_naut] = age; i_naut++; sum_naut_age += age; /* end of for */ mo_str_age = (doube) sum_str_age / (doube) i_str; mo_naut_age = (doube) sum_naut_age / (doube) i_naut; prine("\n%d opites sto strato me mesi iikia %.1f",i_str, mo_str_age); prine("\n%d opites sto nau ko me mesi iikia %.1f",i_naut, mo_naut_age); scanf("%d", &i); /* end of main */ 13

Πρόβλημα 2 Στο προηγούμενο πρόβλημα, να γίνει ταξινόμηση των οπλιτών που βρίσκονται στον στρατό (όχι σε άλλα σώματα), με βάση την ηλικία τους, κατά αύξουσα σειρά. 14

Λύση (Μόνο το κομμάτι της ταξινόμησης) do { fag = 0; for (i = 0; i < i_str-1; i++) { if (str_age[i] > str_age[i+1]) { temp = str_age[i]; str_age[i] = str_age[i+1]; str_age[i+1] = temp; whie (fag == 1); 15

Πρόβλημα 3 Στο προηγούμενο πρόβλημα, να διαβαστεί μία τιμή ηλικίας σε μία μεταβλητή και να βρεθεί αν υπάρχει οπλίτης που υπηρετεί στο ναυτικό, και έχει αυτή την ηλικία. 16

Λύση (Μόνο το κομμάτι της αναζήτησης) vrethike = 0; prine("\ndwste n iikia pou anazitate:"); scanf("%d", &iikia); for (i = 0; i < i_naut; i++) { if(naut_age[i] == iikia) { prine("\nvrethike s thesi %d tou pinaka.", i); vrethike = 1; break; if(vrethike == 0) prine("\h iikia pou dwsate den yparxei ston pinaka."); 17

Ασκήσεις Να διαβαστούν τα εισοδήματα 5 υπαλλήλων σε έναν πίνακα και να γίνει φθίνουσα ταξινόμηση των υπαλλήλων ως προς τα εισοδήματα τους. Να αρχικοποιηθεί ένας πίνακας με 10 βαθμούς. Στη συνέχεια, ο χρήστης να δίνει έναν βαθμό και να εμφανίζεται μήνυμα ανάλογο με το αν ο βαθμός βρέθηκε στον πίνακα η όχι (και αν ναι, που βρέθηκε). 18