imitheos Δημοσ. 23 Ιουλίου 2015 Δημοσ. 23 Ιουλίου 2015 Με τα πολλά του το ζήτησαν και συνάδελφοι και κατέληξε έτσι να έχει εκτός από την κανονική του δουλειά κι ένα χόμπι/δουλειά για αρκετά χρόνια. Εμένα αυτό μου λέει πως αν είσαι έτοιμος να ιδρώσεις τη φανέλα, και με τη μικρότερη αφορμή που θα βρεις μπορείς να κάνεις πολλά πράγματα. Ίσως τώρα έχουμε καλομάθει με τα άπειρα προγράμματα για κάθε σκοπό και την ευκολία που κατεβαίνουν από το διαδίκτυο. Παλιά που το DOS και τα windows 3.11 δεν παρείχαν τίποτα από προγράμματα, έπαιζε πολύ ο χομπίστικος προγραμματισμός. Εκτός από εφήβους, ξέρω γονείς / καθηγητές στην ηλικία του bazinga αλλά και μεγαλύτερους που ασχολούνταν. Πολύς κόσμος έφτιαχνε με μεράκι (είτε σε C ή σε pascal για όσους ήθελαν κάτι πιο βατό) προγραμματάκια που σήμερα θα θεωρούνταν εντελώς άσκοπα αλλά τότε σου έλυναν τα χέρια. Και φυσικά μετά έπεφτε μεταφορά με δισκέτες σε όλους τους φίλους και γνωστούς. Όπως θα θυμούνται οι παλιοί σαν τον migf1, ειδικά το περιβάλλον της borland ήταν καταπληκτικό για την εποχή του και παρείχε μια τρελή καινοτομία για τότε. Έδινε την δυνατότητα με κάποιες δομές και δείκτες να αναπαράγεις εύκολα το ίδιο το περιβάλλον που βλέπετε παρακάτω. Δηλαδή του έλεγες θέλω ένα μενού με όνομα file που να έχει αυτά τα υπομενού και όταν κάνω κλικ να γίνονται αυτές οι λειτουργίες. Έτσι δηλαδή, αντίστοιχα με αυτό που γίνεται σήμερα με gtk, qt, κτλ, μπορούσες να έχεις πολύ εύκολα ένα "gui" για την εφαρμογή σου. Όπως είπες και εσύ για αυτό το λογιστή, κυκλοφορούσαν προγραμματάκια που τύφλα να έχουν οι επαγγελματίες. @OP Δεν ξέρω τι γίνεται επαγγελματικά και τι δεν γίνεται αλλά δεν είναι αιτία αυτό να παρατήσεις τον προγραμματισμό. Μην αποθαρρύνεσαι και συνέχισε να ασχολείσαι. Ένα κακό που τονίζουμε συνέχεια στο φόρουμ είναι ότι σε πολλές σχολές σου μαθαίνουν το συντακτικό μιας γλώσσας και σου λένε γράψε προγράμματα χωρίς να σε μαθαίνουν πώς να σκέφτεσαι. Έτσι και εσύ, όταν σε ρώτησα τι χαρτονομίσματα θα μου έδινες, απάντησες αμέσως αλλά σου φαίνεται δύσκολο αυτό να το σκεφτείς πως θα γίνει σε κώδικα. Αφιέρωσε χρόνο να διαβάσεις κάποιο καλό βιβλίο και όποια απορία έχεις μπορείς να ρωτήσεις και εδώ φυσικά. τελοσπαντων παιδια θα το αφησω στη ακρη γιατι με αυτα που ξερω δεν παιζει να το κανω ποτε. Σας ευχαριστω για τη βοηθεια παντως :) Με τη χρήση του modulo που είπανε κάποια παιδιά γίνεται πιο γρήγορα η δουλειά μας αλλά ξέχνα το για την ώρα. Πρώτα ας το κάνουμε μπακάλικα. Έχεις μπροστά σου αυτή τη θήκη η οποία ας θεωρήσουμε ότι έχει επάρκεια σε κάθε χαρτονόμισμα. Έρχομαι εγώ και σου ζητάω 1895 ευρώ. Γράψε μας αναλυτικά το σκεπτικό σου. Τι χαρτονομίσματα θα μου έδινες και γιατί ?
defacer Δημοσ. 23 Ιουλίου 2015 Δημοσ. 23 Ιουλίου 2015 Δηλαδή του έλεγες θέλω ένα μενού με όνομα file που να έχει αυτά τα υπομενού και όταν κάνω κλικ να γίνονται αυτές οι λειτουργίες. Έτσι δηλαδή, αντίστοιχα με αυτό που γίνεται σήμερα με gtk, qt, κτλ, μπορούσες να έχεις πολύ εύκολα ένα "gui" για την εφαρμογή σου. Είχα κάνει τότε implement το ίδιο πράγμα (οπτικά clone) σαν widget library σε Clipper -- βασικά menu bar με όλα τα features συν buttons, dialogs, checkboxes και τέτοια. Θυμάμαι χρειάστηκε total rewrite 2 φορές γιατί οι πρώτες προσπάθειες μετά από ένα σημείο φαινόταν ότι μπήκαν σε λάθος βάση και δε θα πάνε πολύ μακριά και όλη η διαδικασία πήρε μήνες+, αλλά μετά ε; Έχω library και το βάζω παντού! Ακόμα το έχω το source. Good times.
Apoll Δημοσ. 23 Ιουλίου 2015 Δημοσ. 23 Ιουλίου 2015 eimai pantelws asxetos me auta opote an mporeite re paidia dwste mou ligo ta fwta sas. ο ταμιας μιας τραπεζας διαθετει ολα τα χαρτονομισματα του €. Ενας καταθετης πελατης της τραπεζας ζηταει αναληψη χρηματικου ποσου πολλαπλασιου του 5€. Να γραφει αλγοριθμος που να: α) διαβαζει το ποσο που ζηταει για αναληψη ο πελατης της τραπεζας β) εμφανιζει το ποσο των διαφορετικων χαρτονομισματων που πρεπει να δωσει ο ταμιας στον πελατη. Euxaristw ek twn proterwn Απλή Ευκλείδια διαίρεση (από το ΔΗΜΟΤΙΚΟ) είναι αρκετή για να βρεθεί η λογική που χρειάζεσαι για τον ψευδοκώδικα. Δυστυχώς τον να τον γράψω εγώ εδώ το ψευδοκώδικα, είναι δεκάδες φορές μεγαλύτερη προσπάθεια από το να γράψω την λύση σε κάποια γλώσσα προγραμματισμού (10 γραμμές κώδικας σε .ΝΕΤ με την χρήση Math.DivRem και ένα loop) ή να γράψω το λογικό διάγραμμα. Αλλά το insomnia text box την δυνατότητα να βάλουμε λογικά διαγράμματα
headbanger Δημοσ. 23 Ιουλίου 2015 Δημοσ. 23 Ιουλίου 2015 Καθόσαστε κοτζάμ προγραμματιστές να δώσετε λύση σε ένα πρόβλημα που υπάρχει λόγο μη εκτέλεσεις RTFM αφήστε να ψοφήσει και κανένας λόγο natural selection. Πολλοί γινίκαμε. 1
παπι Δημοσ. 23 Ιουλίου 2015 Δημοσ. 23 Ιουλίου 2015 Απλή Ευκλείδια διαίρεση (από το ΔΗΜΟΤΙΚΟ) είναι αρκετή για να βρεθεί η λογική που χρειάζεσαι για τον ψευδοκώδικα. Δυστυχώς τον να τον γράψω εγώ εδώ το ψευδοκώδικα, είναι δεκάδες φορές μεγαλύτερη προσπάθεια από το να γράψω την λύση σε κάποια γλώσσα προγραμματισμού (10 γραμμές κώδικας σε .ΝΕΤ με την χρήση Math.DivRem και ένα loop) ή να γράψω το λογικό διάγραμμα. Αλλά το insomnia text box την δυνατότητα να βάλουμε λογικά διαγράμματα 10 γραμμες με c#?? μια για div μια για mod αντε και μια για το loop μας κανουν 3
Moderators Kercyn Δημοσ. 23 Ιουλίου 2015 Moderators Δημοσ. 23 Ιουλίου 2015 Αυτο νομιζα οτι ζηταει Να σου πω οτι κι εγω δεν το εχω διδαχτει το μαθημα στην 3η ληκειου (ειμουν απο αυτους που ηταν σε αλλη ειδικοτητα - επαλ) και προσπαθω να μαθω λιγα πραγματα τωρα πριν περασω σε τει πληγροφορικης. Γιατι ειναι λαθος το x5? Γιατί δε σου ζητάει αυτό. Αυτό που σου ζητάει είναι να του πεις πόσα διαφορετικά χαρτονομίσματα πρέπει να δώσει ο ταμίας στον πελάτη για ένα х ποσό. Το "πολλαπλάσιο του 5" φαντάζομαι είναι να μη βάλεις μέσα και κέρματα, αλλά η λύση θα ήταν ίδια. 1
stavrosyomafias Δημοσ. 23 Ιουλίου 2015 Δημοσ. 23 Ιουλίου 2015 Γιατί δε σου ζητάει αυτό. Αυτό που σου ζητάει είναι να του πεις πόσα διαφορετικά χαρτονομίσματα πρέπει να δώσει ο ταμίας στον πελάτη για ένα х ποσό. Το "πολλαπλάσιο του 5" φαντάζομαι είναι να μη βάλεις μέσα και κέρματα, αλλά η λύση θα ήταν ίδια. Ναι, το καταλαβα αυτο στην συναιχεια που διαβαζα τις υπολοιπες απαντησεις του αρθρου, σε ευχαριστω παντως.
Apoll Δημοσ. 23 Ιουλίου 2015 Δημοσ. 23 Ιουλίου 2015 10 γραμμες με c#?? μια για div μια για mod αντε και μια για το loop μας κανουν 3 Έγραψα Math.DivRem. 1) το δήλωση array με τα νομίσματα, (ακέραιοι) 2) δήλωση της μεταβλητής του υπόλοιπου. = ποσό ανάληψης 3) το loop στο array. 4) υπολογισμός με Math.DivRem 5) εκτύπωση ή καταχώρηση κάπου του αριθμού χαρτονομισμάτων και το είδος αυτού (π.χ σε object) Και σου αφήνω 5 γραμμές ρέστα που μπορεί να υπολογίσεις και τα bracket ή να ρίξεις ένα if ώστε να μην καταχωρεί μηδενικά ποσά σε νομίσματα π.χ 0 500άρικα αν το ποσό ανάληψης είναι 125.
παπι Δημοσ. 23 Ιουλίου 2015 Δημοσ. 23 Ιουλίου 2015 Απο περιεργεια για να δω πως σκεφτεσαι, δωσε μου υλοποιηση.
headbanger Δημοσ. 23 Ιουλίου 2015 Δημοσ. 23 Ιουλίου 2015 Απο περιεργεια για να δω πως σκεφτεσαι, δωσε μου υλοποιηση. σκέφτεται σαν industrial programmer Και όχι σαν χομπίστας. Κρατάς πισινή στα αποτελέσματα και θέτεις όρια, δεν βαράς κουτουρού άσκηση στο λύκειο. Και δεν είμαι προγραμματιστής, απλά πέρασα και από .net φεγγάρια 1
Apoll Δημοσ. 23 Ιουλίου 2015 Δημοσ. 23 Ιουλίου 2015 Απο περιεργεια για να δω πως σκεφτεσαι, δωσε μου υλοποιηση. Τόσο δύσκολο είναι αυτό που έγραψα για να αντικαταστήσεις τις γραμμές με εντολές τις γλώσσες που θες; Για το πως σκέφτομαι, ακόμα και αυτό που έγραψα δεν μπορείς να σου δώσει κάποια σχετική ιδέα. Γιατί ακόμα και το array της γραμμής 1 θα το τράβαγα με μορφή λίστας από το model. Οπότε αντί για ευρώ, μπορεί να έχω λίρες, δολλάρια, γεν, κορόνες, ρούβλια, χωρίς αντικατάσταση του κώδικα. Πάντως αν επιμένεις για κώδικα, πολύ ευχαρίστως να τον γράψω Αλλά πες σε VB.NET ή C#.NET; Αποθήκευση σε αντικείμενο ή εκτύπωση σε console; Με καταχώρηση των μηδενικών τιμών ή όχι;
παπι Δημοσ. 23 Ιουλίου 2015 Δημοσ. 23 Ιουλίου 2015 Γραψε σε C#. Αλλα και παλι μου κανει εντυπωση καποιος που ασχολειται αρκετα με c#, να σκεφτεται τοσο λαθος σε ενα τοσο απλο προβλημα.
Apoll Δημοσ. 23 Ιουλίου 2015 Δημοσ. 23 Ιουλίου 2015 Γραψε σε C#. Αλλα και παλι μου κανει εντυπωση καποιος που ασχολειται αρκετα με c#, να σκεφτεται τοσο λαθος σε ενα τοσο απλο προβλημα. Ε τι εννοείς "σκέφτομαι λάθος"; Εσύ δεν έχεις γράψει τίποτα στο παράδειγμά σου. Ούτε τί κάνεις loop, ούτε τι κάνεις με τα δεδομένα, ούτε πως υπολογίζεις το υπόλοιπο στο επόμενο loop. Εγώ τουλάχιστον τα έγραψα.
imitheos Δημοσ. 23 Ιουλίου 2015 Δημοσ. 23 Ιουλίου 2015 Η πιο απλή λύση που θα έρθει στο μυαλό κάποιου είναι πιστεύω η παρακάτω (σε C μια και δεν γνωρίζω C#) #include <stdio.h> int main(void) { static const int bills[7] = { 500, 200, 100, 50, 20, 10, 5}; int num[7], sum = 0, i; scanf("%d", &sum); for (i = 0; i < 7; i++) { num[i] = sum / bills[i]; sum -= num[i] * bills[i]; if (num[i] > 0) printf("To poso ton %3d einai %d\n", bills[i], num[i]); } return 0; } Λόγω βαρεμάρας έχω scanf και δεν ελέγχω ούτε αν είναι ποσό πολλαπλάσιο του 5. % echo 175| ./a.out To poso ton 100 einai 1 To poso ton 50 einai 1 To poso ton 20 einai 1 To poso ton 5 einai 1 Ίσως απλά κάποιος να μην έχει διδαχτεί πίνακες ακόμη και να την κάνει με 7 μεταβλητές n500,n200,κτλ και 7 διαιρέσεις αντί για for αλλά η γενική ιδέα είναι αυτή. 1
παπι Δημοσ. 23 Ιουλίου 2015 Δημοσ. 23 Ιουλίου 2015 σωστος, η πιο απλη και λαθος. τα 50 σεντς πως θα τα δωσω; τεσπα, στη c θα ειναι παλουκι, αλλα σε c# ειναι αρκετα απλο λογο features. Πχ εχει τυπο για χρημα. εκει που στη c θα πεις, wtf >??? 10.23 % 5, στη c# γινεται για αυτο λεω πως ειναι αρκετα λαθος προσεγγιση που κανει ο apoll. Αν εγραφε c οκ, κατανοητο, δεν υπαρχουν τα εργαλεια, αλλα σε c# υπαρχουν. Τεσπα, σε c# μια σωστη υλοποιηση για καποιον που δουλευει με αυτη τη γλωσσα. static IEnumerable<KeyValuePair<decimal,decimal>> calc(List<decimal> banknotes, decimal value) { Func<decimal,decimal,decimal> div = (x,y) => (x - x % y) / y; foreach (var banknote in banknotes.OrderByDescending(x=>x)) { yield return new KeyValuePair<decimal, decimal>(banknote, div(value, banknote)); value %= banknote; } } Μεχρι και αυτη την θεωρω λαθος, θα γραψω πιο μετα μια σωστοτατη. full namespace ConsoleApplication2 { class Program { static IEnumerable<KeyValuePair<decimal,decimal>> calc(List<decimal> banknotes, decimal value) { Func<decimal,decimal,decimal> div = (x,y) => (x - x % y) / y; foreach (var banknote in banknotes.OrderByDescending(x=>x)) { yield return new KeyValuePair<decimal, decimal>(banknote, div(value, banknote)); value %= banknote; } } static void Main(string[] args) { var banknotes = new List<decimal>() { 0.001m, 0.01m, 0.10m, 0.5m, 1m, 5m, 10m, 20m, 50m }; decimal input = 397.738m; decimal errorCheck = 0.0m; Console.WriteLine("intput:\t{0}", input); foreach (var item in calc(banknotes, input)) { Console.WriteLine("{0}\t=>\t{1}", item.Key, item.Value); errorCheck += item.Key * item.Value; } Console.WriteLine("Error Check:\t{0}",errorCheck); Console.ReadLine(); } } } output intput: 397,738 50 => 7,000 20 => 2,000 10 => 0,000 5 => 1,000 1 => 2,000 0,5 => 1,00 0,10 => 2,0 0,01 => 3,0 0,001 => 8 Error Check: 397,738 1
Προτεινόμενες αναρτήσεις
Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε
Πρέπει να είστε μέλος για να αφήσετε σχόλιο
Δημιουργία λογαριασμού
Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!
Δημιουργία νέου λογαριασμούΣύνδεση
Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.
Συνδεθείτε τώρα