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

Σχετικά έγγραφα
ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ Ακαδημαϊκό έτος ΤΕΤΡΑΔΙΟ ΕΡΓΑΣΤΗΡΙΟΥ #4

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

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

Προγραμματισμό για ΗΜΥ

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

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

ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ Ανώτατο Εκπαιδευτικό Ίδρυμα Πειραιά Τεχνολογικού Τομέα. Εισαγωγή στον Προγραμματισμό. Ενότητα 8: Συναρτήσεις. Κ.

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

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

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

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

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

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

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

Κεφάλαιο V: Δομές και ενώσεις. 5.1 Δομές.

Προγραμματισμός Η/Υ (ΤΛ2007 )

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

ΑΤΣΑΛΑΚΗ ΞΑΝΘΟΥΛΑ ΕΡΓΑΣΤΗΡΙΟ 2

Εισαγωγή στην C. Μορφή Προγράµµατος σε γλώσσα C

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

ΕΡΓΑΣΤΗΡΙΟ 1 - ΣΗΜΕΙΩΣΕΙΣ

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

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

Ανάπτυξη Μεγάλων Εφαρµογών στη Γλώσσα C (2)

ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ Ανώτατο Εκπαιδευτικό Ίδρυμα Πειραιά Τεχνολογικού Τομέα. Εισαγωγή στον Προγραμματισμό. Ενότητα 9: Συναρτήσεις Εμβέλεια

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

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

Στην ενότητα αυτή θα µελετηθούν τα εξής επιµέρους θέµατα: ΕΠΛ 131 Αρχές Προγραµµατισµού I 3-2

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

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

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

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

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΥΠΟΛΟΓΙΣΤΩΝ & ΥΠΟΛΟΓΙΣΤΙΚΗ ΦΥΣΙΚΗ ΕΞΕΤΑΣΗ IOYNIOY 2018 ΘΕΜΑΤΑ Α ΟΝΟΜΑΤΕΠΩΝΥΜΟ:... ΑΕΜ: ΕΞΑΜΗΝΟ:

ΓΛΩΣΣΕΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Η/Υ 8/9/2008

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

Εισαγωγή στον Προγραμματισμό (με. τη C)

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

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

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

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΥΠΟΛΟΓΙΣΤΩΝ & ΥΠΟΛΟΓΙΣΤΙΚΗ ΦΥΣΙΚΗ

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

Προγραμματισμός Η/Υ (ΤΛ2007 )

Κεφάλαιο 8.7. Πολυδιάστατοι Πίνακες (Διάλεξη 19)

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

Περιεχόμενα. Πρόλογος... 21

Α' Εξάμηνο ΕΙΣΑΓΩΓΗ ΣΤΟ ΔΟΜΗΜΕΝΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ

ΕΡΓΑΣΤΗΡΙΟ 1 ΕΙΣΑΓΩΓΗ ΣΤΗ C. Τµήµα Πληροφορικής και Τηλεπικοινωνιών

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

#include <stdlib.h> Α. [-128,127] Β. [-127,128] Γ. [-128,128]

Προγραμματισμός Υπολογιστών & Υπολογιστική Φυσική

Κεφάλαιο : Εισαγωγή στην C. ( ιαλέξεις 3-4) ιδάσκων: ηµήτρης Ζεϊναλιπούρ

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

Κεφάλαιο : Εισαγωγή στην C: (Διαλέξεις 3-4)

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

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

Επεξεργασία Αρχείων Κειµένου

ΣΤΟΙΒΕΣ (stacks) Σχήµα: Λειτουργία Στοίβας

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

C Programming EPL032 Maria Stavrinou Ioannou Εισαγωγή στη Γλώσσα C

Δομημένος Προγραμματισμός (ΤΛ1006)

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

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

Εισαγωγή στον Προγραµµατισµό. Διάλεξη 2 η : Βασικές Έννοιες της γλώσσας προγραµµατισµού C Χειµερινό Εξάµηνο 2011

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

Τεχνολογία και Προγραμματισμός Υπολογιστών. Η γλώσσα προγραμματισμού C

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

ΣΥΝΑΡΤΗΣΕΙΣ Παραδείγματα χρήσης συναρτήσεων

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

Η-Υ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ. Εργαστήριο 1 Εισαγωγή στη C. Σοφία Μπαλτζή s.mpaltzi@di.uoa.gr

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

