Figantu Δημοσ. 18 Οκτωβρίου 2022 Share Δημοσ. 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 Share Δημοσ. 18 Οκτωβρίου 2022 ....και αν τα χρήματα επαρκούν για την αγορά... αυτό δεν το έχεις βάλει στον κώδικα σου Συνδέστε για να σχολιάσετε Κοινοποίηση σε άλλες σελίδες άλλες επιλογές
Moderators Kercyn Δημοσ. 18 Οκτωβρίου 2022 Moderators Share Δημοσ. 18 Οκτωβρίου 2022 Τι πρόβλημα αντιμετωπίζεις; 1 Συνδέστε για να σχολιάσετε Κοινοποίηση σε άλλες σελίδες άλλες επιλογές
foniki_melitzana Δημοσ. 19 Οκτωβρίου 2022 Share Δημοσ. 19 Οκτωβρίου 2022 Τι δε δουλεύει όπως θα ήθελες; Γιατί; Τι περίμενες να δεις και τι βλέπεις; Επίσης, τι σχολή/μάθημα/έτος είσαι; Συνδέστε για να σχολιάσετε Κοινοποίηση σε άλλες σελίδες άλλες επιλογές
k33theod Δημοσ. 26 Οκτωβρίου 2022 Share Δημοσ. 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 Μέλος Share Δημοσ. 26 Οκτωβρίου 2022 Παιδια ακυρο το ελυσα εδω και μερες. Απλα δεν στροφαρα εκεινη την ωρα Συνδέστε για να σχολιάσετε Κοινοποίηση σε άλλες σελίδες άλλες επιλογές
Predatorkill Δημοσ. 26 Οκτωβρίου 2022 Share Δημοσ. 26 Οκτωβρίου 2022 6 ώρες πριν, Figantu είπε Παιδια ακυρο το ελυσα εδω και μερες. Απλα δεν στροφαρα εκεινη την ωρα Δωσε την λυση να υπαρχει Συνδέστε για να σχολιάσετε Κοινοποίηση σε άλλες σελίδες άλλες επιλογές
Λύση Figantu Δημοσ. 26 Οκτωβρίου 2022 Μέλος Λύση Share Δημοσ. 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 Share Δημοσ. 27 Οκτωβρίου 2022 Να προσθέσω δύο πραγματάκια στην άσκηση: - Θα μπορούσαν τα ρέστα να μπουν σε ένα πίνακα, πχ coins = [200,100,50,20,10,5,1] και με κάποιες for, while κλπ να γινόταν η δουλειά με λιγότερες γραμμές. - Ο άπληστος αλγόριθμος, δε βρίσκει πάντα τη βέλτιστη λύση. Το ότι τη βρίσκει εδώ, οφείλεται στα νομίσματα που βοηθούν στη λειτουργία. Παράδειγμα, αν τα διαθέσιμα νομίσματα ήταν τα {25,20,10,5} και θέλαμε να επιστρέψουμε 40 λεπτά ρέστα, τότε ο αλγόριθμος θα έδινε 25-10-5 ενώ το βέλτιστο θα ήταν 20-20. 2 Συνδέστε για να σχολιάσετε Κοινοποίηση σε άλλες σελίδες άλλες επιλογές
Προτεινόμενες αναρτήσεις
Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε
Πρέπει να είστε μέλος για να αφήσετε σχόλιο
Δημιουργία λογαριασμού
Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!
Δημιουργία νέου λογαριασμούΣύνδεση
Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.
Συνδεθείτε τώρα