Προς το περιεχόμενο

Προτεινόμενες αναρτήσεις

Δημοσ.
  Στις 23/7/2015 στις 6:51 ΜΜ, παπι είπε

σωστος, η πιο απλη και λαθος. τα 50 σεντς πως θα τα δωσω; τεσπα, στη c θα ειναι παλουκι, αλλα σε c# ειναι αρκετα απλο λογο features. Πχ εχει τυπο για χρημα. εκει που στη c θα πεις, wtf >??? 10.23 % 5, στη c# γινεται :) για αυτο λεω πως ειναι αρκετα λαθος προσεγγιση που κανει ο apoll. Αν εγραφε c οκ, κατανοητο, δεν υπαρχουν τα εργαλεια, αλλα σε c# υπαρχουν.

Α οκ. Νόμισα ότι διαφωνούσατε για την συγκεκριμένη εκφώνηση που λέει ότι είναι πολλαπλάσιο των 5 ευρώ. Δεν κατάλαβα ότι μιλούσατε για την γενική περίπτωση.
  • Απαντ. 68
  • Δημ.
  • Τελ. απάντηση

Συχνή συμμετοχή στο θέμα

Δημοσ.

(ούτε μια πιτσα δεν μπορούμε να φάμε απόψε)

 

Εγώ απάντησα στο πρόβλημα του ΟΡ, που είναι για ποσά ακέραια άνω τον 5 ευρώ.

Στο παράδειγμα που παραθέτω απαντώ στο πρόβλημα που παρέθεσε ο ΟΡ και μέσα στις 5 γραμμές που είπα και για νομίσματα μέχρι 1 ευρώ. Αν θες μπορώ να σου γράψω να υπολογίζει δεκαδικούς, αλλά θα είναι πάνω από 5 γραμμές. :)

 

@Παπί ο κώδικας που παρέθεσες ΔΕΝ ΕΙΝΑΙ ΟΙ 3 ΓΡΑΜΜΕΣ της δική σου απάντησης.

 

Και ορίστε σε συνάρτηση C#.NET , για να το χρησιμοποιήσετε. :-D

 static void CurrencyCalculator(int amountwithdraw)
        {
            int[] eurosdenominators = { 500, 200, 100, 50, 20, 10, 5, 2, 1 };
            int remainder = amountwithdraw;
            foreach (int eurosdenominator in eurosdenominators)
            {
                int countdenominator = Math.DivRem(remainder, eurosdenominator, out remainder);
                //eg 8 x 500 euro
                Console.WriteLine(@"{0:N0} x {1:N0} euro", countdenominator, eurosdenominator);
            }
        }

και το option για το αν δεν θες να τυπώσεις τα μηδενικά.

static  void CurrencyCalculator(int amountwithdraw)
        {
            int[] eurosdenominators = { 500, 200, 100, 50, 20, 10, 5, 2, 1 };

            int remainder = amountwithdraw;

            foreach (int eurosdenominator in eurosdenominators)
            {

                int countdenominator = Math.DivRem(remainder, eurosdenominator, out remainder);
                if (countdenominator > 0)
                {
                    //eg 8 x 500 euro
                    Console.WriteLine(@"{0:N0} x {1:N0} euro", countdenominator, eurosdenominator);
                }
            }
        }
Δημοσ.

Σου ειπα. Θεωρω λαθος (απαραδεκτο για καποιον που γραφει .net) να βαζεις int για λεφτα, απο την ωρα που υπαρχει ξεχωριστος τυπος ως feature.

Δημοσ.
  Στις 23/7/2015 στις 7:35 ΜΜ, παπι είπε

Σου ειπα. Θεωρω λαθος (απαραδεκτο για καποιον που γραφει .net) να βαζεις int για λεφτα, απο την ωρα που υπαρχει ξεχωριστος τυπος ως feature.

 

Μας δουλεύεις τώρα; Το παράδειγμα το OP προσπαθούμε να λύσουμε, ή να κάνουμε διαγωνισμό προγραμματισμού;

 

Γιατί αν είναι το δεύτερο, να κάτσω και να στο γράψω πιο ολοκληρομένο, με currencies, σε MVC, να αποθηκεύσουμε και τα χαρτονομίσματα από καμμία 200άρια διαφορετικά νομίσματα, σε καμμία βάση (με seeding). Nα εμφανίζουμε και σύμβολα του νομίσματος ανάλογα με την επιλογή του χρήστη και να κάνει τον υπολογισμό των νομισμάτων με βάση αυτό.

 

Εκτός αν το θες σε ANSI C, C++, Python, Javascript, Java. Κάτι μπορεί να γίνει.

  • Like 1
Δημοσ.
  Στις 23/7/2015 στις 8:11 ΠΜ, pmav99 είπε