Α Β Γ static; printf("%c\n", putchar( A +1)+2); B DB BD. int i = 0; while (++i); printf("*");

Δομημένος Προγραμματισμός (ΤΛ1006)

ΑΣΚΗΣΗ 1: TO ΠΕΡΙΒΑΛΛΟΝ ΕΡΓΑΣΙΑΣ DEV-C++

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

Διάλεξη 2η: Αλγόριθμοι και Προγράμματα

ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ Ανώτατο Εκπαιδευτικό Ίδρυμα Πειραιά Τεχνολογικού Τομέα. Εισαγωγή στον Προγραμματισμό. Ενότητα 4: Έλεγχος Ροής. Κ.

ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ Ανώτατο Εκπαιδευτικό Ίδρυμα Πειραιά Τεχνολογικού Τομέα. Εισαγωγή στον Προγραμματισμό. Ενότητα 6: Πίνακες. Κ.

3. ΕΝΤΟΛΕΣ ΕΛΕΓΧΟΥ (Β' μέρος: switch και :? )

Π. Σταθοπούλου ή Οµάδα Α (Φοιτητές µε µονό αριθµό Μητρώου ) ιδασκαλία : Παρασκευή 11πµ-13µµ ΗΛ7

ΣΥΝΑΡΤΗΣΕΙΣ (Functions)

ΕΠΛ 034: Εισαγωγήστον ΠρογραµµατισµόγιαΗΜΥ

Προγραμματισμός Ι. Είσοδος/Έξοδος. Δημήτρης Μιχαήλ. Ακ. Έτος Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο

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

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

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

Κεφάλαιο 3.1, : Συναρτήσεις I. ( ιάλεξη 11) ιδάσκων: ηµήτρης Ζεϊναλιπούρ

Προγραμματισμός II (Γλώσσα C)

ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ. Στην εξοικείωση με τη διαδικασία κατασκευής ενός Λεξικού Αναλυτή κάνοντας χρήση του lex.

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΥΠΟΛΟΓΙΣΤΩΝ & ΥΠΟΛΟΓΙΣΤΙΚΗ ΦΥΣΙΚΗ

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

ΕΠΛ 032.3: Προγραµµατισµός ΜεθόδωνΕπίλυσηςΠροβληµάτων

Προγραμματισμός Ι. Δυναμική Διαχείριση Μνήμης. Δημήτρης Μιχαήλ. Ακ. Έτος Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο

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

Κεφάλαιο 3.1, : Συναρτήσεις I. (Διάλεξη 11)

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

Προγραμματισμός Ι. Θεματική ενότητα 8: Δημιουργία προγραμμάτων

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

Παραδείγματα. Γράψτε ένα πρόγραμμα που να τυπώνει τη μέση τιμή ενός συνόλου μη αρνητικών αριθμών

ΘΕΜΑΤΑ ΕΞΕΤΑΣΗΣ ΚΑΙ ΑΠΑΝΤΗΣΕΙΣ ΤΟΥΣ

Προγραμματισμός Η/Υ (ΤΛ2007 )

Transcript:

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ Ακαδηµαϊκό έτος 2003-2004 ΑΣΚΗΣΗ #5 Προτεινόµενη λύση Θέµα 1 /* Προγραµµατιστής : Ηµεροµηνία συγγραφής : Λειτουργία Προγράµµατος : Πρόγραµµα για την αποθήκευση και ανάκτηση βαθµολογιών φοιτητών */ /*Ορισµός της βιβλιοθήκης συναρτήσεων εισόδου-εξόδου*/ #include <stdio.h> #define SIZE 10 φοιτητών στον πίνακα #define FIRST_AM 20040 // Ορισµός του µέγιστου αριθµού // Ορισµός του πρώτου ΑΜ struct Student // Ορισµός του Struct "Student" int AM; char Onoma[15]; char Eponimo[40]; int Vathm_The; int Vathm_Erg; int Vathm_Dia; students[size]; // Ορισµός του πίνακα students // ήλωση των συναρτήσεων που θα οριστούν αργότερα στο πρόγραµµα int insertstudent(); void insertgrades(); int displaygrades(); void sortbygrade(int vath,int sorted[]); void printreports(); // ήλωση µεταβλητών int LastUsedAM=FIRST_AM; int NumberOfStudents=0; int main(void) char ch; do // Εµφάνιση των αρχικών επιλογών printf(" MAIN MENU\n"); printf("====================\n"); printf("1.eisagwgh FOITHTH.\n"); printf("2.eisagwgh BATHMWN.\n"); printf("3.emfanish BATHMWN.\n");

printf("4.ektypwseis.\n"); printf("0.exodos.\n"); ch=getch(); // Είσοδος επιλογής από τον χρήστη // Εκτέλεση της κατάλληλης συνάρτησης ανάλογα µε την επιλογή του χρήστη switch(ch) case '0': // Έξοδος από το πρόγραµµα case '1': // Εισαγωγή φοιτητή insertstudent(); case '2': // Εισαγωγή βαθµών insertgrades(); case '3': // Εµφάνιση βαθµών displaygrades(); case '4': // Εκτυπώσεις (στην οθόνη) printreports(); default: // Αν έχει εισαχθεί κάποια πλήκτρο που δεν αντιστοιχεί PALI.\n"); ; // στις παραπάνω επιλογές printf("lathps EPILOGI! PROSPATHISTE while(ch!='0'); // Αν το ch είναι µηδέν, τότε τελειώνει το πρόγραµµα return 0; int insertstudent() //Έλεγχος για το αν είναι γεµάτος ο πίνακας if (NumberOfStudents>=SIZE) printf("o PINAKAS EINAI GEMATOS!\n\n"); // Έξοδος από την συνάρτηση, και επιστρέφει την τιµή 1 return 1; printf("=====================\n"); printf("eisagvgh NEOU FOITHTH\n"); printf("=====================\n"); printf("onama : "); scanf("%s",students[numberofstudents].onoma); printf("eponimo : "); scanf("%s",students[numberofstudents].eponimo); students[numberofstudents].am=lastusedam;

NumberOfStudents++; LastUsedAM++; printf("h EISAGWGH EGINE EPITYXWS!\n\n"); // Έξοδος από την συνάρτηση, και επιστρέφει την τιµή 0 return 0; void insertgrades() int am=0; int ch; 10 /* Η µεταβλητή TempVathmos, είναι βοηθητική µεταβλητή, που θα χρησιµοποιηθεί για τον έλεγχο αν ο βαθµός που εισάγει ο χρήστης είναι θετικός και µικρότερος του πριν τον αποθηκεύσει στον πίνακα.*/ int TempVathmos; do printf("eisagvgh BATHMWN\n"); printf("1.bathmos THEORIAS\n"); printf("2.bathmos ERGASTHRIOY\n"); printf("3.bathmos DIAGVNISMATOS\n"); printf("0.epistrofh\n"); ch=getch(); // Είσοδος επιλογής από τον χρήστη switch(ch) case '0': case '1': printf("dose AM FOITHTH :"); scanf("%d",&am); am-=first_am; Α.Μ. TETOIO AM!\n"); // Έλεγχος για το αν υπάρχει το if (!(am>=0 && am<numberofstudents)) printf("den YPARXEI FOITHTHS ME printf("bathmos THEWRIAS: "); scanf("%d",&tempvathmos); βαθµός εντός των επιτρεπτών ορίων // Έλεγχος για το αν είναι ο if (TempVathmos<0)

printf ("O VATHMOS DEN MPOREI NA EINAI MIKROTEROS APO TO 0 KAI GI'AFTO DEN THA else if (TempVathmos>10) printf ("O VATHMOS DEN MPOREI NA EINAI MEGALYSTEROS APO TO 10 KAI GI'AFTO DEN THA else students[am].vathm_the=tempvathmos; case '2': printf("dose AM FOITHTH :"); scanf("%d",&am); am-=first_am; TETOIO AM!\n"); if (!(am>=0 && am<numberofstudents)) printf("den YPARXEI FOITHTHS ME printf("bathmos ERGASTHRIOY: "); scanf("%d",&tempvathmos); if (TempVathmos<0) printf ("O VATHMOS DEN MPOREI NA EINAI MIKROTEROS APO TO 0 KAI GI'AFTO DEN THA else if (TempVathmos>10) printf ("O VATHMOS DEN MPOREI NA EINAI MEGALYSTEROS APO TO 10 KAI GI'AFTO DEN THA else students[am].vathm_erg=tempvathmos; case '3': printf("dose AM FOITHTH :"); scanf("%d",&am); am-=first_am; TETOIO AM!\n"); if (!(am>=0 && am<numberofstudents)) printf("den YPARXEI FOITHTHS ME printf("bathmos DIAGVNISMATOS: "); scanf("%d",&tempvathmos); if (TempVathmos<0) printf ("O VATHMOS DEN MPOREI NA EINAI MIKROTEROS APO TO 0 KAI GI'AFTO DEN THA else if (TempVathmos>10)

printf ("O VATHMOS DEN MPOREI NA EINAI MEGALYSTEROS APO TO 10 KAI GI'AFTO DEN THA else students[am].vathm_dia=tempvathmos; default: PALI.\n"); ; while (ch!='0'); int displaygrades() βαθµών int am=0; printf("lathps EPILOGI! PROSPATHISTE // Συνάρτηση για την εµφάνιση των printf("emfanish BATHMWN\n"); printf("dose AM FOITHTH :"); scanf("%d",&am); am-=first_am; if (!(am>=0 && am<numberofstudents)) printf("den YPARXEI FOITHTHS ME TETOIO AM!\n"); return 1; printf("am :%d\n",students[am].am); printf("onoma :%s\n",students[am].onoma); printf("eponimo :%s\n",students[am].eponimo); printf("bathmos THEWRIAS :%2d\n",students[am].Vathm_The); printf("bathmos ERGASTHRIOY :%2d\n",students[am].Vathm_Erg); printf("bathmos DIAGVNISMATOS:%2d\n",students[am].Vathm_Dia); printf("=========================\n"); printf("telikos BATHMOS :%4.1f\n",(students[am].Vathm_Dia+ students[am].vathm_erg+ students[am].vathm_the)/3.0f); return 0; void sortbygrade(int vath,int sorted[]) ταξινόµηση int min_vath=1000; int i,j,t; // Συνάρτηση για την sorted[i]=i;

if (vath==1) min_vath=students[sorted[i]].vathm_the; if (students[sorted[j]].vathm_the<min_vath) min_vath=students[sorted[j]].vathm_the; for (j=i+1;j<numberofstudents;j++) t=sorted[i]; sorted[i]=sorted[j]; sorted[j]=t; else if (vath==2) min_vath=students[sorted[i]].vathm_erg; for (j=i+1;j<numberofstudents;j++) if (students[sorted[j]].vathm_erg<min_vath) min_vath=students[sorted[j]].vathm_erg; t=sorted[i]; sorted[i]=sorted[j]; sorted[j]=t; else min_vath=students[sorted[i]].vathm_dia; for (j=i+1;j<numberofstudents;j++) if (students[sorted[j]].vathm_dia<min_vath) min_vath=students[sorted[j]].vathm_dia; t=sorted[i]; sorted[i]=sorted[j]; sorted[j]=t;

void printreports() int sortorder[size]; int ch; int i; do printf("ekthpwseis\n"); printf("1.kata AM\n"); printf("2.kata BATHMO THEWRIAS\n"); printf("3.kata BATHMO ERGAS\n"); printf("4.kata BATHMO DIAG\n"); printf("0.epistrofh\n"); ch=getch(); PALI.\n"); switch(ch) case '0': continue; case '1': sortorder[i]=i; case '2': sortbygrade(1,sortorder); case '3': sortbygrade(2,sortorder); case '4': sortbygrade(3,sortorder); default: printf("lathps EPILOGI! PROSPATHISTE ; continue; printf("%-5s ","AM"); printf("%-10s ","ONOMA"); printf("%-20s ","EPONIMO"); printf("%-9s ","VATHM_THE"); printf("%-9s ","VATHM_ERG"); printf("%-9s\n","vathm_dia");

printf("%-5d ",students[sortorder[i]].am); printf("%-10s ",students[sortorder[i]].onoma); printf("%-20s ",students[sortorder[i]].eponimo); printf("%-9d ",students[sortorder[i]].vathm_the); printf("%-9d ",students[sortorder[i]].vathm_erg); printf("%-9d ",students[sortorder[i]].vathm_dia); while (ch!='0'); Παρατήρηση: Το παραπάνω πρόγραµµα µεταγλωττίστηκε µε την χρήση του προγράµµατος GCC το οποίο βρίσκεται στο συνοδευτικό CD του βιβλίου του µαθήµατος. Στην περίπτωση που θελήσει κάποιος να το µεταγλωττίσει µε το CYGWIN, πρέπει να αντικαταστήσει το getch µε το getchar αν του βγάλει λάθος στην µεταγλώττιση.

Στην συνέχεια παρατίθονται µερικά στιγµιαιότυπα (screenshots) από την εκτέλεση του προγράµµατος