Τμ. Τεχνολογίας Πληροφορικής & Τηλεπικοινωνιών Α Εξεταστική Περίοδος, 5 Φεβρουαρίου 2009 ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΙΙ Ηλίας. Κ. Σάββας

Σχετικά έγγραφα
Τμ. Τεχνολογίας Πληροφορικής & Τηλεπικοινωνιών Α Εξεταστική Περίοδος, 25 Ιουνίου 2009 ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΙΙ Ηλίας. Κ. Σάββας

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; }

ΤΕΙ Θεσσαλίας, Τμήμα Μηχανικών Πληροφορικής ΤΕ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΗΥ ΕΡΓΑΣΤΗΡΙΟ 9. ΑΣΚΗΣΕΙΣ (με ενδεικτική λύση)

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

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

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

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

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

ΛΙΣΤΕΣ. Ορισμός ΑΤΔ Λίστα ΑΤΔ Ακολουθιακή Λίστα Διαχείριση Δεικτών και Λιστών στη C ΑΤΔ Συνδεδεμένη Λίστα. Εφαρμογές και Χρήση Λιστών

ΠΙ Ν Α Κ Ε Σ (arrays)

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

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

Αλγόριθμοι Ταξινόμησης Μέρος 1

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

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

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

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

Τμήμα Τεχνολογίας Πληροφορικής και Τηλεπικοινωνιών / ΤΕΙ Λάρισας Προγραμματισμός ΙI

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

ΕΛΛΗΝΙΚΟ ΑΝΟΙΚΤΟ ΠΑΝΕΠΙΣΤΗΜΙΟ

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

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

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

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

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

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

Αʹ. Πίνακες. Άσκηση 1. Λύση. Άσκηση 2. Λύση. Ασκήσεις Εργαστηρίου Προγραμματισμού

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

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

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

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

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

Διάλεξη 13: Δομές Δεδομένων ΙΙ (Ταξινομημένες Λίστες)

Ορισμός μεταβλητών δεικτών και αρχικοποίηση

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

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

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

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

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

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

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

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

ΣΥΜΒΟΛΟΣΕΙΡΕΣ (Strings) Ο ΑΤΔ Συµβολοσειρά Μία συµβολοσειρά είναι µία ακολουθία χαρακτήρων. Bασικές πράξεις : 1. Δηµιουργία. 2. Μήκος. 3.

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

Ενότητα 4: «Εισαγωγή στον Προγραμματισμό. Τα πρώτα προγράμματα σε γλώσσα C»

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

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

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

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

υναµικές οµές εδοµένων (συν.) Στην ενότητα αυτή θα µελετηθούν τα εξής επιµέρους θέµατα:

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

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

Ουρές (Queues) FIFO A B C. Διαγραφή. Εισαγωγή. εµπρός. πίσω. πίσω. πίσω

Α' Εξάμηνο ΕΙΣΑΓΩΓΗ ΣΤΟ ΔΟΜΗΜΕΝΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ. Ασκήσεις Επανάληψης

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

Ανάπτυξη και Σχεδίαση Λογισμικού

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

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

Εισαγωγή στον δομημένο προγραμματισμό

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

οµές (structures) Στην ενότητα αυτή θα µελετηθούν τα εξής επιµέρους θέµατα: Πίνακες δοµών, δείκτες σε δοµές, και αυτοαναφορικές δοµές.

ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ Ενδεικτικές Απαντήσεις Εξετάσεων Α' Περιόδου Θέµα 1. (α') 2 - ii 3 - iii 4 - iv

Εισαγωγή στον δομημένο προγραμματισμό

ΕΡΓΑΣΤΗΡΙΑΚΕΣ ΑΣΚΗΣΕΙΣ C ΣΕΙΡΑ 2 η

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

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

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

Δρ. Πέτρος Παναγή B123

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

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

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

Πίνακες. Χρησιμοποιούνται για αποθήκευση συνόλου δεδομένων του ίδιου τύπου. Γραμμική Διάταξη Δήλωση Τύπος Δεδομένων ΌνομαΠίνακα[ length ]

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

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

Η γλώσσα προγραμματισμού C Οι συναρτήσεις στη C (2)

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

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

ΕΡΓΑΣΤΗΡΙΑΚΕΣ ΑΣΚΗΣΕΙΣ C ΣΕΙΡΑ 3 η

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

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

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

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

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

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

ΕΛΛΗΝΙΚΟ ΑΝΟΙΚΤΟ ΠΑΝΕΠΙΣΤΗΜΙΟ

