ΕΧΟΥΜΕ ΤΗΝ ΠΑΡΑΚΑΤΩ ΑΣΚΗΣΗ
Υποθέτουμε ότι μια μηχανή προσφέρει τέσσερα διαφορετικά είδη ροφημάτων (καφέ, καφέ με γάλα, σοκολάτα και σοκολάτα με γάλα), που κοστίζουν 1.5, 1.8, 2.1 και 2.4 ευρώ αντίστοιχα. Η μηχανή δέχεται κέρματα των 10, 20 και 50 λεπτών, του ενός ευρώ και των 2 ευρώ, καθώς και χαρτονομίσματα των 5 και 10 ευρώ, και επιστρέφει ρέστα χρησιμοποιώντας μόνο κέρματα. Να υλοποιηθεί πρόγραμμα στη γλώσσα προγραμματισμού C, το οποίο:
1. Εμφανίζει κατάλογο επιλογής (μενού) των προσφερόμενων ειδών (αριθμούμενα από το 1 έως το 4) με το αντίστοιχο αντίτιμο για το καθένα, την επιλογή 0 για έξοδο από το πρόγραμμα και στη συνέχεια διαβάζει την επιλογή του χρήστη (είδος που προτιμά ή έξοδος), εφαρμόζοντας αμυντικό προγραμματισμό προκειμένου να διασφαλιστεί ότι ο χρήστης εισάγει τιμή μεταξύ 0 και 4.
2. Στη συνέχεια διαβάζει το ποσό που απαιτείται για την πληρωμή του είδους που επέλεξε ο χρήστης. Κατά την εισαγωγή του ποσού να χρησιμοποιηθεί αμυντικός προγραμματισμός, ώστε το ποσό που εισάγει ο χρήστης να αντιστοιχεί σε αποδεκτό κέρμα ή χαρτονόμισμα. Το πρόγραμμα να ελέγχει εάν το ποσό που εισήχθη είναι μεγαλύτερο ή ίσο με το ποσό που απαιτείται. Στην περίπτωση που έχει εισαχθεί ποσό μικρότερο από το απαιτούμενο, το πρόγραμμα τυπώνει κατάλληλο μήνυμα με το επιπλέον ποσό που πρέπει να εισαχθεί και προτρέπει το χρήστη να εισάγει το υπολειπόμενο ποσό. Αυτή η διαδικασία συνεχίζεται μέχρι να εισαχθεί ποσό ίσο με ή μεγαλύτερο από το ποσό που απαιτείται για την αγορά του είδους που επελέγη από το χρήστη.
3. Υπολογίζει το υπόλοιπο (ρέστα) που πρέπει να επιστρέψει και τυπώνει κατάλληλο μήνυμα που ενημερώνει το χρήστη για το ποσό που θα του επιστραφεί.
4. Υπολογίζει το ελάχιστο πλήθος κερμάτων που θα επιστραφούν στο χρήστη ως υπόλοιπο (ρέστα) και τυπώνει μήνυμα με πόσα και ποιας αξίας κέρματα πραγματοποιείται αυτό.
Το πρόγραμμα θα δέχεται από το χρήστη τα ποσά σε ευρώ με ακρίβεια ενός δεκαδικού ψηφίου, αλλά θα χειρίζεται τα ποσά σε λεπτά. Ακολουθεί σχετικό παράδειγμα (Εικόνα 3), όπου ο χρήστης για το είδος 2, που κοστίζει 1.8 ευρώ, εισάγει διαδοχικά κέρματα των 1, 0.5 και 0.5 ευρώ και λαμβάνει ρέστα 0.2 ευρώ, ενώ στη συνέχεια επιλέγει 0 για έξοδο από το πρόγραμμα.
ΚΑΙ ΕΧΩ ΚΑΝΕΙ
#include <stdio.h>
main()
{
int n,a;
float x[5]= {0, 1.5, 1.8, 2.1, 2.4};
float b;
printf("Parakalw epilekste ena apo ta parakatw\n");
printf("\n");
printf("1. Kafe 1.5 euro\n");
printf("2. Kafe me gala 1.8 euro\n");
printf("3. Sokolata 2.1 euro\n");
printf("4. Sokolata me gala 2.4 euro\n");
printf("0. Exodos\n");
printf("\n");
printf("Parakalw eiasgete thn epilogh sas: ");
scanf ("%d", &n);
if (n!=0);
{
printf("Prepei na eisagetai %1.1f euro synolika\n",x[n]);
printf("Posa eisagete ?");
scanf("%d",&a);
do
{
b=a-x[n] ;
if (b<0)
{
printf("prepei na eisagete %f euro synolika",-b);
printf("posa eisagetai ?");
scanf("%d",&a);
b=b+a;
}
else
{
printf("Epistrofh %f euro",b);
}
}
while (b!=0) ;
}
getchar();
return 0;
}
ΚΑΝΕΙ OVERFLOW ΓΙΑΤΙ ?
ΚΑΙ ΓΙΑ ΤΟ ΕΡΩΤΗΜΑ 4 ΓΙΑ ΝΑ ΒΡΟΥΜΕ ΠΛΗΘΟΣ ΚΕΡΜΑΤΩΝ ΝΑ ΚΑΝΩ ΔΙΑΙΡΕΣΗ ΤΗ ΔΙΑΦΟΡΑ ΜΕ ΤΑ ΚΕΡΜΑΤΑ ΚΑΙ ΝΑ ΠΑΙΡΝΩ ΤΟ ΑΚΕΡΑΙΟ ΜΕΡΟΣ
|
by asimomyti
[Today at 13:38:17]
by george14
[June 19, 2026, 23:19:07 pm]
[June 19, 2026, 20:53:23 pm]
by chatzikys
[June 19, 2026, 12:40:39 pm]
by Nikos_313
[June 18, 2026, 18:51:29 pm]
by Nikos_313
[June 18, 2026, 14:01:54 pm]
by nmpampal
[June 18, 2026, 07:37:37 am]
by Lalson
[June 17, 2026, 10:37:39 am]
by RivenT
[June 16, 2026, 23:48:23 pm]
by G.V.
[June 16, 2026, 15:31:13 pm]
by femanak
[June 16, 2026, 11:11:17 am]
[June 15, 2026, 17:39:58 pm]
by Karaμazoβ
[June 15, 2026, 14:31:16 pm]
by Λαμπτήρας
[June 12, 2026, 13:36:19 pm]
by Nikos_313
[June 11, 2026, 14:05:57 pm]
by Nikos_313
[June 11, 2026, 10:23:04 am]
by grepanis
[June 11, 2026, 10:11:51 am]
by Roidos
[June 10, 2026, 21:37:48 pm]
by Karaμazoβ
[June 10, 2026, 18:42:33 pm]
[June 09, 2026, 20:27:57 pm]
Total Members: 10402
Latest: anton
Total Posts: 1431483
Total Topics: 32024
Online Today: 1543
Online Ever: 18918(April 06, 2026, 16:05:31 pm) Users: 56 Guests: 794 Total: 850 Jard ΦΙδανης Αριστοτελης Μιχάλης Αβραμίδης TMNF pro Zaxarenia gatooliiis panagiotisv teoarv sterxz prizas sinakos Stylianos Kementzetzidis maariaa_7 Etsakan akontel user182 dorapangeiou giorgosss03 elio smanio Retroman07 PetrosCc eirinistyl stefanos hios Nikos_313 xristodoulou Theo_24 Doublas Νικηφόρος Πατσιούρας dimkon Smisios Evripidis mnik dimant johnny_ece despoina15 Shoegazer22 Georgeangel femanak thalia fokianou Petross gynekomagnitis Katerina_. bougatsa Lykaonia kourasan! chaniotism Kenedy alexlabis Katarameno |
| ||||||||||||||||||||||||||||||||||||||||


Total Members: 10402