Δε νομίζω Τάκη...

 

διαφορά απόψεων...

 

προσωπικά επαγγελματία προγραμματιστή που να ξεκινησε αργα δεν εχω δει... για την καυλ*ντα ναι οκ ολοι τα καραφερνουν κουτσα στραβα (αυτα τα παραδείγματα ειπωθηκαν κιολας προς υπερασπιση της αντιθετης απο τη δική μου άποψη).

 

Επισης υπάρχει τεράστια διαφορά μεταξύ του "γραφω κώδικα" και του "προγραμματιστή" που θα ταισει την οικογενεια του απο αυτό...

Δημοσ.

Μικρός, κομψός κώδικας που κάνει τη δουλειά. Ωραίος ο παπί και η C#. Φυσικά σε C τα πράγματα είναι διαφορετικά.

 

Δύο απλές υλοποιήσεις μου ήρθανε στο μυαλό, εξίσου άκομψες και προβληματικές.

 

 

  Εμφάνιση κρυμμένου περιεχομένου

 

Ο ίδιος κώδικας με αυτόν που έγραψα πριν με τη διαφορά ότι μεριμνά για τα δεκαδικά που έδωσες με το να τα ανάγει όλα σε ακεραίους ρισκάροντας υπερχείλιση λόγω του πολλαπλασιασμού επί χίλια.

% cc -Wall ll.c 
% echo "397.738" | ./a.out 
To poso ton 50.000 einai 7
To poso ton 20.000 einai 2
To poso ton 5.000 einai 1
To poso ton 1.000 einai 2
To poso ton 0.500 einai 1
To poso ton 0.100 einai 2
To poso ton 0.010 einai 3
To poso ton 0.001 einai 8
  Εμφάνιση κρυμμένου περιεχομένου

 

 

Χρήση floating point ώστε να χρησιμοποιούν τα σωστά ποσά που έδωσες αλλά μπακάλικος κώδικας "αφαίρεσε συνέχεια ποσό" τύπου δημοτικού και χρήση του άθλιου hack με το epsilon.

 

% cc -Wall kk.c      
% echo "397.738" | ./a.out 
To poso ton 50.000000 einai 7
To poso ton 20.000000 einai 2
To poso ton 5.000000 einai 1
To poso ton 1.000000 einai 2
To poso ton 0.500000 einai 1
To poso ton 0.100000 einai 2
To poso ton 0.010000 einai 3
To poso ton 0.001000 einai 8
Edit: Όπως φαίνεται και από την ποιότητα του κώδικα άλλωστε, εννοείται πως δεν τα έγραψα για να δείξω τι γ..μάτος που είμαι και να κάνουμε διαγωνισμό. Έγραψα απλά πώς θα μπορούσε να υλοποιηθεί το πρόβλημα από κάποιον αρχάριο.
  • Like 1
Δημοσ.

Όσο πάτε και τις... λιγοστεύετε βλέπω τις γραμμές σε C#

Ξεκινήσατε από 3 και μέχρι στιγμής τις εχετε κάνει... -12345678 :lol:

 

 

  Εμφάνιση κρυμμένου περιεχομένου

 

Δημοσ.

Προς τον original poster, φαντάζομαι η άσκηση θα ζητάει τον ελάχιστο δυνατό συνδυασμό χαρτονομισμάτων.

Δημοσ.
  Αναφορά σε κείμενο
προσωπικά επαγγελματία προγραμματιστή που να ξεκινησε αργα δεν εχω δει...

 

OK, απλά κράτα τα μάτια σου ανοιχτά ;)

  • Like 1
Δημοσ.
  Στις 23/7/2015 στις 8:34 ΜΜ, παπι είπε

Εγώ στο είπα ότι είναι παλούκι σε c :P

Ρε συ, η c έχει mod.http://www.cplusplus.com/reference/cmath/fmod/

 

Δεν το έχω δοκιμάσει.

Και εγώ δεν το θυμόμουν το fmod. Γενικά τις συναρτήσεις του math.h ακόμη και αν τις ξέρω ποτέ δεν τις θυμάμαι. Και χωρίς την fmod όμως, το πρόβλημα με τα χρήματα ούτε σε C δεν είναι παλούκι γιατί μιλάμε για δύο δεκαδικά ψηφία οπότε όλες οι αναπαραστάσεις παίζουν σωστά και δεν χρειάζεται η χακεριά που έκανα. Εκείνο το 0.001 που έδωσες ήταν που δημιουργούσε τη ζημιά :P

 

@ ping cyclonegr

 

Τι έγινε έφυγες ?

Δημοσ.
  Στις 23/7/2015 στις 1:57 ΜΜ, Apoll είπε

