TEI Λάρισας / ΣΤΕΦ Τμ. Τεχνολογίας Πληροφορικής & Τηλεπικοινωνιών B Εξεταστική Περίοδος, 19 Φεβρουαρίου 2009 ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Ι Ηλίας. Κ. Σάββας Α 1) Να γράψετε ένα πρόγραμμα το οποίο να γεμίζει ένα ακέραιο πίνακα 100 θέσεων, έστω Α, με το άθροισμα των διαιρετών του κάθε δείκτη του και στην συνέχεια να τον εκτυπώνει μαζί με τον αντίστοιχο δείκτη (δηλαδή, στην θέση 8 του πίνακα να εισαχθεί το 1+2+4+8=15, Α 8 =15 όπου 1, 2, 4 και 8 είναι διαιρέτες του 8) (3 μονάδες). #define N 100 int A[N]; int i; int d; /* Πιθανοί διαιρέτες */ int S; 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; 1
printf("\n %d - %d", i, A[i]); 2) Να γίνει πρόγραμμα στο οποίο αφού εισάγεται μία συμβολοσειρά, έστω S μεγέθους Ν, να μετράει το πραγματικό μήκος της και να βρίσκει πόσα <Α>, <Ε> και <Ι> περιέχει (να μην γίνει χρήση της βιβλιοθήκης string.h) (3 μονάδες). #define N 100 char S[N]; int meg=0; int i, ma=0, me=0, mi=0; printf("\neisagogi symvoloseiras:"); scanf("%s", S); while (S[meg]!= '\0') meg++; for (i=0; i<meg; i++) switch ( S[i] ) case 'A': ma++; break; case 'E': me++; break; 2
case 'I': mi++; break; printf("\n Megethos symvoloseiras : %d", meg); printf("\n Plithos <A> : %d", ma); printf("\n Plithos <E> : %d", me); printf("\n Plithos <I> : %d", mi); 3) Συμμετρικός ονομάζεται ένας τετραγωνικός πίνακας A NxN όπου Α ij = A ji. Na γράψετε ένα πρόγραμμα το οποίο να εισάγει έναν τετραγωνικό πίνακα και στην συνέχεια, α) να ελέγχει εάν είναι συμμετρικός και να τυπώνει ένα αντίστοιχο μήνυμα, β) να αθροίζει την πρώτη γραμμή και την τελευταία στήλη και να ελέγχει εάν είναι ίσες, και γ) να ελέγχει εάν και τα αθροίσματα των δύο διαγωνίων είναι ίσα επίσης. Σε κάθε περίπτωση να εκτυπώνεται ένα κατάλληλο μήνυμα (4 μονάδες). #define N 4 int A[N][N]; int i, j; int flag = 0; int ath1 = 0, ath2 = 0; 3
for (j=0; j<n; j++) printf("\neisagogi tou stoixeiou %d -%d:", i, j); scanf("%d", &A[i][j]); /* A Erotima */ for (j=i+1; j<n; j++) if (A[i][j]!= A[j][i]) flag = 1; if (flag == 0 ) printf("\n SYMMETRIKOS PINAKAS"); printf("\n MI SYMMETRIKOS PINAKAS "); /* B Erotima */ ath1 += A[0][i]; ath2 += A[i][N-1]; if (ath1 == ath2 ) printf("\n To athroisma protis grammis kai protis stilis einai ISA"); printf("\n To athroisma protis grammis kai protis stilis DEN einai ISA"); /* C Erotima */ 4
ath1 = 0; ath2 = 0; ath1 += A[i][i]; ath2 += A[i][N-i-1]; if (ath1 == ath2 ) printf("\n Ta athriismata twn diagonwn einai ISA"); printf("\n Ta athroismata twn diagonwn DEN einai ISA"); 5
TEI Λάρισας / ΣΤΕΦ Τμ. Τεχνολογίας Πληροφορικής & Τηλεπικοινωνιών Β Εξεταστική Περίοδος, 19 Φεβρουαρίου 2009 ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Ι Ηλίας. Κ. Σάββας B 1) Να γράψετε ένα πρόγραμμα το οποίο να γεμίζει ένα ακέραιο πίνακα 100 θέσεων, έστω Α, με 0 ή 1 ανάλογα με τον εάν ο αντίστοιχος δείκτης του πίνακα είναι ή δεν είναι πρώτος αριθμός. ηλαδή επειδή το 7 είναι πρώτος αριθμός ενώ το 8 όχι θα πρέπει Α 7 =0 και Α 8 =1. Πρώτος λέγεται ένας αριθμός που δεν διαιρείται με κανέναν άλλο εκτός της μονάδας και του εαυτού του (3 μονάδες). #define N 100 int A[N]; int i; int d; /* Πιθανοί διαιρέτες */ int flag; /* ιακόπτης ελέγχου */ flag=0; for (d=2; d<=i/2; d++) if (i % d == 0) flag = 1; if (flag == 0) A[i] = 0; /* Πρώτος αριθμός */ 6
A[i] = 1; printf("\n %d - %d", i, A[i]); 2) Να γίνει πρόγραμμα στο οποίο αφού εισάγεται μία συμβολοσειρά, έστω S μεγέθους Ν, να μετράει το πραγματικό μήκος της και να βρίσκει πόσα Ελληνικά και πόσα Αγγλικά γράμματα περιέχει (να μην γίνει χρήση της βιβλιοθήκης string.h) (3 μονάδες). #define N 100 char S[N]; int meg=0; int i, me=0, ma=0; printf("\neisagogi symvoloseiras:"); scanf("%s", S); while (S[meg]!= '\0') meg++; for (i=0; i<meg; i++) if ( S[i] >= 'A' && S[i] <= 'Z' ) ma++; 7
if ( S[i] >= 'A' && S[i] <= 'Ω' ) me++; printf("\n Megethos symvoloseiras : %d", meg); printf("\n Plithos Agglikon : %d", ma); printf("\n Plithos Ellinikon : %d", me); 3) Να γράψετε ένα πρόγραμμα στο οποίο αφού εισάγεται ένας πίνακας ακεραίων έστω Α ΝxN, ο οποίος όμως περιέχει πάρα πολλά μηδενικά στοιχεία, a) να μετράει το πλήθος των μηδενικών στοιχείων του, β) εάν το πλήθος των μηδενικών είναι μεγαλύτερο του 80% να εμφανίζει το μήνυμα <αραιός πίνακας>, γ) να μεταφέρει όλα τα μη μηδενικά στοιχεία του Α σε ένα νέο πίνακα Β Nx3 όπου σε κάθε γραμμή του Β, στην πρώτη στήλη του να μεταφέρεται το αντίστοιχο στοιχείο του Α, στην δεύτερη στήλη ο αριθμός της γραμμής του και στην τρίτη στήλη ο αριθμός της στήλης του. Τέλος να εκτυπώνεται ο πίνακας Β (4 μονάδες). #define N 4 int A[N][N], B[N][3]; int i, j, k=0; int miden = 0; float smiden; 8
for (j=0; j<n; j++) printf("\neisagogi tou stoixeiou %d -%d:", i, j); scanf("%d", &A[i][j]); /* A Erotima */ for (j=0; j<n; j++) if (A[i][j] == 0) miden ++; /* B Erotima */ smiden = (float) miden / (N*N); if (smiden >= 0.8 ) printf("\n ARAIOS PINAKAS"); printf("\n MH ARAIOS PINAKAS "); /* C Erotima */ for (j=0; j<n; j++) if (A[i][j]!= 0 ) B[k][0] = A[i][j]; B[k][1] = i; B[k][2] = j; k ++; for (i=0; i<k; i++) printf("\n %d - (%d, %d)", B[i][0], B[i][1], B[i][2]); 9