C: Από τη Θεωρία στην Εφαρμογή



Σχετικά έγγραφα
#include <stdio.h> int main() { int i, a[] = {10, 20, 30, 40, 50}; double b[] = {2.2, 1.94, 0.5, -1, -2};

Η γλώσσα προγραμματισμού C Δυναμική διαχείριση μνήμης

Ι Αρχεία δεδομένων, μέρος δεύτερο: δυαδικά αρχεία ΙΙ Δομές δεδομένων (struct)

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

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

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

Δομές Δεδομένων (Εργ.) Ακ. Έτος Διδάσκων: Ευάγγελος Σπύρου. Εργαστήριο 3 Επανάληψη Γ μέρος

Προγραμματισμός ΙI (Θ)

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

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

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

scanf() scanf() stdin scanf() printf() int float double %lf float

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

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

Διάλεξη 8η: Αλφαριθμητικά (strings)

Στόχοι και αντικείμενο ενότητας. Τύπος πίνακα. Τύπος πίνακα (συν.) #6. Πίνακες και Δείκτες

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

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

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

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

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

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

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

Διάλεξη 18η: Διαχείρηση Αρχείων

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

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

Προγραμματισμός ΙI (E)

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

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

Πίνακες: μια σύντομη εισαγωγή. Πίνακες χαρακτήρων: τα "Αλφαριθμητικά"

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

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

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

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

Εργαστήριο 9: Αρχεία

ΑΡ Χ Ε Ι Α Κ Ε Ι Μ Ε Ν Ο Υ (text files)

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

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

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

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

Προγραμματισμός I (E)

ΑΡΧΕΙΑ ΚΕΙΜΕΝΟΥ ΣΤΗΝ C

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

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

ΑΡΧΕΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ

ΑΡΧΕΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ

Διάλεξη 11η: Δείκτες, μέρος 1

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

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

ΕΡΓΑΣΤΗΡΙΟ 5 ΣΗΜΕΙΩΣΕΙΣ

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

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

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

Κεφάλαιο Αλφαριθμητικές Σειρές Χαρακτήρων (Strings) (Διάλεξη 20) 1) Strings στη C

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

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

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

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

ΑΣΚΗΣΗ 1. Structural Programming

Δείκτες σε συναρτήσεις. Προγραμματισμός II 1

Συναρτήσεις διαχείρισης αλφαριθμητικών

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

Προγραμματισμός Υπολογιστών με C++

12. Συναρτήσεις (Μέρος ΙI)

Πανεπιστήµιο Θεσσαλίας, THMMY HY120, Σεπτέµβριος 2015 ΟΝΟΜΑΤΕΠΩΝΥΜΟ:

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

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

ΑΡΧΕΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ

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

που θα δώσει αποτέλεσµα 48, λόγω της αριστερής προσεταιριστικότητας των τελεστών / και *, ενώ η επιθυµητή αντικατάσταση θα ήταν η

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

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

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

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

int array[10]; double arr[5]; char pin[20]; Προγραµµατισµός Ι

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

Δυναμική δέσμευση και αποδέσμευση μνήμης. Προγραμματισμός II 1

Δομές δεδομένων (2) Αλγόριθμοι

(Κεφάλαιο 2.7 και 12) Αρχεία στην C. (Διάλεξη 15)

(Κεφάλαιο 2.7 και 12) Αρχεία στην C. ( ιάλεξη 13) ιδάσκων: ηµήτρης Ζεϊναλιπούρ

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

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

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

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

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

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

Προγραμματισμός Η/Υ. Ενότητα 6: Πίνακες και Δείκτες

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

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

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

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

Τμήμα Πληροφορικής & Επικοινωνιών Δρ. Θεόδωρος Γ. Λάντζος

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

Γ7.8 Εγγραφές (Structures) Γ Λυκείου Κατεύθυνσης

