Προγραμματισμός II (Γλώσσα C) Λύσεις 3 ης ομάδας ασκήσεων 1. Σε τρείς διαφορετικούς αγώνες πρόκρισης για την Ολυμπιάδα του Σίδνεϊ, στο άλμα εις μήκος ένας αθλητής πέτυχε τις επιδόσεις Α, Β, Γ. Να γραφεί πρόγραμμα σε Pascal το οποίο: να διαβάζει τις τιμές των επιδόσεων Α, Β, Γ. να υπολογίζει τη μέγιστη, την ελάχιστη και τη μέση τιμή των παραπάνω τιμών. να εμφανίζει το μήνυμα «ΠΡΟΚΡΙΘΗΚΕ», αν η παραπάνω μέση τιμή είναι μεγαλύτερη των 8 μέτρων. int a, b, c, min, max; float mo; printf("dose to A: "); scanf("%d", &a); printf("dose to B: "); scanf("%d", &b); printf("dose to C: "); scanf("%d", &c); /* Bres ton mikrotero arithmo */ min=a; if (b<min) min=b; if (c<min) min=c; /* Bres ton megalytero arithmo */ max=a; if (b>max) max=b; if (c>max) max=c; /* Ypologise ton Meso Oro */ mo=(a+b+c)/3.; printf("min: %d\n", min); printf("max: %d\n", max); printf("m.o.: %5.2f\n", mo); if (mo>8) printf("prokrithike!");
2. Μια εταιρεία κινητής τηλεφωνίας ακολουθεί ανά μήνα την πολιτική τιμών που φαίνεται στον παρακάτω πίνακα: Πάγιο 5 Χρόνος τηλεφωνημάτων (λεπτά) Χρονοχρέωση ( /λεπτό) 1-200 0,10 201-500 0,05 501 και άνω 0,02 Να γραφεί πρόγραμμα σε Pascal το οποίο: α. να διαβάζει τη χρονική διάρκεια των τηλεφωνημάτων ενός συνδρομητή σε διάστημα ενός μήνα. β. να υπολογίζει τη μηνιαία ΚΛΙΜΑΚΩΤΗ χρέωση του συνδρομητή. γ. να εμφανίζει τη λέξη «ΧΡΕΩΣΗ» και τη μηνιαία χρέωση του συνδρομητή. #define pagio 5 float diarkeia, xreosi; printf("dose ti diarkeia ton tilefonimaton (se lepta): "); scanf("%f", &diarkeia); if (diarkeia<=200) xreosi=pagio + 0.1*diarkeia; if (diarkeia>200 && diarkeia<=500) xreosi=pagio + 0.1*200 + 0.05*(diarkeia-200); if (diarkeia>500) xreosi=pagio + 0.1*200 + 0.05*300 + 0.02*(diarkeia-500); printf("xreosi: %5.2f", xreosi);
3. Να γραφεί πρόγραμμα σε Pascal που να διαβάζει ένα έτος (π.χ. «2006») και να εμφανίζει αν είναι δίσεκτο ή όχι. Για να προσδιορίσουμε αν ένα έτος είναι δίσεκτο εφαρμόζουμε τα εξής: 1. Ελέγχουμε το υπόλοιπο της ακέραιας διαίρεσης του έτους με το 4. Αν είναι μηδέν ελέγχουμε το υπόλοιπο της ακέραιας διαίρεσης του έτους με το 100. Αν αυτό το υπόλοιπο είναι διαφορετικό του μηδενός τότε το έτος είναι δίσεκτο. 2. Αν από τον έλεγχο 1 δεν προκύψει ότι το έτος είναι δίσεκτο ελέγχουμε το υπόλοιπο της ακέραιας διαίρεσης του έτους με το 400. Αν είναι μηδέν τότε το έτος είναι δίσεκτο, άσχετα από το αποτέλεσμα του ελέγχου 1. int etos, disekto; printf("dose etos: "); scanf("%d",&etos); disekto=0; if(etos%4==0) if(etos%100!=0) disekto=1; if(etos%400==0) disekto=1; if(disekto==1) printf("einai disekto etos."); else printf("den einai disekto etos.");
4. Να γραφεί πρόγραμμα σε γλώσσα C το οποίο θα ζητάει από τον χρήστη να εισάγει τον βασικό μισθό ενός υπαλλήλου καθώς και των αριθμό των παιδιών του και θα τυπώνει στην οθόνη το επίδομα τέκνων και τον τελικό μισθό που θα πρέπει να πάρει. Ο υπολογισμός του επιδόματος γίνεται ως εξής: για ένα παιδί --> 5% για δύο παιδιά --> 10% για τρία παιδιά --> 20% από το τέταρτο παιδί και πάνω --> +5% για κάθε παιδί Για την υλοποίηση του προγράμματος να χρησιμοποιηθεί η εντολή switch. float basikos_misthos, epidoma; int arithmos_paidion; printf("dose basiko mistho: "); scanf("%f",&basikos_misthos); printf("dose aritmo paidion: "); scanf("%d",&arithmos_paidion); switch(arithmos_paidion) case 0 : epidoma=0; break; case 1 : epidoma=0.05*basikos_misthos; break; case 2 : epidoma=0.1*basikos_misthos; break; case 3 : epidoma=0.2*basikos_misthos; break; default: epidoma=0.2*basikos_misthos+(arithmos_paidion- 3)*0.05*basikos_misthos; break; printf("to epidoma teknon einai: %5.2f\n", epidoma); printf("o telikos misthos einai: %5.2f\n", basikos_misthos+epidoma);
5. Μία εταιρεία ταχυδρομικών υπηρεσιών εφαρμόζει για τα έξοδα αποστολής ταχυδρομικών επιστολών εσωτερικού και εξωτερικού, χρέωση σύμφωνα με τον παρακάτω πίνακα: Βάρος επιστολής σε γραμμάρια Χρέωση εσωτερικού σε Ευρώ Χρέωση εξωτερικού σε Ευρώ από 0 έως και 500 2,0 4,8 από 500 έως και 1000 3,5 7,2 από 1000 έως και 2000 4,6 11,5 Για παράδειγμα τα έξοδα αποστολής μιας επιστολής βάρους 800 γραμμαρίων και προορισμού εσωτερικού είναι 3,5 Ευρώ. Να δημιουργήσετε πρόγραμμα σε γλώσσα C το οποίο: α. Να διαβάζει το βάρος της επιστολής. β. Να διαβάζει τον προορισμό της επιστολής. Η τιμή "es" δηλώνει προορισμό εσωτερικού και η τιμή "ex" δηλώνει προορισμό εξωτερικού. γ. Να υπολογίζει τα έξοδα αποστολής ανάλογα με τον προορισμό και το βάρος της επιστολής. Παρατήρηση: Θεωρήστε ότι το πρόγραμμα δέχεται τιμές για το βάρος μεταξύ του 0 και του 2000 και για τον προορισμό μόνο τις τιμές "es και ex. #include <string.h> float xreosi; int baros; char proorismos[3]; printf("dose baros epistolis: "); scanf("%d",&baros); printf("dose proorismo (es/ex): "); scanf("%s",&proorismos); xreosi=0; if(strcmp(proorismos,"es")==0) if(baros<=500) xreosi=2.0; if(baros>500 && baros<=1000) xreosi=3.5; if(baros>1000 && baros<=2000) xreosi=4.6; if(strcmp(proorismos,"ex")==0) if(baros<=500) xreosi=4.8; if(baros>500 && baros<=1000) xreosi=7.2; if(baros>1000 && baros<=2000) xreosi=11.5;
printf("h xreosi einai %5.2f euro", xreosi); 6. Ο Δείκτης Μάζας του ανθρώπινου Σώματος (ΔΜΣ) υπολογίζεται από το βάρος (Β) σε χλγ. και το ύψος (Υ) σε μέτρα με τον τύπο: 2 Ο ανωτέρω τύπος ισχύει για άτομα άνω των 18 ετών. Το άτομο ανάλογα με την τιμή του ΔΜΣ χαρακτηρίζεται σύμφωνα με τον παρακάτω πίνακα: ΔΜΣ<18,5 18,5 ΔΜΣ<25 25 ΔΜΣ<30 30 ΔΜΣ Να γράψετε πρόγραμμα σε γλώσσα C το οποίο: "αδύνατο άτομο" "κανονικό άτομο" "βαρύ άτομο" "υπέρβαρο άτομο" α. να διαβάζει την ηλικία, το βάρος και το ύψος του ατόμου β. εάν η ηλικία είναι μεγαλύτερη των 18 ετών, τότε 1. να υπολογίζει το ΔΜΣ 2. να ελέγχει την τιμή του ΔΜΣ από τον ανωτέρω πίνακα και να εμφανίζει τον αντίστοιχο χαρακτηρισμό γ. εάν η ηλικία είναι μικρότερη ή ίση των 18 ετών, τότε να εμφανίζει το μήνυμα "Δεν ισχύει ο δείκτης ΔΜΣ". Θεωρήστε ότι το βάρος, το ύψος και η ηλικία είναι θετικοί αριθμοί. #include <string.h> float ilikia, y, b, dms; char xarakt[50]; printf("dose ilikia: "); scanf("%f",&ilikia); printf("dose baros (kgr): "); scanf("%f",&b); printf("dose ypsos (m): "); scanf("%f",&y); dms=b/(y*y);
if(ilikia>18) if(dms<18.5) strcpy(xarakt, "adynato atomo"); if(dms>=18.5 && dms<25) strcpy(xarakt, "kanoniko atomo"); if(dms>=25 && dms<30) strcpy(xarakt, "bary atomo"); if(dms>=30) strcpy(xarakt, "yperbaro atomo"); else strcpy(xarakt, "Den isxyei o deiktis DMS"); printf("o Deiktis Mazas Somatos einai: %5.2f\n", dms); printf("kai o xaraktirismos: %s", xarakt);