Figantu Δημοσ. 18 Οκτωβρίου 2022 Δημοσ. 18 Οκτωβρίου 2022 Να γίνει πρόγραμμα το οποίο θα διαβάζει από το χρήστη το πλήθος των εισιτηρίων που θέλει να αγοράσει κάποιος (ακέραιος αριθμός στο διάστημα [1,5]) καθώς και το χρηματικό ποσό που διαθέτει (πραγματικός αριθμός στο διάστημα [0.75,100]). Θεωρείστε ότι το κόστος του ενός εισιτηρίου είναι 75 λεπτά. Το πρόγραμμα θα ελέγχει αν οι δύο αριθμοί έχουν έγκυρες τιμές και αν τα χρήματα επαρκούν για την αγορά των εισιτηρίων. Σε διαφορετική περίπτωση το πρόγραμμα θα πρέπει να τερματίζει εμφανίζοντας το μήνυμα «Wrong input». Το πρόγραμμα θα πρέπει να υπολογίζει και να εμφανίζει τα ρέστα που πρέπει να επιστρέψει χρησιμοποιώντας κέρματα με αξία 2€, 1€, 0.50€, 0.20€, 0.10€ , 0.05€ και 0.01€. Ο αλγόριθμος πρέπει να λειτουργεί με τέτοιο τρόπο ώστε τα ρέστα να δίνονται με τον μικρότερο δυνατό αριθμό κερμάτων. #include <stdio.h> int main() { int tickets; float money,ticket_price; ticket_price=0.75; scanf("%d %f",&tickets,&money); if ((tickets>=1 && tickets<=5) && (money>=0.75 && money<=100)) { float change,price; int changex; price=tickets*ticket_price; change=money-price; changex=change*100; if (money>price) { int x1,change1; x1=changex%200; change1=changex-200*x1; int x2,change2; x2=change1%100; change2=change1-100*x2; int x3,change3; x3=change2%50; change3=change2-50*x3; int x4,change4; x4=change3%20; change4=change3-20*x4; int x5,change5; x5=change4%10; change5=change4-10*x5; int x6,change6; x6=change5%5; change5=change5-5*x6; int x7,change7; x7=change5%1; change6=change5-1*x7; printf("%d%dcoins",x1,changex); } } else { printf("Wrong input"); } return 0; } Παιδια βοηθεια για αυτη την ασκηση? Εχω καει τελειως την δουλευω ωρες και δεν μπορω να την λυσω
virxen75 Δημοσ. 18 Οκτωβρίου 2022 Δημοσ. 18 Οκτωβρίου 2022 ....και αν τα χρήματα επαρκούν για την αγορά... αυτό δεν το έχεις βάλει στον κώδικα σου
Moderators Kercyn Δημοσ. 18 Οκτωβρίου 2022 Moderators Δημοσ. 18 Οκτωβρίου 2022 Τι πρόβλημα αντιμετωπίζεις; 1
foniki_melitzana Δημοσ. 19 Οκτωβρίου 2022 Δημοσ. 19 Οκτωβρίου 2022 Τι δε δουλεύει όπως θα ήθελες; Γιατί; Τι περίμενες να δεις και τι βλέπεις; Επίσης, τι σχολή/μάθημα/έτος είσαι;
k33theod Δημοσ. 26 Οκτωβρίου 2022 Δημοσ. 26 Οκτωβρίου 2022 (επεξεργασμένο) Το πρόγραμμα σου είναι γενικά σωστό εκτός από χ1 = change/200 ypoloipo = change%200 ή αυτό που κάνεις με την αφαίρεση Κοίτα όμως τι σου ζητάει ως έξοδο στο τέλος. Εγώ καταλαβαίνω "ρεστα 13,79 analisi 6 2€ 1 1€ 150c 1 20c klp" Μετά κοίτα αν χρειάζεσαι όλες αυτές τις μεταβλητές που χρησιμοποιείς ή μπορείς να επαναλαμβάνεις κάποιες. Το υπόλοιπο πχ σε λεπτά που το ονομάζεις changex μπορεί να είναι πάντα η ίδια μεταβλητή και όχι change1, change2 ... Επεξ/σία 26 Οκτωβρίου 2022 από k33theod
Figantu Δημοσ. 26 Οκτωβρίου 2022 Μέλος Δημοσ. 26 Οκτωβρίου 2022 Παιδια ακυρο το ελυσα εδω και μερες. Απλα δεν στροφαρα εκεινη την ωρα
Predatorkill Δημοσ. 26 Οκτωβρίου 2022 Δημοσ. 26 Οκτωβρίου 2022 6 ώρες πριν, Figantu είπε Παιδια ακυρο το ελυσα εδω και μερες. Απλα δεν στροφαρα εκεινη την ωρα Δωσε την λυση να υπαρχει
Λύση Figantu Δημοσ. 26 Οκτωβρίου 2022 Μέλος Λύση Δημοσ. 26 Οκτωβρίου 2022 (επεξεργασμένο) #include <math.h> #include <stdio.h> int main() { int tickets,change; float ticket_price =75; float money,price; int x200,x100,x50,x20,x10,x5,x1; scanf("%d %f",&tickets,&money); price=tickets*ticket_price; if (tickets<1 || tickets>5 || price>(money*100) || money>100 || money<0.75) { printf("Wrong input"); } else { change=round((money*100)-price); x200=change/200; change=change%200; x100=change/100; change=change%100; x50=change/50; change=change%50; x20=change/20; change=change%20; x10=change/10; change=change%10; x5=change/5; change=change%5; x1=change/1; change=change%1; if(x200>0) { printf("%d * 2 euros\n",x200); } if(x100>0) { printf("%d * 1 euros\n",x100); } if(x50>0) { printf("%d * 50 cents\n",x50); } if(x20>0) { printf("%d * 20 cents\n",x20); } if(x10>0) { printf("%d * 10 cents\n",x10); } if(x5>0) { printf("%d * 5 cents\n",x5); } if(x1>0) { printf("%d * 1 cents\n",x1); } } return 0; } Επεξ/σία 26 Οκτωβρίου 2022 από Figantu
Lanike71 Δημοσ. 27 Οκτωβρίου 2022 Δημοσ. 27 Οκτωβρίου 2022 Να προσθέσω δύο πραγματάκια στην άσκηση: - Θα μπορούσαν τα ρέστα να μπουν σε ένα πίνακα, πχ coins = [200,100,50,20,10,5,1] και με κάποιες for, while κλπ να γινόταν η δουλειά με λιγότερες γραμμές. - Ο άπληστος αλγόριθμος, δε βρίσκει πάντα τη βέλτιστη λύση. Το ότι τη βρίσκει εδώ, οφείλεται στα νομίσματα που βοηθούν στη λειτουργία. Παράδειγμα, αν τα διαθέσιμα νομίσματα ήταν τα {25,20,10,5} και θέλαμε να επιστρέψουμε 40 λεπτά ρέστα, τότε ο αλγόριθμος θα έδινε 25-10-5 ενώ το βέλτιστο θα ήταν 20-20. 2
Προτεινόμενες αναρτήσεις
Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε
Πρέπει να είστε μέλος για να αφήσετε σχόλιο
Δημιουργία λογαριασμού
Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!
Δημιουργία νέου λογαριασμούΣύνδεση
Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.
Συνδεθείτε τώρα