Προγραµµατισµός Ι Εργαστήριο 13ο Ακαδ. Έτος ΕΡΓΑΣΤΗΡΙΟ 13 ΕΡΓΑΣΤΗΡΙΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ I, ΑΚΑΔΗΜΑΪΚΟ ΕΤΟΣ

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

Εισαγωγή στον Προγραµµατισµό. Πανεπιστήµιο Θεσσαλίας Τµήµα Ηλεκτρολόγων Μηχανικών και Μηχανικών Η/Υ

Απάντηση. // We write in a header file named my_header.h #ifndef my_header_h #define my_header_h #define divides(x,y) (((y)%(x)==0)?

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

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

Η γλώσσα προγραμματισμού C Οι συναρτήσεις στη C (2)

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

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

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

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

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

Εισαγωγή στην πληροφορική

Εισαγωγή στον Προγραµµατισµό. Διάλεξη 8 η : Συναρτήσεις Χειµερινό Εξάµηνο 2011

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

Transcript:

TEI Λάρισας / ΣΤΕΦ Τμ. Τεχνολογίας Πληροφορικής & Τηλεπικοινωνιών Α Εξεταστική Περίοδος, 5 Φεβρουαρίου 2009 ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΙΙ Ηλίας. Κ. Σάββας Α 1) Να δημιουργήσετε ένα header file με όνομα max_min.h στο οποίο με χρήση των αντίστοιχων συναρτήσεων να βρίσκει τις θέσεις του μεγαλύτερου και μικρότερου στοιχείου κάποιου μονοδιάστατου πίνακα. Τέλος, να γράψετε ένα πολύ απλό πρόγραμμα που να δείχνει την χρήση αυτού του header file (3 μονάδες). /* max_min.h */ int megisto(int *, int); int elaxisto(int *, int); int megisto(int *A, int N) int i, thesi =0; for (i=0; i<n; i++) if (A[thesi] < A[i]) thesi = i; return thesi; int elaxisto(int *A, int N) int i, thesi =0; for (i=0; i<n; i++) if (A[thesi] > A[i]) thesi = i; 1

return thesi; #include "max_min.h" #define N 4 int main() int A[N] = 5, 2, -5, 1; int meg, mik; meg = megisto(a, N); mik = elaxisto(a, N); printf("\n Thesi megistou = %d", meg); printf("\n Thesi elaxistou = %d", mik); return 0; 2) Να γίνει πρόγραμμα που με την βοήθεια μίας αναδρομικής συνάρτησης να υπολογίζει τo πολυώνυμο του Hermite, το οποίο ορίζεται ως εξής: εάν H 0 (x)=1, H 1 (x)=2x,, H Ν (x)=2xh Ν-1 (x)-2(ν-1)h Ν-2 (x) (3 μονάδες). long Hermite(int N, int x); main() int n,x; long h; 2

printf("\nείσοδος N όρου :"); scanf("%d",&n); printf("\nείσοδος μεταβλητής :"); scanf("%d",&x); h=hermite(n,x); printf("\n\nhermite :%10d\n\n",h); long Hermite(int a, int b) if (a==0) else if (a==1) return 2*b; else return 2*b*Hermite(a-1,b) 2*(a-1)*Hermite(a- 2,b); 3) Έστω ότι υπάρχει ένα binary file με δομή int x, int y, int z όπου x, y, z αναπαριστούν συντεταγμένες σημείων και όνομα <synt.dat>. Να γράψετε ένα πρόγραμμα το οποίο a) θα φορτώνει το αρχείο σε ένα πίνακα, β) θα ταξινομεί τον πίνακα με κλειδί το x, γ) θα επιστρέφει τον πίνακα στο αρχείο (καταστρέφοντας το παλιό) και δ) θα εκτυπώνει τον ταξινομημένο πίνακα καθώς επίσης και το πλήθος των σημείων (4 μονάδες). #include <stdlib.h> 3

struct Domi int x; int y; int z; ; int main() FILE *f; struct Domi *P; struct Domi temp; int megethos, i, j, t; f = fopen("synt.dat", "rb"); if (!f ) printf("\n To arxeio den vrethike..."); /* A Erotima */ fseek(f, 0, SEEK_END); megethos = ftell(f) / sizeof(struct Domi); fseek(f, 0, SEEK_SET); P = malloc(megethos * sizeof(struct Domi)); if (! P ) printf("\n Adynati desmeusi mnimis..."); for (i=0; i<megethos; i++) fread(&p[i], sizeof(struct Domi), 1, f); fclose(f); 4

