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

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

Δημοσ.

Με τα πολλά του το ζήτησαν και συνάδελφοι και κατέληξε έτσι να έχει εκτός από την κανονική του δουλειά κι ένα χόμπι/δουλειά για αρκετά χρόνια. Εμένα αυτό μου λέει πως αν είσαι έτοιμος να ιδρώσεις τη φανέλα, και με τη μικρότερη αφορμή που θα βρεις μπορείς να κάνεις πολλά πράγματα.

Ίσως τώρα έχουμε καλομάθει με τα άπειρα προγράμματα για κάθε σκοπό και την ευκολία που κατεβαίνουν από το διαδίκτυο.

 

Παλιά που το DOS και τα windows 3.11 δεν παρείχαν τίποτα από προγράμματα, έπαιζε πολύ ο χομπίστικος προγραμματισμός. Εκτός από εφήβους, ξέρω γονείς / καθηγητές στην ηλικία του bazinga αλλά και μεγαλύτερους που ασχολούνταν. Πολύς κόσμος έφτιαχνε με μεράκι (είτε σε C ή σε pascal για όσους ήθελαν κάτι πιο βατό) προγραμματάκια που σήμερα θα θεωρούνταν εντελώς άσκοπα αλλά τότε σου έλυναν τα χέρια. Και φυσικά μετά έπεφτε μεταφορά με δισκέτες σε όλους τους φίλους και γνωστούς.

 

Όπως θα θυμούνται οι παλιοί σαν τον migf1, ειδικά το περιβάλλον της borland ήταν καταπληκτικό για την εποχή του και παρείχε μια τρελή καινοτομία για τότε. Έδινε την δυνατότητα με κάποιες δομές και δείκτες να αναπαράγεις εύκολα το ίδιο το περιβάλλον που βλέπετε παρακάτω.

 

Δηλαδή του έλεγες θέλω ένα μενού με όνομα file που να έχει αυτά τα υπομενού και όταν κάνω κλικ να γίνονται αυτές οι λειτουργίες. Έτσι δηλαδή, αντίστοιχα με αυτό που γίνεται σήμερα με gtk, qt, κτλ, μπορούσες να έχεις πολύ εύκολα ένα "gui" για την εφαρμογή σου.

 

Όπως είπες και εσύ για αυτό το λογιστή, κυκλοφορούσαν προγραμματάκια που τύφλα να έχουν οι επαγγελματίες.

 

 

TURBO-C%2B%2B.png

 

 

 

 

 

@OP

 

Δεν ξέρω τι γίνεται επαγγελματικά και τι δεν γίνεται αλλά δεν είναι αιτία αυτό να παρατήσεις τον προγραμματισμό. Μην αποθαρρύνεσαι και συνέχισε να ασχολείσαι.

 

Ένα κακό που τονίζουμε συνέχεια στο φόρουμ είναι ότι σε πολλές σχολές σου μαθαίνουν το συντακτικό μιας γλώσσας και σου λένε γράψε προγράμματα χωρίς να σε μαθαίνουν πώς να σκέφτεσαι.

 

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

 

Αφιέρωσε χρόνο να διαβάσεις κάποιο καλό βιβλίο και όποια απορία έχεις μπορείς να ρωτήσεις και εδώ φυσικά.

 

τελοσπαντων παιδια θα το αφησω στη ακρη γιατι με αυτα που ξερω δεν παιζει να το κανω ποτε.

Σας ευχαριστω για τη βοηθεια παντως :) :)

Με τη χρήση του modulo που είπανε κάποια παιδιά γίνεται πιο γρήγορα η δουλειά μας αλλά ξέχνα το για την ώρα. Πρώτα ας το κάνουμε μπακάλικα.

03101234131.jpeg

 

Έχεις μπροστά σου αυτή τη θήκη η οποία ας θεωρήσουμε ότι έχει επάρκεια σε κάθε χαρτονόμισμα. Έρχομαι εγώ και σου ζητάω 1895 ευρώ. Γράψε μας αναλυτικά το σκεπτικό σου. Τι χαρτονομίσματα θα μου έδινες και γιατί ?

  • Απαντ. 68
  • Δημ.
  • Τελ. απάντηση

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

Δημοσ.

Δηλαδή του έλεγες θέλω ένα μενού με όνομα file που να έχει αυτά τα υπομενού και όταν κάνω κλικ να γίνονται αυτές οι λειτουργίες. Έτσι δηλαδή, αντίστοιχα με αυτό που γίνεται σήμερα με gtk, qt, κτλ, μπορούσες να έχεις πολύ εύκολα ένα "gui" για την εφαρμογή σου.

 

 

Είχα κάνει τότε implement το ίδιο πράγμα (οπτικά clone) σαν widget library σε Clipper -- βασικά menu bar με όλα τα features συν buttons, dialogs, checkboxes και τέτοια.

 

Θυμάμαι χρειάστηκε total rewrite 2 φορές γιατί οι πρώτες προσπάθειες μετά από ένα σημείο φαινόταν ότι μπήκαν σε λάθος βάση και δε θα πάνε πολύ μακριά και όλη η διαδικασία πήρε μήνες+, αλλά μετά ε; Έχω library και το βάζω παντού!

 

