ΕΠΛ 032.3: 3: Προγραμματισμός Μεθόδων Επίλυσης Προβλημάτων Αχιλλέας Αχιλλέως, Τμήμα Πληροφορικής, Πανεπιστήμιο Κύπρου Email: achilleas@cs.ucy.ac.cy
ιάλεξη 18 - Παραδείγματα Πίνακες Μονοδιάστατοι Πίνακες Παράλληλοι Πίνακες Πολυδιάστατοι Πίνακες Άσκηση η
Άσκηση 1 Θα δημιουργήσετε ένα μικρό πρόγραμμα το οποίο αρχικώς θα ζητά από τον χρήστη να εισαγάγει τον αριθμό των υπολογισμών που θα εκτελεστούν. Στη συνέχεια με την χρήση της δομής επανάληψης for και με την χρήση μονοδιάστατων πινάκων θα μετατρέπει τις θερμοκρασίες που θα δίνει ο χρήστης από βαθμούς Κελσίου (Celsius) σε βαθμούς Φάρεναϊτ (Fahrenheit). Τέλος με την χρήση της δομής επανάληψης while θα εκτυπώνει τα αποτελέσματα με ακρίβεια δύο δεκαδικών ψηφίων (βλέπετε παράδειγμα εκτέλεσης). Παράδειγμα εκτέλεσης: How many calculations? : 4 Please enter temperature in degrees Celsius : 25.55 Please enter temperature in degrees Celsius : 65.55 Please enter temperature in degrees Celsius : 44.44 Please enter temperature in degrees Celsius : 20.00 25.55 Celsius = 77.99 Fahrenheit 65.5555 Celsius = 149.9999 Fahrenheit 44.44 Celsius = 111.99 Fahrenheit 20.00 Celsius = 68.00 Fahrenheit
Άσκηση 1 Λύση #include <stdio.h> #define FACTOR 9.0/5.0 #define OFFSET 32.00 int main(void){ int calculations; printf("how many calculations? l : "); scanf("%d", &calculations); float celsius[calculations]; float fahrenheit[calculations]; int i; for(i=0; i<calculations; i++){ printf("please enter temperature in degrees Celsius : "); scanf("%f", &celsius[i]); fahrenheit[i] = FACTOR * celsius[i] + OFFSET; i=0; while(i<calculations){ printf("%.2f Celsius = %.2f Fahrenheit\n", celsius[i], [], fahrenheit[i]); []); i++; return 0;
Άσκηση 2 Θα δημιουργήσετε ένα μικρό πρόγραμμα το οποίο θα δέχεται από τον χρήστη μια σειρά ακέραιων θετικών αριθμών απροσδιορίστου μεγέθους και θα καταχωρεί σε ένα πίνακα τους αριθμούς που είναι μεγαλύτεροι του 20. Τέλος θα τυπώνει τους αριθμούς που καταχωρήθηκαν στον πίνακα. Η συνθήκη τερματισμού είναι ο ακέραιος αριθμός 0. Να υλοποιηθεί με δευτερεύουσα συνάρτηση. Αποτέλεσμα εκτέλεσης: Please enter a positive integer number: 22 Please enter a positive integer number: 20 Please enter a positive integer number: 18 Please enter a positive integer number: 99 Please enter a positive integer number: 0 Larger than twenty: 22 Larger than twenty: 99
Άσκηση 2 Λύση #include <stdio.h> void largenthantwenty(){ int numbers[100]; int size = 0; int number; /* hold input number one at a time */ printf("please enter a positive integer number: "); scanf("%d",&number); /* diabase prwto stoixeio i */ while(number!= 0){ if (number>20){ numbers[size] = number; size++; printf("please enter a positive integer number: "); scanf("%d",&number); /*diabase epomeno stoixeio*/ int i; for(i=0; i<size; i++){ printf("larger than twenty: %d\n", numbers[i]); int main(void){ largenthantwenty();
Άσκηση 3 Γράψετε ένα πρόγραμμα που να καταχωρεί την ταυτότητα, την βαθμολογία της ενδιάμεσης (25%) και την βαθμολογία της τελικής (75%) για 4 φοιτητές σε παράλληλους πίνακες. Να ορίζει επίσης συνάρτηση η οποία να υπολογίζει τον μέσο όρο για κάθε φοιτητή και να τυπώνει τα ανάλογα αποτελέσματα με την πιο κάτω μορφή. Αποτέλεσμα εκτέλεσης: StudentID(556655): Very Good - 78 percent StudentID(223322): Excellent - 98 percent StudentID(445544): tid(445544) Good - 65 percent StudentID(334433): Fail - 46 percent
Άσκηση 3 Λύση #include <stdio.h> #include <math.h> float calculateaverage(float g1, float g2){ int average = g1*0 0.25+g2*0 0.75; return average; int main (void){ float g1, g2, g3; float avg = 0.0; int avg_new = 0; int students_id[4] = {556655, 223322, 445544, 334433; float midterm_grades[4] = {78.50, 98.00, 65.00, 22.00; float final_grades[4] = {78.50, 98.00, 65.00, 55.00; (next page)
Άσκηση 3 Λύση (cont.) int i; for (i=0; i<4; i++){ avg = calculateaverage(midterm_grades[i], final_grades[i]); avg_new = (int)avg; if(avg_new> new>=0 && avg_new <=49){ printf("studentid(%d): Fail - %d percent\n", students_id[i], avg_new); else if(avg_new>=50 && avg_new <=69){ printf("studentid(%d): tid(%d) Good - %d percent\n", students_id[i], t avg_new); else if(avg_new>=70 && avg_new <=84){ printf("studentid(%d): Very Good - %d percent\n", students_id[i], avg_new); else if(avg_new>=85 && avg_new <=100){ printf("studentid(%d): Excellent - %d percent\n", students_id[i], avg_new); return 0;
Άσκηση 4 Γράψτε πρόγραμμα στην C που διαβάζει από τον χρήστη δεκαδικούς αριθμούς και τους καταχωρεί σε ένα πίνακα με διαστάσεις 4x4. Στη συνέχεια βρίσκει και τυπώνει το μικρότερο και το μεγαλύτερο στοιχείο του πίνακα. Αποτέλεσμα εκτέλεσης: Input matrix elements:...... Input element [2][3] : 34 Input element [3][0] : 1 Input element [3][1] : 25 Input element [3][2] : 987 Input element [3][3] : 45 Max element: 987.00 Min element:1.00
Άσκηση 4 Λύση #include <stdio.h> #define ROWS 4 #define COLS 4 int main(void) { int i, j; float matrix[rows][cols], max=0.00, 00 min=1000.00; for (i = 0; i < ROWS; i++) { for (j = 0; j < COLS; j++) { printf("\ninput element [%d][%d] : ", i, j); scanf("%f", &matrix[i][j]); for (i = 0; i < ROWS; i++) { for (j = 0; j < COLS; j++) { if(matrix[i][j]>max) max = matrix[i][j]; if(matrix[i][j]<min) min = matrix[i][j]; printf("\nmax element: %.2f \nmin element:%.2f", max, min);
Άσκηση 5 (Για το σπίτι) Γράψτε πρόγραμμα που διαβάζει από τον χρήστη δεκαδικούς αριθμούς και τους καταχωρεί σε ένα πίνακα με διαστάσεις 4x4. Στη συνέχεια βρίσκει και τυπώνει το μεγαλύτερο και μικρότερο στοιχείο στην κύρια διαγώνιο του πίνακα. Αποτέλεσμα εκτέλεσης: Input matrix elements:...... Input element [2][2] : 4 Input element [2][3] : 5 Input element [3][0] : 6 Input element [3][1] : 98 Input element [3][2] : 12 Input element [3][3] : 76 Maximum element in main diagonal is: 76.000000 Minimum element in main diagonal is: 4.000000