Ενώσεις δεδομένων Απαριθμητές Ψηφιακοί τελεστές Αναδρομικές συναρτήσεις

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

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

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

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

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

Transcript:

Δρ. Γ. Σ. Τσελίκης Δρ. Ν. Δ. Τσελίκας C: Από τη Θεωρία στην Εφαρμογή Ενδεικτικές Ασκήσεις από το Βιβλίο

C: Από τη Θεωρία στην Εφαρμογή (Γ. Σ. Τσελίκης Ν. Δ. Τσελίκας) Ενδεικτικές Ασκήσεις του Βιβλίου Ε.Α.1 Δημιουργήστε μία συνάρτηση που να δέχεται σαν παραμέτρους έναν πίνακα ακεραίων και έναν ακέραιο αριθμό και να επιστρέφει πόσες φορές περιέχεται αυτός ο αριθμός μέσα στον πίνακα. Να γραφεί ένα πρόγραμμα το οποίο να διαβάζει 10 ακεραίους αριθμούς και να τους αποθηκεύει σε έναν πίνακα ακεραίων. Στη συνέχεια, να διαβάζει έναν ακέραιο αριθμό και να εμφανίζει πόσες φορές περιέχεται αυτός ο αριθμός στον πίνακα με χρήση της συνάρτησης. #define SIZE 10 int find_num(int arr[],int val); int i,val,arr[size]; for(i = 0; i < SIZE; i++) printf("enter array element: "); scanf("%d",&arr[i]); printf("\nenter number to search: "); scanf("%d",&val); printf("%d is included %d times\n",val,find_num(arr,val)); int find_num(int arr[],int val) int i,counter = 0; for(i = 0; i < SIZE; i++) if(arr[i] == val) counter++; return counter;

Ενδεικτικές Ασκήσεις του Βιβλίου Ε.Α.2 Ποια είναι η έξοδος του παρακάτω προγράμματος? #include <string.h> char str[10]; printf("%s\n",strcpy(str,"abc") + 3); Απάντηση: Με την κλήση της συνάρτησης strcpy() αντιγράφεται στον πίνακα str το αλφαριθμητικό abc. Επίσης, η strcpy() επιστρέφει έναν δείκτη στο πρώτο στοιχείο του πίνακα str, δηλαδή στον χαρακτήρα 'a'. Επομένως, το πρόγραμμα εμφανίζει το τμήμα του αλφαριθμητικού που ξεκινάει από τη θέση str+3. Στη θέση αυτή όμως είναι αποθηκευμένος ο τερματικός χαρακτήρας '\0' του αλφαριθμητικού, άρα το πρόγραμμα δεν εμφανίζει τίποτα. Ε.Α.3 Ποια είναι η έξοδος του παρακάτω προγράμματος? int *ptr,arr[] = 10,20,30; ptr = arr + 2; *ptr = 5; printf("%d\n",*arr * arr[2]); Απάντηση: Με την εντολή ptr = arr + 2; ο δείκτης ptr δείχνει στη διεύθυνση του 3 ου στοιχείου του πίνακα, επομένως το *ptr είναι ίσο με το arr[2]. Άρα, η εντολή *ptr = 5; ισοδυναμεί με arr[2] = 5; Επίσης, αφού το *arr είναι ίσο με arr[0], το πρόγραμμα θα εμφανίσει την τιμή arr[0]*arr[2], δηλαδή το 50.