Απλή Ευκλείδια διαίρεση (από το ΔΗΜΟΤΙΚΟ) είναι αρκετή για να βρεθεί η λογική που χρειάζεσαι για τον ψευδοκώδικα.

 

 

 

Όχι διαίρεση!!!

 

Ανθυφαίρεση λέγεται η διαδικασία που πρέπει να εφαρμοστεί και είναι αλγόριθμος (ίσως από τους πρώτους που αναφέρονται). 

  • Like 1
Δημοσ.
  Στις 24/7/2015 στις 11:31 ΠΜ, groot είπε

Όχι διαίρεση!!!

 

Ανθυφαίρεση λέγεται η διαδικασία που πρέπει να εφαρμοστεί και είναι αλγόριθμος (ίσως από τους πρώτους που αναφέρονται).

Δεδομένο #1: μπορώ να γράψω πρόγραμμα που χωρίζει ποσό σε χαρτονομίσματα πάνω κάτω εδώ και 30 χρόνια

Δεδομένο #2: πρώτη φορά στη ζωή μου ακούω τη λέξη "ανθυφαίρεση"

Δεδομένο #3: και το Google σχεδόν πρώτη φορά την ακούει (https://www.google.gr/search?q=ανθυφαίρεση)

-----------

Συμπέρασμα #1: μάλλον είσαι λίγο υπερβολικός όσον αφορά τα όχι και τα πρέπει.

Συμπέρασμα #2: λυπάμαι για όλα τα παιδιά που κάποιος νιώθει την ανάγκη να τους διδάξει το συγκεκριμένο αλγόριθμο ονομάζοντάς τον "ανθυφαίρεση"

Δημοσ.
  Στις 24/7/2015 στις 2:07 ΜΜ, defacer είπε

Δεδομένο #1: μπορώ να γράψω πρόγραμμα που χωρίζει ποσό σε χαρτονομίσματα πάνω κάτω εδώ και 30 χρόνια

Δεδομένο #2: πρώτη φορά στη ζωή μου ακούω τη λέξη "ανθυφαίρεση"

Δεδομένο #3: και το Google σχεδόν πρώτη φορά την ακούει (https://www.google.gr/search?q=ανθυφαίρεση)

-----------

Συμπέρασμα #1: μάλλον είσαι λίγο υπερβολικός όσον αφορά τα όχι και τα πρέπει.

Συμπέρασμα #2: λυπάμαι για όλα τα παιδιά που κάποιος νιώθει την ανάγκη να τους διδάξει το συγκεκριμένο αλγόριθμο ονομάζοντάς τον "ανθυφαίρεση"

 

 

Νταξ, μπορεί να ήμουν λίγο υπερβολικός με το "όχι [...] !!!" αλλά και εσύ δεν πας πίσω. 

 

Σχετικά με το Δ#2.

Είναι αρκετά προσωπικό, δεδομένου ότι μία εργασία λυκείου περιέχει ανάλυση αυτού του όρου. Εδώ η εργασία: http://users.sch.gr/stranton/egrafa/Pythagoras.pdf(μετά από google search, καμία σχέση δεν έχω με αυτήν) 

 

και παραθέτω και απόσπασμα:

 

 

  Αναφορά σε κείμενο

 Η ανθυφαίρεση (δηλαδή ο αλγόριθμος εύρεσης του μέγιστου κοινού διαιρέτη δύο αριθμών) ήταν μέ- θοδος γνωστή στους πυθαγορείους. πολύ πριν τον Ευκλείδη, ο οποίος την αναφέρει στο VII βιβλίο των στοιχείων του (πεπερασμένη ανθυφαίρεση αριθμών) και στο Χ βιβλίο (άπειρη ανθυφαίρεση μεγεθών) και στο Χ βιβλίο (άπειρη ανθυφαίρεση μεγεθών) και πρέπει να ήταν το ουσιαστικό βήμα της μετάβασης από την προγενέστερη (εμπειρική) θεωρία λόγων με βάση την αρμονία (πυθαγόρεια μαθηματική θεωρία της μουσικής) στην μετέπειρα εξελιγμένη μορφή τους όπως υπάρχει στον Ευκλείδη.

 

Επίσης, θαρρώ πως το forum έχει την έννοια του "μαθαίνω νέα πράγματα", οπότε μπορείς να λες ότι το χρησιμοποιείς πλήρως :)

 

Παρακαλώ. 

 

Υ.Γ. Επίσης, από το απόσπασμα φαίνεται ότι το Σ#2 καταρρίπτεται. 

Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε

Πρέπει να είστε μέλος για να αφήσετε σχόλιο

Δημιουργία λογαριασμού

Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!

Δημιουργία νέου λογαριασμού

Σύνδεση

Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.

Συνδεθείτε τώρα

  • Δημιουργία νέου...