Γιώργος
Τιμώμενο Μέλος
Άσκηση 17
εχουμε τα ονοματα των 12 τμηματων μιας εταιρειας και τα ονοματα των 6 πολεων στις οποιες εχει παραρτηματα η εν λογω εταιρεια.τα επιθετα των υπαλλήλων που εργάζονται για καθε ενα τμήμα του καθε παραρτήματος κρατούνται σε ενα πινακα ΕΠ[12,6]
α)να βρειτε σε ποιο τμημα και ποια πολη εργαζεται ο κ. ΄΄ανδρεου΄΄ Θεωρειστε οτι ειναι μοναδικος
Β)για καθε τμημα να ελεγξετε αν υπαρχει πόλη που να εργαζεται καποιος ΄΄παπαδοπουλος΄΄ .Αν δεν βρεθει υπάλληλος με αυτο το επιθετο να εμφανιζεται κατάλληλο μηνυμα.
γ)για καθε πολη να ελεγξετε αν υπαρχει τμήμα στο οποιο να εργαζεται καποιος ΙΩΑΝΝΟΥ. Αν δεν βρεθει υπαλληλος με αυτο το επιθετο να εμφανιζεται καταλληλο μηνυμα.
Άντε πάμε.... για μία και μοναδική φορά θα κάνω αλγόριθμο, αφού θεωρεί η άσκηση ότι τα δεδομένα παίρνονται έτοιμα. Αν κάνετε πρόγραμμα, θα πρέπει να τα διαβάσετε από το πληκτρολόγιο.
Θα κάνω μόνο το ερώτημα (α), τα άλλα ας τα βγάλει άλλος.
[B]Αλγόριθμος[/B] Βαριέμαι_να_βάλω_τίτλο
[B]Δεδομένα[/B] //ΤΜΗΜΑ, ΠΟΛΗ, ΕΠ//
found ← Ψευδής
i ← 1
j ← 1
[B]Όσο[/B] ((found=Ψευδής) [B]και[/B] (i≤12)) [B]επανάλαβε[/B]
j ← 1
[B]Όσο[/B] ((found=Ψευδής) [B]και[/B] (j≤6)) [B]επανάλαβε[/B]
[B]Αν[/B] ΕΠ[i,j]="Ανδρέου" [B]τότε
[/B] found ← Αληθής
i_key = i
j_key = j
[B]Τέλος_αν[/B]
j ← j + 1
[B]Τέλος_επανάληψης[/B]
i ← i + 1
[B]Τέλος_επανάληψης[/B]
[B]Αν[/B] (found=Ψευδής) [B]τότε[/B]
[B]Εμφάνισε[/B] "Δεν βρέθηκε ο κος Ανδρέου"
[B]αλλιώς[/B]
[B]Εμφάνισε[/B] "Ο κος Ανδρέου εργάζεται στο τμήμα ", ΤΜΗΜΑ[i_key], " της πόλης ", ΠΟΛΗ[j_key]
[B]Τέλος_αν[/B]
[B]Τέλος[/B] Βαριέμαι_να_βάλω_τίτλο
Ελπίζω να μην έγραψα καμιά πατάτα, έχω καιρό να γράψω σ' αυτό το μίασμα που μας παρουσιάζεται σαν γλώσσα προγραμματισμού.
Σημείωση: Το μήνυμα αυτό γράφτηκε 16 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.
Γιώργος
Τιμώμενο Μέλος
Αυτό είναι όμως πάρα πολύ σημαντικό λάθος.δεν γινεται να σου κοψουν 3 μορια επειδη ξεχασες τα εισαγωγικα...το πολυ να σου κοψουν ενα μοριο..0.6 στα 20 για εισαγωγικα παει πολυ...
Δηλαδή έτσι το πρόγραμμά σου ψάχνει τη μεταβλητή Κομπιουτερίδης, δεν τη βρίσκει και βγάζει μήνυμα λάθους.
Ενώ με τα εισαγωγικά δείχνεις ότι είναι αλφαριθμητικό.
Σημείωση: Το μήνυμα αυτό γράφτηκε 16 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.
Γιώργος
Τιμώμενο Μέλος
Με προσθήκη ενός counter.Είναι το πιο πιθανό. Οπότε η λύση θέλει παραλλαγή αναζήτησης (ενώ η άλλη περίπτωση είναι αρκετά πιο μπερδεμένη και θέλει μεταξύ των άλλων ταξινόμηση)
Σημείωση: Το μήνυμα αυτό γράφτηκε 16 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.
Γιώργος
Τιμώμενο Μέλος
Σημείωση: Το μήνυμα αυτό γράφτηκε 16 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.
Γιώργος
Τιμώμενο Μέλος
Ναι, αλλά δεν εξετάζουμε την αποδοτικότητα του προγράμματος - Κεφάλαιο 5, εκτός ύλης.Όχι δεν κόβουν τίποτα απο αυτό..απλά επιβαρύνει το πρόγραμμα γιατι το βάζει να κάνει περιττές συγκρίσεις έτσι δεν είναι?
Σημείωση: Το μήνυμα αυτό γράφτηκε 16 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.
Γιώργος
Τιμώμενο Μέλος
ΠΕΤΡΟ, γράφε πρόγραμμα.
Σωστό φαίνεται, εκ πρώτης όψης. Βέβαια εγώ θα έβαζα το πρόγραμμα να σταματάει όταν βρει τον Κωνσταντίνου και τον τσεκάρει. Δεν ξέρω αν κόβουν απ' αυτό, όμως.
Σημείωση: Το μήνυμα αυτό γράφτηκε 16 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.
Γιώργος
Τιμώμενο Μέλος
Είπε κανείς ότι θα πέσει αναγκαστικά εκφώνηση πέντε γραμμών;Περιμένεις να διαβάσω την εκφώνηση;
Αν βγάλεις τις σάλτσες είναι μία [highlight]πάρα πολύ απλή[/highlight] άσκηση.
Ψάρακα!
Σημείωση: Το μήνυμα αυτό γράφτηκε 16 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.
Γιώργος
Τιμώμενο Μέλος
Άσκηση 7
Αυτό είναι ένα μεγάλο 4ο θέμα. Παραείναι, βασικά, μεγάλο για 4ο θέμα.Γράψτε ένα πρόγραμμα σε Γλώσσα προγραμματισμού ΓΛΩΣΣΑ για την αυτόματη κράτηση θέσεων μιας μικρής αεροπορικής εταιρίας. Η εταιρία έχει μόνο ένα αεροπλάνο 20 θέσεων. Το πρόγραμμα θα πρέπει να κάνει κράτηση θέσεων σε κάθε πτήση της αεροπορικής εταιρίας.
Το πρόγραμμα θα πρέπει να δίνει τις εξής εναλλακτικές:
Παρακαλώ πληκτρολογήστε 1 για "Πρώτη θέση".
Παρακαλώ πληκτρολογήστε 2 για "Οικονομική θέση".
Παρακαλώ πληκτρολογήστε 0 για έξοδο από το πρόγραμμα.
Σε περίπτωση που προχωρήσει ο χρήστης σε διαδικασία κράτησης θέσης, το πρόγραμμα θα ζητάει αρχικά τα προσωπικά στοιχεία του πελάτη (όνομα, επώνυμο, διεύθυνση, τηλέφωνο, e-mail).
Αν ο χρήστης πληκτρολογεί 1, τότε το πρόγραμμα θα πρέπει να δεσμεύει μία θέση στην "Πρώτη θέση" (θέσεις 1-5). Αν ο χρήστης πληκτρολογεί 2, τότε το πρόγραμμα θα πρέπει να δεσμεύει μία θέση στην "Οικονομική θέση" (θέσεις 6-20). Το πρόγραμμα θα δέχεται από τον χρήστη τον αριθμό της θέσης που θα δεσμευτεί.
Στη συνέχεια το πρόγραμμα θα πρέπει να εκτυπώνει τα στοιχεία της κάρτας επιβίβασης, δηλαδή τα στοιχεία του επιβάτη, καθώς και τον αριθμό της θέσης που δεσμεύτηκε και την κατηγορία της θέσης ("Πρώτη" ή "Οικονομική").
Προφανώς το πρόγραμμα δεν θα πρέπει ποτέ να δεσμεύει θέση η οποία έχει ήδη κρατηθεί. Σε περίπτωση που ο χρήστης πληκτρολογεί 1, δηλαδή επιθυμεί θέση στην "Πρώτη θέση", αλλά όλες οι θέσεις της "Πρώτης θέσης" είναι δεσμευμένες, το πρόγραμμα θα πρέπει να ρωτάει (με κατάλληλο μήνυμα) το χρήστη εάν θέλει θέση στην "Οικονομική θέση". Αντίστοιχα, στην περίπτωση που ο χρήστης πληκτρολογεί 2, δηλαδή επιθυμεί θέση στην "Οικονομική θέση", αλλά όλες οι θέσεις της "Οικονομικής θέσης" είναι δεσμευμένες, το πρόγραμμα θα πρέπει να ρωτάει τον χρήστη αν θέλει θέση στην "Πρώτη θέση". Ανάλογα με την απάντηση, το πρόγραμμα είτε θα δεσμεύει θέση στην κατάλληλη κατηγορία είτε θα τυπώνει το μήνυμα "Η επόμενη πτήση είναι σε 4 ώρες".
Η παραπάνω διαδικασία θα επαναλαμβάνεται συνεχώς μέχρι να γεμίσουν όλες οι θέσεις ή να πληκτρολογηθεί το 0. Πριν τον τερματισμό του προγράμματος θα πρέπει να τυπώνεται το σύνολο των θέσεων που έχουν κρατηθεί σε κάθε κατηγορία, όπως στο παράδειγμα:
Στην "Πρώτη θέση" έχουν δεσμευτεί 3 θέσεις.
Στην "Οικονομική θέση" έχουν δεσμευτεί 3 θέσεις.
Bonus υποερώτημα: Να τυπώνεται, τέλος, η λίστα επιβατών όπως στο παρακάτω παράδειγμα, όπου έχουν γίνει 3 κρατήσεις συνολικά:
Θέση 1 (Πρώτη): Παπαδόπουλος Σπύρος
Θέση 3 (Πρώτη): Σταυροπούλου Βίκη
Θέση 15 (Οικονομική): Geek Mostel
Σημείωση: Θεωρείστε ότι τα προσωπικά στοιχεία των πελατών θα είναι πάντα αποδεκτά. Για όλα τα υπόλοιπα δεδομένα να πραγματοποιήσετε έλεχο δεδομένων και να εμφανίζετε κατάλληλα μηνύματα λάθους σε περίπτωση μη αποδεκτών δεδομένων.
Ο mostel να χρησιμοποιήσει συνάρτηση παραγωγής τυχαίων αριθμών και να κάνει την υλοποίηση σε C.
Θερμή παράκληση, να τηρείτε τις απαραίτητες εσοχές στους κώδικές σας.
Είμαι περίεργος να μάθω πόσοι ψάρωσαν απ' την εκφώνηση....
Σημείωση: Το μήνυμα αυτό γράφτηκε 16 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.
Γιώργος
Τιμώμενο Μέλος
Έχει σχέση με συνάρτηση λογαρίθμων;
trunc(log(abs(x))) πρέπει να 'ναι.
Υ.γ.: Τέτοιο πράγμα πάντως αποκλείεται να ζητηθεί στις Πανελλήνιες. :iagree:
Σημείωση: Το μήνυμα αυτό γράφτηκε 16 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.
Γιώργος
Τιμώμενο Μέλος
Κι αν σας την έδωσε έτσι ο καθηγητής..... είναι πατάρας.
Σημείωση: Το μήνυμα αυτό γράφτηκε 16 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.
Γιώργος
Τιμώμενο Μέλος
+1Κοινώς το βιβλίο είναι γεμάτο κενά . Δεν έχουν άδικο να λένε ότι είναι το πιο κακογραμμένο βιβλίο της τεχνολογικής μαζί με το Α.Ο.Δ.Ε.
Αλλά δυστυχώς, σ' αυτό εξεταζόμαστε.
Σημείωση: Το μήνυμα αυτό γράφτηκε 16 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.
Γιώργος
Τιμώμενο Μέλος
Εγώ δεν έχω UNIX, o server του ΕΜΠ έχει.Ε, αφού έχεις UNIX, πώς θα κάνεις install αρχείο .exe ?
Κάνε την και σε C αν έχεις όρεξη. Θα 'χει αρκετό ενδιαφέρον για να δουν οι φίλοι εδώ και πώς λειτουργεί αυτή η γλώσσα!
Σημείωση: Το μήνυμα αυτό γράφτηκε 16 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.
Γιώργος
Τιμώμενο Μέλος
Για να το τρέξω στο UNIX.Γιατί ρε συ; Δεν έχει τόσο μεγάλη διαφορά...
ΓλωσσοΜάθεια δεν την εγκαθιστώ καν στο PC μου. Ποτέ φτηνά αποβράσματα της κοινωνίας.
Σημείωση: Το μήνυμα αυτό γράφτηκε 16 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.
Γιώργος
Τιμώμενο Μέλος
Θα αστειεύεσαι, έτσι;Τι θα λέγατε να τη δουλέψουμε μόνο με εντολές χωρίς πίνακες;
Δεν το μετατρέπεις σε C;
Σημείωση: Το μήνυμα αυτό γράφτηκε 16 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.
Γιώργος
Τιμώμενο Μέλος
Λοιπόν, βάζω μια άσκηση που μόλις κατασκεύασα. Εδώ φαίνεται η σημασία του γράφω αλγόριθμο από μέσα προς τα έξω. Κατ' αυτόν τον τρόπο βγαίνει η άσκηση πολύ πιο εύκολα. Έχουμε λοιπόν:
Άσκηση 5
Μια επιχείρηση έχει 30 πωλητές. Να γίνει αλγόριθμος που θα διαβάζει τις πωλήσεις για κάθε πωλητή. Στη συνέχεια θα υπολογίζει και θα εμφανίζει το άθροισμα των πωλήσεων για κάθε μήνα και για κάθε τρίμηνο του κάθε πωλητή. Επίσης, θα εμφανίζει το bonus που θα λάβει ο κάθε πωλητής, γνωριζόντας ότι αν ο τριμηνιαίος τζίρος (του κάθε πωλητή) ξεπεράσει τα 30.000 ευρώ, τότε ο πωλητής δικαιούται το 5% των κερδών. Τέλος, θα εμφανίζει το σύνολο των χρημάτων που θα εισπράξει η εταιρία από όλους τους πωλητές, αλλά και θα εμφανίζει το σύνολο των χρημάτων που θα δώσει η εταιρία από τα κέρδη στους πωλητές, εξαιτίας των bonus. Αν τα καθαρά κέρδη της επιχείρησης είναι πάνω από 400.000 ευρώ, θα εμφανίζεται το μήνυμα "Η επιχείρηση έχει κέρδη", αλλιώς το μήνυμα "Η επιχείρηση έχει ζημία".
Ενδιαφέρουσα.
(Μην δείτε το παρακάτω αν θέλετε να τη λύσετε )
[B]ΠΡΟΓΡΑΜΜΑ[/B] Η_καλή_μου_επιχείρηση
[B]ΣΤΑΘΕΡΕΣ[/B]
EMPL = 30
ΟΡΙΟ_BONUS = 30000
TARGET = 400000
BONUS_PERCENT = 0.05
MSG1 = 'Η επιχείρηση έχει κέρδη'
MSG2 = 'Η επιχείρηση έχει ζημία'
[B]ΜΕΤΑΒΛΗΤΕΣ[/B]
[B]ΑΚΕΡΑΙΕΣ:[/B] i, j, k
[B]ΠΡΑΓΜΑΤΙΚΕΣ:[/B] sales[12, EMPL], total_month[12], empl_3month[4, EMPL], total_3month[4], bonus[EMPL]
[B]ΠΡΑΓΜΑΤΙΚΕΣ:[/B] sales_day, total_sales, total_bonus, net_profit
[B]ΑΡΧΗ[/B]
[B]ΓΙΑ[/B] i [B]ΑΠΟ[/B] 1 [B]ΜΕΧΡΙ[/B] 12
total_month[i] ← 0
[B]ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
[/B][B] ΓΙΑ[/B] i [B]ΑΠΟ[/B] 1 [B]ΜΕΧΡΙ[/B] 4
total_3month ← 0
[B]ΓΙΑ[/B] j [B]ΑΠΟ[/B] 1 [B]ΜΕΧΡΙ[/B] EMPL
empl_3month_[i,j] ← 0
[B]ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ[/B]
[B]ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
[/B]
[B]ΓΙΑ[/B] i [B]ΑΠΟ[/B] 1 [B]ΜΕΧΡΙ[/B] EMPL
bonus[i] ← 0
[B]ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ[/B]
[B]ΓΙΑ[/B] i [B]ΑΠΟ[/B] 1 [B]ΜΕΧΡΙ[/B] 12
[B]ΓΙΑ[/B] j [B]ΑΠΟ[/B] 1 [B]ΜΕΧΡΙ[/B] EMPL
sales[i,j] ← 0
[B]ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ[/B]
[B]ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ[/B]
total_sales ← 0
total_bonus ← 0
[B]ΓΙΑ[/B] i [B]ΑΠΟ[/B] 1 [B]ΜΕΧΡΙ[/B] 12
[B]ΓΡΑΨΕ[/B] i, '-ος μήνας'
[B]ΓΙΑ[/B] j [B]ΑΠΟ[/B] 1 [B]ΜΕΧΡΙ[/B] EMPL
[B]ΓΡΑΨΕ[/B] j, '-ος πωλητής'
[B]ΓΙΑ[/B] k [B]ΑΠΟ[/B] 1 [B]ΜΕΧΡΙ[/B] 3
[B]ΓΡΑΨΕ[/B] 'Δώσε τις πωλήσεις του πωλητή για την ', k, '-η ημέρα του μήνα : '
[B]ΔΙΑΒΑΣΕ[/B] sales_day
sales[i,j] ← sales[i,j] + sales_day
[B]ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ[/B]
[B]ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ[/B]
[B]ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ[/B]
[B]ΓΙΑ[/B] i [B]ΑΠΟ[/B] 1 [B]ΜΕΧΡΙ[/B] 12
[B]ΓΙΑ[/B] j [B]ΑΠΟ[/B] 1 [B]ΜΕΧΡΙ[/B] EMPL
total_month[i] ← total_month[i] + sales[i,j]
[B]ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ[/B]
[B]ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
[/B] [B]ΓΙΑ[/B] i [B]ΑΠΟ[/B] 1 [B]ΜΕΧΡΙ[/B] 12
[B]ΓΡΑΨΕ[/B] 'Οι συνολικές πωλήσεις τον ', i, '-o μήνα είναι ', total_month[i], ' ευρώ.'
[B]ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ[/B]
[B]ΓΙΑ[/B] j [B]ΑΠΟ[/B] 1 [B]ΜΕΧΡΙ[/B] EMPL
[B]ΓΙΑ[/B] i [B]ΑΠΟ[/B] 1 [B]ΜΕΧΡΙ[/B] 4
[B]ΓΙΑ[/B] k [B]ΑΠΟ[/B] 1 [B]ΜΕΧΡΙ[/B] 3
empl_3month[i,j] ← empl_3month[i] + sales[3*(i-1) + k, j]
[B]ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ[/B]
[B]ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ[/B]
[B]ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ[/B]
[B]ΓΙΑ[/B] j [B]ΑΠΟ[/B] 1 [B]ΜΕΧΡΙ[/B] EMPL
[B]ΓΙΑ[/B] i [B]ΑΠΟ[/B] 1 [B]ΜΕΧΡΙ[/B] 4
[B]ΓΡΑΨΕ[/B] 'Ο τριμηνιαίος τζίρος για το ', i, '-o τρίμηνο του ', j, '-ου πωλητή είναι ', empl_3month[i, j], ' ευρώ.'
[B]ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ[/B]
[B]ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ[/B]
[B]ΓΙΑ[/B] i [B]ΑΠΟ[/B] 1 [B]ΜΕΧΡΙ[/B] 4
[B]ΓΙΑ[/B] j [B]ΑΠΟ[/B] 1 [B]ΜΕΧΡΙ[/B] 3
total_3month[i] ← total_3month[i] + total_month[3*(i-1) + j]
[B]ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ[/B]
[B]ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ[/B]
[B]ΓΙΑ[/B] j [B]ΑΠΟ[/B] 1 [B]ΜΕΧΡΙ[/B] EMPL
[B]ΓΙΑ[/B] i [B]ΑΠΟ[/B] 1 [B]ΜΕΧΡΙ[/B] 4
[B]AN[/B] empl_3month[i, j] > ΟΡΙΟ_BONUS [B]TOTE[/B]
bonus[j] ← bonus[j] + BONUS_PERCENT*total_3month[i]
[B]ΤΕΛΟΣ_ΑΝ[/B]
[B]ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ[/B]
[B]ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ[/B]
[B]ΓΙΑ[/B] j [B]ΑΠΟ[/B] 1 [B]ΜΕΧΡΙ[/B] EMPL
ΓΡΑΨΕ 'Το bonus που θα πάρει ο ', j, '-ος πωλητής είναι ', bonus[j], ' ευρώ.'
[B]ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ[/B]
[B]ΓΙΑ[/B] i [B]ΑΠΟ[/B] 1 [B]ΜΕΧΡΙ[/B] 4
total_sales ← total_sales + total_3month[i]
[B]ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ[/B]
[B]ΓΙΑ[/B] j [B]ΑΠΟ[/B] 1 [B]ΜΕΧΡΙ[/B] EMPL
total_bonus ← total_bonus + bonus[j]
[B]ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ[/B]
[B]ΓΡΑΨΕ[/B] 'Η εταιρία θα εισπράξει συνολικά από τους πωλητές ', total_sales, ' ευρώ και θα δώσει σε bonus ', total_bonus, ' ευρώ.'
net_profit ← total_sales - total_bonus
[B]ΑΝ[/B] net_profit > TARGET [B]ΤΟΤΕ[/B]
ΓΡΑΨΕ MSG1
[B]ΑΛΛΙΩΣ[/B]
ΓΡΑΨΕ MSG2
[B]ΤΕΛΟΣ_ΑΝ[/B]
[B]
ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ[/B]
[I]Σημείωση: θεωρούμε ότι οι πωλήσεις είναι μη αρνητικοί αριθμοί[/I]
Ελπίζω να μην ξέχασα κάτι.
Mosteeeeeeeeeeeeeeeeel, με πέθανες.
Σημείωση: Το μήνυμα αυτό γράφτηκε 16 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.
Γιώργος
Τιμώμενο Μέλος
Δεν πρόκειται να βγάλεις άκρη. Έχω έρθει σε πολλές αντιπαραθέσεις με φροντιστές και τελικά δεν έχει κανένα νόημα.Αλλα οταν ξαναεχω αναπτυξη εφαρμογων στο φροντ. θα τους ρωτησω...
Αλγόριθμος: ≠
ΠΡΟΓΡΑΜΜΑ: <>
Στο λέω 100%. :no1:
Κι επίσης... δεν με νοιάζει τι λέει το κάθε φροντηστηριακό βιβλίο παρά μόνο το σχολικό. Ξεκολλήστε από τα φροντηστιριακά βιβλία αναφορικά με θεωρία. Σχεδόν όλα έχουν ελλείψεις.-
Διαβάστε κεφάλαια 7-8-9-10 από βιβλίο, κάντε πάντα προγράμματα και πάτε προς ολοταχώς για βαθμό.
(Τα 7 έως 10 για τα προγράμματα. Τα 1-6 απαραίτητα για τη θεωρία.)
Σημείωση: Το μήνυμα αυτό γράφτηκε 16 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.
Γιώργος
Τιμώμενο Μέλος
Ας πάμε πρώτα στα βασικά, το "Δεδομένα // όνομα,μισθός,ΑΜ,ΜΟ,όνομαMin,όνομαMax,Α //" δεν χρειάζεται. Αυτό χρειάζεται αν έχουμε κάποια σταθερά επί παραδείγματι.
Πάμε και στο ζουμί.
Δεν δίνω δεκάρα τι λένε τα φροντηστήρια ή τα βοηθήματα, αλλά ποτέ ποτέ δεν αρχικοποιούμε min σε κάτι "πολύ μεγάλο" (κι αντίστοιχα το max σε κάτι "πολύ μικρό").
Πώς το κάνουμε; Ορίζουμε min=max=το πρώτο-πρώτο μέγεθος που θα διαβαστεί. Θεωρούμε δηλαδή ότι το πρώτο μέγεθος θα είναι και το min και το max.
Πώς θα "καταλάβει" ο υπολογιστής ότι διαβάζουμε το πρώτο μέγεθος;
Ένας τρόπος είναι ορίζοντας μεταβλητή πλήθους και η συνθήκη είναι: Αν Πλήθος_Μετρήσεων = 1
Ή i=1, αν τα διαβάζεις με ΓΙΑ.
Προσοχή, το πλήθος που χρησιμοποιείς στο πρόγραμμα, είναι άλλο πλήθος, όχι το πλήθος μετρήσεων.
Άλλος τρόπος; Εδώ, επειδή ξέρουμε ότι μισθός>0, ορίζουμε min=max=0. Και η συνθήκη είναι min=0 (ή max=0, ισοδύναμα).
Έπειτα, θα δεις ότι έχω βάλει συνθήκη Αν μισθός > 0. Το πρόγραμμα δεν ζητά έλεγχο δεδομένων και πολύ σωστά δεν έβαλες. Όμως τι είναι έλεγχος δεδομένων; Απλά βάζεις την μεταβλητή σου με μία ΜΕΧΡΙΣ_ΟΤΟΥ και του ζητάς σε λάθος εισαγωγή να δώσει σωστό δεδομένο.
Εδώ τι παίζει;
Ο μισθός είναι θετικός αριθμός (κανείς δεν δουλεύει και πληρώνει κι από πάνω - λέμε - και φυσικά κανείς δεν δουλεύει αμισθοί).
Εφόσον δεν ζητάει έλεγχο δεδομένων, δεν κάνεις έλεγχο.
Ωστόσο, δεν σου ξεκαθαρίζει κι όλας ότι θα δίνονται θετικοί.
Αν δοθεί μη θετικός... τότε απλά το πρόγραμμά μας δεν κάνει τίποτα και διαβάζει τον επόμενο.
Και τέλος... Πέτρο παιδί μου, διαιρείς με μηδέν;
[B]Αλγόριθμος [/B]Άσκηση3
[COLOR=Navy][I] μισθός ← 0
ΑΜ ← 0
ΜΟ ← 0[/I][/COLOR] [B][COLOR=DarkGreen]!Περιττά, ωστόσο δεν κόβεται κάτι[/COLOR][/B]
min ← 0
max ← 0 [B][COLOR=DarkGreen]!Το min=max=0 δηλώνει ότι δεν έχουν διαβαστεί ακόμα μισθοί[/COLOR][/B]
Σ ← 0
Α ← 0 [B][COLOR=DarkGreen]!Τα αρχικοποιούμε μία φορά εκτός επανάληψης!!!! Όχι συνέχεια εντός της επανάληψης. Έτσι το Α θα ισούται στο τέλος με 1, πάντα.[/COLOR][/B]
[B]Εμφάνισε [/B]"Δώστε το όνομα του υπαλλήλου "
[B] Διάβασε [/B]όνομα
[B][COLOR=DarkGreen] !Αν δοθεί το "Κομπιουτερίδης στην αρχή??? Φεύγουν τα υπόλοιπα[/COLOR][/B]
[B]Όσο [/B]όνομα ≠ Κομπιουτερίδης επανάλαβε [B][COLOR=DarkGreen]!Όχι <> αλλά ≠, εφόσον είναι αλγόριθμος (σωστά το 'κανες)
[/COLOR][/B] [B] Εμφάνισε [/B]"Δώστε το μισθό του υπαλλήλου ", όνομα
[B] Διάβασε [/B]μισθός
[B]Αν [/B]μισθός > 0 [B]τότε [/B][B][COLOR=DarkGreen]!Αν δοθεί μη θετικός; Απλά δεν κάνουμε τίποτα.[/COLOR][/B]
[B] Εμφάνισε [/B]"Δώστε τον ΑΜ του υπαλλήλου", όνομα
[B] Διάβασε [/B]ΑΜ
[B]
Αν [/B]min = 0 [B]τότε
[/B] min ← μισθός
max ← μισθός[B]
Τέλος_αν[/B]
[B] Αν [/B]μισθός > 1000 [B]τότε [COLOR=DarkGreen]!Δεν είναι λάθος, αλλά προσοχή στις εσοχές[/COLOR][/B]
Σ ← Σ + μισθός
Α ← Α+1
[B]Τέλος_αν[/B] [B][COLOR=DarkGreen]!"Τέλος_αν" κι όχι "τέλος_αν"[/COLOR][/B]
[B] Αν [/B]μισθός < min [B]τότε[/B]
min ← μισθός
όνομαMin ← όνομα
[B]Τέλος_αν[/B]
[B] Αν [/B]μισθός > max [B]τότε[/B]
max ← μισθός
όνομαMax ← όνομα
[B]Τέλος_αν
Τέλος_αν
[/B]
[B] Εμφάνισε [/B]"Δώστε το όνομα του επόμενου υπαλλήλου" [B][COLOR=DarkGreen]!Again, προσοχή στις εσοχές. Δεν κόβει, αλλά βοηθάει.[/COLOR][/B]
[B]Διάβασε [/B]όνομα
[B][COLOR=DarkGreen]!Όπως κι εδώ, αν δοθεί το κομπιουτερίδης τα άλλα διαβάζονται, οπότε πάλι κόβει. Άρα δεν διαβάζει μισθό και ΑΜ[/COLOR][/B]
[B]Τέλος_επανάληψης[/B] [B][COLOR=DarkGreen]!"Τέλος_επανάληψης", όχι "τέλος_επανάληψης"[/COLOR][/B]
[B]Αν [/B]Α≠0 [B]τότε [COLOR=DarkGreen]!Αν διαιρέσουμε με το 0??? Τσεκούρι πέφτει εδώ!![/COLOR][/B]
ΜΟ ← Σ/Α [B][COLOR=DarkGreen]!Σ/Α. όχι ΜΟ/Α, βρε.[/COLOR][/B]
[B] Εμφάνισε [/B]"Ο Μ.Ο των υπαλλήλων που παίρνουν πάνω από 1000 ευρώ είναι", ΜΟ "."
[B]αλλιώς[/B]
[B]Εμφάνισε [/B]"Δεν υπάρχουν υπάλληλοι με μισθό πάνω από 1000 ευρώ."
[B] Τέλος_αν
[/B][B]Αν [/B]min>0 [B]τότε [/B][B][COLOR=DarkGreen]!Αν δηλαδή υπάρχουν έγκυροι μισθοί[/COLOR][/B]
[B] Εμφάνισε [/B]"Μεγαλύτερο μισθό παίρνει ο/η", όνομαMax[highlight],[/highlight] "." [B][COLOR=DarkGreen]!Ξέχασες το ',' που σου έχω κάνει highlight. Είναι βασικό[/COLOR][/B]
[B] Εμφάνισε [/B]"Μικρότερο μισθό παίρνει ο/η", όνομαMin[highlight],[/highlight] "."
[B] Τέλος_αν[/B]
[B]Τέλος [/B]Άσκηση3
Άλλαξα το 'Α' σε 'Πλήθος', καθώς είναι καλό να έχουν οι μεταβλητές μας προφανή ονόματα.
Δείτε επίσης πόσο ξεκούραστο είναι ένα πρόγραμμα χωρίς σχόλια και με τις κατάλληλες εσοχές. Σωστός επίσης ο Πέτρος που άφησε κενές γραμμές μεταξύ των διαφόρων τμημάτων του προγράμματός του.
Επίσης το 1000 το όρισα σταθερά. Δεν είναι υποχρεωτικό, αλλά είναι καλό ως προγραμματιστική τεχνική (να βάζουμε τα σημαντικά νούμερά μας ως σταθερές) και προδιαθέτει θετικά τον διορθωτή. :iagree:
Επίσης το "Πλήθος" το ορίζω ως τύπου Πραγματικός μιας και θα χρησιμοποιηθεί σε διαίρεση '/'. (Κι άλλωστε δεν πειράζει κανέναν, εφόσον εγώ την ελέγχω.)
[B]ΠΡΟΓΡΑΜΜΑ [/B]Άσκηση3
[B]ΣΤΑΘΕΡΕΣ[/B]
ΟΡΙΟ = 1000
[B]ΜΕΤΑΒΛΗΤΕΣ
[/B] [B]ΠΡΑΓΜΑΤΙΚΕΣ:[/B] μισθός, Πλήθος, ΜΟ, SUM, min, max
[B]ΑΚΕΡΑΙΕΣ:[/B] ΑΜ
[B]ΧΑΡΑΚΤΗΡΕΣ:[/B] όνομα, όνομαMin, όνομαMax
[B]ΑΡΧΗ[/B]
SUM ← 0
min ← 0
max ← 0
Πλήθος ← 0
[B]ΓΡΑΨΕ[/B] 'Δώστε το όνομα του υπαλλήλου : '
[B] ΔΙΑΒΑΣΕ [/B]όνομα
[B]ΟΣΟ [/B]όνομα <> Κομπιουτερίδης επανάλαβε
[B]ΓΡΑΨΕ [/B]'Δώστε το μισθό του υπαλλήλου : ', όνομα
[B] ΔΙΑΒΑΣΕ [/B]μισθός
[B]ΑΝ [/B]μισθός > 0 [B]ΤΟΤΕ
[/B][B] ΓΡΑΨΕ [/B]'Δώστε τον ΑΜ του υπαλλήλου ', όνομα
[B] ΔΙΑΒΑΣΕ [/B]ΑΜ
[B] ΑΝ [/B]min = 0 [B]ΤΟΤΕ
[/B] min ← μισθός
max ← μισθός
[B] ΤΕΛΟΣ_ΑΝ[/B]
[B]ΑΝ [/B]μισθός > ΟΡΙΟ [B]ΤΟΤΕ[/B]
SUM ← SUM + μισθός
Πλήθος ← Πλήθος + 1
[B]ΤΕΛΟΣ_ΑΝ
[/B][B] ΑΝ [/B]μισθός < min [B]ΤΟΤΕ[/B]
min ← μισθός
όνομαMin ← όνομα
[B]ΤΕΛΟΣ_ΑΝ[/B]
[B] ΑΝ [/B]μισθός > max [B]ΤΟΤΕ[/B]
max ← μισθός
όνομαMax ← όνομα
[B]ΤΕΛΟΣ_ΑΝ[/B]
[B]ΤΕΛΟΣ_ΑΝ[/B]
[B]ΓΡΑΨΕ [/B]'Δώστε το όνομα του επόμενου υπαλλήλου : '
[B]ΔΙΑΒΑΣΕ [/B]όνομα
[B]ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ[/B]
[B]ΑΝ [/B]Πλήθος<>0 [B]ΤΟΤΕ[/B]
ΜΟ ← SUM/Πλήθος
[B]ΓΡΑΨΕ [/B]'Ο Μ.Ο των υπαλλήλων που παίρνουν πάνω από 1000 ευρώ είναι', ΜΟ, '.'
[B]ΑΛΛΙΩΣ[/B]
[B]ΓΡΑΨΕ '[/B]Δεν υπάρχουν υπάλληλοι με μισθό πάνω από 1000 ευρώ.'
[B] ΤΕΛΟΣ_ΑΝ
[/B][B]ΑΝ [/B]min>0 [B]ΤΟΤΕ[/B]
[B]ΓΡΑΨΕ [/B]'Μεγαλύτερο μισθό παίρνει ο/η', όνομαMax, '.'
[B]ΓΡΑΨΕ [/B]'Μικρότερο μισθό παίρνει ο/η', όνομαMin, '.'
[B] ΤΕΛΟΣ_ΑΝ[/B]
[B]ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ[/B]
Υ.γ.: Ουφ.. κουραστικό να γράφεις τόσο μεγάλο κώδικα σε υπολογιστή, αλλά 20 φορές πιο κουραστικό να το γράφεις στο χέρι.
Μην σας τρομάζουν επίσης οι μεγάλοι κώδικες. Θα συναντήσετε μπόλικα τέτοια.
Σημείωση: Το μήνυμα αυτό γράφτηκε 16 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.
Γιώργος
Τιμώμενο Μέλος
Ωστόσο εγώ θα διάβαζα το "Αν θέλει να συνεχίσει" σε άλλη μεταβλητή και θα χρησιμοποιούσα "ΜΕΧΡΙΣ_ΟΤΟΥ" εντολή.
Btw για να σου βγάζει τα κενά χρησιμοποίησε τα CODE tags, δηλ. >>
Σημείωση: Το μήνυμα αυτό γράφτηκε 16 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.
Γιώργος
Τιμώμενο Μέλος
Και ξεκινώ δίνοντας δύο προς επίλυση (μόλις τις έβγαλα, φρέσκες φρέσκες )
Η πρώτη είναι μέχρι και δομή επιλογής.
Η δεύτερη (αρκετά τσιμπημένη) μέχρι και δομή επανάληψης και καλή γνώση της θεωρίας (πρόγραμμα & αλγόριθμος μέχρι τα αντίστοιχα σημεία).
Άσκηση 1
Να γραφεί πρόγραμμα στο οποίο ο χρήστης θα δίνει δύο ονόματα και θα εμφανίζεται αυτό που προηγείται αλφαβητικά. Αν για παράδειγμα ο χρήστης δίνει "Κώστας" και "Βασίλης" θα εμφανίζει:
Αλφαβητικά προηγείται ο Βασίλης κι έπεται ο Κώστας.
Άσκηση 2
Να γραφεί πρόγραμμα στο οποίο ο χρήστης θα δίνει επαναλαμβανόμενα σειρές χαρακτήρων. Το πρόγραμμα θα υπολογίζει και θα εμφανίζει τον αριθμό των λέξεων που αρχίζουν από 'Κ'. Από αυτές τις λέξεις, θα εμφανίζει τη λέξη που προηγείται αλφαβητικά. Το πρόγραμμα θα ρωτάει κάθε φορά τον χρήστη εάν επιθυμεί να συνεχίσει και θα σταματάει όταν δοθεί η λέξη "όχι". Θεωρείστε ότι δίνονται από τον χρήστη μόνο πεζοί χαρακτήρες.
Ανεβάστε τις να τις δούμε.
Σημείωση: ο συντάκτης πρέπει να γνωρίζει τη λύση των ασκήσεων. Αν έχετε άσκηση στην οποίες θέλετε τη λύση τους, ανοίξτε χωριστό thread.
Σημείωση: Το μήνυμα αυτό γράφτηκε 16 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.
-
Το forum μας χρησιμοποιεί cookies για να βελτιστοποιήσει την εμπειρία σας.
Συνεχίζοντας την περιήγησή σας, συναινείτε στη χρήση cookies στον περιηγητή σας.