C: Από τη Θεωρία στην Εφαρμογή (Γ. Σ. Τσελίκης Ν. Δ. Τσελίκας) Ε.Α.4 Να ορίσετε μία δομή φοιτητή με πεδία: όνομα, επίθετο, αριθμός μητρώου και βαθμός. Να γραφεί ένα πρόγραμμα που να χρησιμοποιεί αυτή τη δομή για να εισάγει ο χρήστης στοιχεία 10 φοιτητών, τα οποία να αποθηκεύονται σε έναν πίνακα 10 τέτοιων δομών. Μετά την καταχώρηση των δεδομένων, το πρόγραμμα να διαβάζει ένα επίθετο και να εμφανίζει πόσοι φοιτητές έχουν το ίδιο επίθετο, καθώς και τον αριθμό μητρώου και τον βαθμό τους. #include <string.h> #define MAX_STUDS 10 struct student char fname[30]; /* Μικρό όνομα μέχρι 30 χαρακτήρες. */ char lname[50]; /* Επίθετο μέχρι 50 χαρακτήρες. */ int code; /* Αριθμός μητρώου. */ float grade; /* Βαθμός. */ ; int i,num; char lname[50]; struct student studs[max_studs]; /* Πίνακας δομών. */ num = 0; for(i = 0; i < MAX_STUDS; i++) printf("\n***** Enter student data:\n"); printf("first name: "); scanf("%s",studs[i].fname); printf("last name: "); scanf("%s",studs[i].lname); printf("code: "); scanf("%d",&studs[i].code); printf("grade [0-10]: "); scanf("%f",&studs[i].grade); printf("\nlast name to search: "); scanf("%s",lname);

Ενδεικτικές Ασκήσεις του Βιβλίου for(i = 0; i < MAX_STUDS; i++) if(strcmp(studs[i].lname,lname) == 0) printf("code: %d\tgrade: %.2f\n", studs[i].code,studs[i].grade); num++; printf("\n%d students with name = %s\n",num,lname); Ε.Α.5 Θεωρείστε ότι κάθε γραμμή του αρχείου κειμένου students.txt περιέχει τον αριθμό μητρώου, το όνομα (μέχρι 30 χαρακτήρες), το επίθετο (μέχρι 50 χαρακτήρες) και τον βαθμό ενός φοιτητή. Να γραφεί ένα πρόγραμμα το οποίο να διαβάζει τη βάση της βαθμολογίας, η οποία πρέπει να ανήκει στο διάστημα [0-10], και να εμφανίζει τα στοιχεία των φοιτητών που έχουν μεγαλύτερο ή ίσο βαθμό από αυτή την τιμή, καθώς και πόσοι είναι αυτοί οι φοιτητές. #include <string.h> #include <stdlib.h> FILE* fp; int code,pass_studs; float base,grade; char fname[30],lname[50]; fp = fopen("students.txt","r"); if(fp == NULL) printf("error: File can not be loaded\n"); exit(1); do printf("enter grade in [0-10]: "); scanf("%f",&base); while(base < 0 base > 10); printf("\ncode\t\tname\t\t\tgrade\n"); printf("---------------------------------------------\n");

C: Από τη Θεωρία στην Εφαρμογή (Γ. Σ. Τσελίκης Ν. Δ. Τσελίκας) pass_studs = 0; /* Αριθμός επιτυχόντων φοιτητών. */ while(1) if(fscanf(fp,"%d%s%s%f",&code,lname,fname,&grade)!= 4) /* Ο αριθμός των πεδίων που πρέπει να διαβάζονται σωστά από κάθε γραμμή του αρχείου είναι 4. Αν συμβεί κάποιο λάθος στο διάβασμα των πεδίων κάποιας γραμμής ή αν φτάσουμε στο τέλος του αρχείου, τότε η τιμή επιστροφής της fscanf() δεν είναι ίση με 4. */ if(feof(fp) == 0) /* Η συνάρτηση feof() επιστρέφει μη μηδενική τιμή αν έχουμε φτάσει στο τέλος του αρχείου. */ printf("error: File read operation\n"); else /* Τέλος αρχείου. */ printf("%d students succeeded \n", pass_studs); break; /* Τερματισμός του ατέρμονου βρόχου. */ if(grade >= base) pass_studs++; printf("%d\t\t%s%s\t\t\t%.2f\n", code,fname,lname,grade); fclose(fp);