Ακόμα το έχω το source. Good times.

 

 

Δημοσ.

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 την δυνατότητα να βάλουμε λογικά διαγράμματα :(

 

Δημοσ.

Καθόσαστε κοτζάμ προγραμματιστές να δώσετε λύση σε ένα πρόβλημα που υπάρχει λόγο μη εκτέλεσεις RTFM

 

αφήστε να ψοφήσει και κανένας λόγο natural selection. Πολλοί γινίκαμε. 

  • Like 1
Δημοσ.

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

 

Δυστυχώς τον να τον γράψω εγώ εδώ το ψευδοκώδικα, είναι δεκάδες φορές μεγαλύτερη προσπάθεια από το να γράψω την λύση σε κάποια γλώσσα προγραμματισμού (10 γραμμές κώδικας σε .ΝΕΤ με την χρήση Math.DivRem και ένα loop) ή να γράψω το λογικό διάγραμμα.

 

Αλλά το  insomnia text box την δυνατότητα να βάλουμε λογικά διαγράμματα :(

 

 

 

10 γραμμες με c#??

 

μια για div

μια για mod

αντε και μια για το loop

 

μας κανουν 3

  • Moderators
Δημοσ.

Αυτο νομιζα οτι ζηταει :-D  Να σου πω οτι κι εγω δεν το εχω διδαχτει το μαθημα στην 3η ληκειου (ειμουν απο αυτους που ηταν σε αλλη ειδικοτητα - επαλ) και προσπαθω να μαθω λιγα πραγματα τωρα πριν περασω σε τει πληγροφορικης. Γιατι ειναι λαθος το x5?

 

Γιατί δε σου ζητάει αυτό. Αυτό που σου ζητάει είναι να του πεις πόσα διαφορετικά χαρτονομίσματα πρέπει να δώσει ο ταμίας στον πελάτη για ένα х ποσό. Το "πολλαπλάσιο του 5" φαντάζομαι είναι να μη βάλεις μέσα και κέρματα, αλλά η λύση θα ήταν ίδια.

  • Like 1
Δημοσ.

Γιατί δε σου ζητάει αυτό. Αυτό που σου ζητάει είναι να του πεις πόσα διαφορετικά χαρτονομίσματα πρέπει να δώσει ο ταμίας στον πελάτη για ένα х ποσό. Το "πολλαπλάσιο του 5" φαντάζομαι είναι να μη βάλεις μέσα και κέρματα, αλλά η λύση θα ήταν ίδια.

Ναι, το καταλαβα αυτο στην συναιχεια που διαβαζα τις υπολοιπες απαντησεις του αρθρου, σε ευχαριστω παντως. :-)

Δημοσ.

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.

Δημοσ.

Απο περιεργεια για να δω πως σκεφτεσαι, δωσε μου υλοποιηση.

σκέφτεται σαν industrial programmer Και όχι σαν χομπίστας. 

 

Κρατάς πισινή στα αποτελέσματα και θέτεις όρια, δεν βαράς κουτουρού άσκηση στο λύκειο. Και δεν είμαι προγραμματιστής, απλά πέρασα και από .net φεγγάρια

  • Like 1
Δημοσ.

Απο περιεργεια για να δω πως σκεφτεσαι, δωσε μου υλοποιηση.

 

Τόσο δύσκολο είναι αυτό που έγραψα για να αντικαταστήσεις τις γραμμές με εντολές τις γλώσσες που θες;

 

Για το πως σκέφτομαι, ακόμα και αυτό που έγραψα δεν μπορείς να σου δώσει κάποια σχετική ιδέα. Γιατί ακόμα και το array της γραμμής 1 θα το τράβαγα με μορφή λίστας από το model.

 

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

Πάντως αν επιμένεις για κώδικα, πολύ ευχαρίστως να τον γράψω :) Αλλά πες σε VB.NET ή C#.NET;

Αποθήκευση σε αντικείμενο ή εκτύπωση σε console; Με καταχώρηση των μηδενικών τιμών ή όχι;

Δημοσ.

Γραψε σε C#. Αλλα και παλι μου κανει εντυπωση καποιος που ασχολειται αρκετα με c#, να σκεφτεται τοσο λαθος σε ενα τοσο απλο προβλημα.

Δημοσ.

Γραψε σε C#. Αλλα και παλι μου κανει εντυπωση καποιος που ασχολειται αρκετα με c#, να σκεφτεται τοσο λαθος σε ενα τοσο απλο προβλημα.

 

Ε τι εννοείς "σκέφτομαι λάθος"; Εσύ δεν έχεις γράψει τίποτα στο παράδειγμά σου.

Ούτε τί κάνεις loop, ούτε τι κάνεις με τα δεδομένα, ούτε πως υπολογίζεις το υπόλοιπο στο επόμενο loop.

 

Εγώ τουλάχιστον τα έγραψα.

Δημοσ.

Η πιο απλή λύση που θα έρθει στο μυαλό κάποιου είναι πιστεύω η παρακάτω (σε 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 αλλά η γενική ιδέα είναι αυτή.
  • Like 1
Δημοσ.

σωστος, η πιο απλη και λαθος. τα 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

  • Like 1

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

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

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

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

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

Σύνδεση

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

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

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