/* B Erotima */ for (i=0; i<megethos-1; i++) t = i; for (j=i+1; j<megethos; j++) if (P[t].x > P[j].x) t = j; temp = P[t]; P[t] = P[i]; P[i] = temp; /* C Erotima */ f = fopen("synt.dat", "wb"); for (i=0; i<megethos; i++) fwrite(&p[i], sizeof(struct Domi), 1, f); /* D Erotima */ printf("\n Plithos simion = %d", megethos); for (i=0; i<megethos; i++) printf("\n %d %d %d", P[i].x,P[i].y,P[i].z); return 0; 5

TEI Λάρισας / ΣΤΕΦ Τμ. Τεχνολογίας Πληροφορικής & Τηλεπικοινωνιών Α Εξεταστική Περίοδος, 5 Φεβρουαρίου 2009 ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΙΙ Ηλίας. Κ. Σάββας B 1) Να δημιουργήσετε ένα header file με όνομα sort.h το οποίο με χρήση συνάρτησης να ταξινομεί κάποιον πίνακα. Τέλος, να γράψετε ένα πολύ απλό πρόγραμμα που να δείχνει την χρήση αυτού του header file (3 μονάδες). /* sort.h */ void taxinomisi(int *, int); void taxinomisi(int *A, int N) int i, j, t, temp; for (i=0; i<n-1; i++) t = i; for (j=i+1; j<n; j++) if (A[t] > A[j]) t = j; temp = A[t]; A[t] = A[i]; A[i] = temp; #include "sort.h" #define N 10 int main() 6

int A[N] = 5, 2, -5, 1, 7, 3, 6, 8, -4, 5; int i; taxinomisi(a, N); for (i=0; i<n; i++) printf("\n %d", A[i]); return 0; 2) Να γίνει πρόγραμμα που να υπολογίζει την παράσταση N! M!( N M )! κάνοντας χρήση αναδρομικής συνάρτησης για τον υπολογισμό το παραγοντικού (3 μονάδες). long parag(int); int main() int N, M; long apot; printf("\neisagogi N:"); scanf("%d", &N); printf("\neisagogi M:"); scanf("%d", &M); apot = parag(n) / (parag(m) * parag(n-m)); printf("\n\napotelesma = %d", apot); return 0; 7

long parag(int x) if (x<=1) else return x * parag(x-1); 3) Έστω ότι υπάρχει ένα binary file με δομή int x, int y, int z όπου x, y, z αναπαριστούν συντεταγμένες σημείων και όνομα <synt.dat>. Να γράψετε ένα πρόγραμμα το οποίο a) θα φορτώνει το αρχείο σε ένα πίνακα αλλά μόνο εκείνα τα σημεία για τα οποία καμία συντεταγμένη δεν είναι μηδενική, β) θα επιστρέφει τον πίνακα σε ένα νέο αρχείο με όνομα <synt2.dat>, γ) θα μετράει το πλήθος των σημείων τα οποία έχουν όλες τις συντεταγμένες ίσες και τέλος δ) θα εκτυπώνει το αρχείο <synt2.dat> καθώς επίσης και το πλήθος των σημείων του αρχείου (4 μονάδες). #include <stdlib.h> struct Domi int x; int y; int z; ; int main() FILE *f, *s; struct Domi *P; struct Domi temp; 8

int megethos, i, j, t, c=0, cc=0; f = fopen("synt.dat", "rb"); if (!f ) printf("\n To arxeio den vrethike..."); /* A Erotima */ fseek(f, 0, SEEK_END); megethos = ftell(f) / sizeof(struct Domi); fseek(f, 0, SEEK_SET); P = malloc(megethos * sizeof(struct Domi)); if (! P ) printf("\n Adynati desmeusi mnimis..."); for (i=0; i<megethos; i++) fread(&temp, sizeof(struct Domi), 1, f); if (temp.x!=0 && temp.y!=0 && temp.z!=0 ) P[c] = temp; c++; fclose(f); /* B Erotima */ s = fopen("synt2.dat", "wb"); for (i=0; i<c; i++) fwrite(&p[i], sizeof(struct Domi), 1, s); fclose(s); /* C Erotima */ 9

cc = 0; f = fopen("synt.dat", "rb"); for (i=0; i<megethos; i++) fread(&temp, sizeof(struct Domi), 1, f); if (temp.x == temp.y!=0 && temp.y == temp.z ) cc++; fclose(f); printf("\nplithos seimion me ises syntetagmenes = %d", cc); /* D Erotima */ printf("\n Plithos simion = %d", c); f = fopen("synt2.dat", "rb"); for (i=0; i<c; i++) fread(&temp, sizeof(struct Domi), 1, f); printf("\n %d %d %d", P[i].x,P[i].y,P[i].z); return 0; 10