Λύσεις των θεμάτων 2012
ΘΕΜΑ Α
Α1)
α) Σωστό
β) Λάθος
γ) Λάθος
δ) Σωστό
ε) Σωστό
Α2)
1-ε
2-γ
3-α
4-στ
5-β
Α3) γ
Α4)
Βασικές αλγοριθμικές δομές: ακολουθία, επιλογή, επανάληψη
Τεχνικές : Ιεραρχικός σχεδιασμός, Τμηματικός προγραμματισμός
Α5) Φραστική, ψευδοκώδικας, λογικό διάγραμμα
ΘΕΜΑ Β
Β1)
Χ Α
ΑΡΧΙΚΕΣ ΤΙΜΕΣ 10 20
1η επανάληψη 5 23
2η επανάληψη 2 22
3η επανάληψη 1 25
4η επανάληψη 0 24
Β2)
24 , 48 (αντίστοιχα για τις μεταβλητές Β,Γ)
ΘΕΜΑ Γ
Αρχή
ΣΥΝΟΛΟ=0
Για 50 φορές επανάλαβε
Αρχή
Διάβασε ΟΝ,GB
AN GB<=2
τότε ΧΡ=GB*10
Αλλιώς Αν GB<=6
τότε ΧΡ=2*10+(GB-2)*2.5
Αλλιώς ΧΡ=2*10+4*2.5 + (GB-6)*1.5
ΧΡ=ΧΡ+3
Εμφάνισε ΟΝ,ΧΡ
ΣΥΝΟΛΟ=ΣΥΝΟΛΟ+ΧΡ
Τέλος
ΜΟ=ΣΥΝΟΛΟ/50
Εμφάνισε ΜΟ
Τέλος
ΘΕΜΑ Δ
program themad;
var
typos: string;
sum,pl, money, epiv: integer;
begin
sum:=0;
pl:=0;
readln(typos);
while typos<>'ΤΕΛΟΣ' do
begin
readln(epiv);
if typos='M'
then money:=10
else if typos='A'
then money:=20
else
begin
money:=30;
pl:=pl+1;
end;
money:=money+(epiv-1)*5;
sum:=sum+money;
readln(typos);
end;
writeln(pl:5, sum:10);
end.
συμφωνώ απόλυτα με τις λύσεις σου, νομίζω οτι τα θέματα ήταν εύκολα, βέβαια με την υπόδειξη στο θέμα Γ κατάλαβα οτι ήθελε ψευδοκώδικα και απλά να χρησιμοποιήσουμε στοιχεία της pascal (πχ AND) και όχι όλο το πρόγραμμα σε pascal.
nope...
Δεν τις κρατάει..
Κάθε φορά λαμβάνει άλλη τιμή με βάση την είσοδο...Επίσης δεν απαιτείται έλεγχος εγκυρότητας...
ναι ναι το προσεξα μετά για αυτο το έσβησα ;)
Παράθεση από: demy8 στις 07 Ιουν 2012, 03:27:38 ΜΜ
ναι ναι το προσεξα μετά για αυτο το έσβησα ;)
Ok :)
Καλημέρα
Εχω μια ενσταση ως προς την απάντηση στο θέμα Α3, το Α θεωρω οτι είναι σωστό γιατί αφου δεν εχει παρενθεσεις δεν μπορει να εκτελειται πρωτα απο δεξια και το αποτελεσμα να το προσθετει στο 5 δεν ειναι μαθηματικα ορθό.
Παρακαλώ των καθηγητη που εγραψε τις απαντησεις να με βοηθησει να καταλάβω γιατι βγαινει 7
ευχαριστω
Χ := 5 + 7 div 3 * 4 - 6 =
5 + 2 * 4 - 6 =
5 + 8 - 6 =
13 - 6 =
7
Παράθεση από: demy8 στις 07 Ιουν 2012, 03:32:41 ΜΜ
Χ := 5 + 7 div 3 * 4 - 6 =
5 + 2 * 4 - 6 =
5 + 8 - 6 =
13 - 6 =
7
Με κάλυψε πλήρως η συνάδελφος
ευχαριστω πολυ πανε τα 100 και εμειναν τα 96
Παράθεση από: kostas318 στις 07 Ιουν 2012, 03:43:29 ΜΜ
ευχαριστω πολυ πανε τα 100 και εμειναν τα 96
Κρίμα να χάσεις το 100 για ένα μαθηματικό λάθος...το 96 βέβαια δεν είναι και λίγο!
Ωραιά:)
το έπιασα το 100στάρη..
το Δ το εκανα me repeat .. until γιατι λέει οτι υπαρχει τουλαχιστον ενα όχημα..
Έβαλες if μέσα στη repeat?
ναι, γιατι να μη βαλω?..
Παράθεση από: ronalz στις 07 Ιουν 2012, 04:01:45 ΜΜ
ναι, γιατι να μη βαλω?..
εννοώ ιf typos<>'ΤΕΛΟΣ'....
until typos<>'ΤΕΛΟΣ'
αφου έλεγε οτι μπαινει τουλαχιστον μια φορα.
βασικα, καλα λες :D
Παράθεση από: ronalz στις 07 Ιουν 2012, 04:04:12 ΜΜ
until typos<>'ΤΕΛΟΣ'
αφου έλεγε οτι μπαινει τουλαχιστον μια φορα.
repeat
readln(typos);
if typos<>'ΤΕΛΟΣ' then
.....
until typos='ΤΕΛΟΣ'
1) Αφού το έκανες με until η συνθήκη είναι typos='ΤΕΛΟΣ'
2) Το if χρειάζεται, γιατί αν απουσιάζει τότε το πρόγραμμα διαβάζει αριθμό επιβατών, υπολογίζει χρέωση και συνολική χρέωση ακόμα και όταν δώσουμε τη λέξη 'ΤΕΛΟΣ', ενώ δεν θα έπρεπε...
ναι ξερω.. θα μου κοψουν μερικες απο εκει..
Αν ήταν όμως κάπως έτσι:
sum:=0;
repeat
readln(typos);
readln(epivates);
if typos= 'M' then
xr:= 10 +(epivates - 1)*5
else if typos = 'A' then
xr:= 20 +(epivates - 1)*5
else if typos = 'Φ' then
begin
xr:= 30 +(epivates - 1)*5;
pl:= pl+1;
end;
sum = sum+ xr;
until typos = "ΤΕΛΟΣ"
αν έδινα τη λέξη τέλος δε θα έμπαινε σε κανένα if, θα γινόταν εκτέλεση 1 φορά και θα ήταν οκ. Σωστά;
Πέρα του ότι είναι λογικό λάθος, από τη στιγμή που δώσαμε τη λέξη 'ΤΕΛΟΣ' να πρέπει να δώσουμε και αριθμό επιβατών τι θα γινόταν με την εντολή sum = sum+ xr;
Τι τιμή θα είχε το xr για να γίνει η πρόσθεση; (προφανώς του προηγούμενου οχήματος)
Παράθεση από: janag79 στις 07 Ιουν 2012, 04:21:05 ΜΜ
Πέρα του ότι είναι λογικό λάθος, από τη στιγμή που δώσαμε τη λέξη 'ΤΕΛΟΣ' να πρέπει να δώσουμε και αριθμό επιβατών τι θα γινόταν με την εντολή sum = sum+ xr;
Τι τιμή θα είχε το xr για να γίνει η πρόσθεση; (προφανώς του προηγούμενου οχήματος)
Σωστά. Τότε θα έπρεπε να υπάρχει ένα else xr:=0 πριν τη sum = sum+ xr;, οπότε για το αρχικό όχημα έχοντας αρχικοποιήσει το xr:=0 to sum θα ήταν 0 και θα σταματούσε η επανάληψη, ενώ για κάποιο επόμενο θα παρέμενε sum:=sum και θα σταματούσε.
Παράθεση από: dolcefarniente στις 07 Ιουν 2012, 04:32:32 ΜΜ
Σωστά. Τότε θα έπρεπε να υπάρχει ένα else xr:=0 πριν τη sum = sum+ xr;, οπότε για το αρχικό όχημα έχοντας αρχικοποιήσει το xr:=0 to sum θα ήταν 0 και θα σταματούσε η επανάληψη, ενώ για κάποιο επόμενο θα παρέμενε sum:=sum και θα σταματούσε.
Αυτό βελτιώνει τη κατάσταση , αλλά κατά την άποψη μου, δεν ικανοποιεί αυτό που ζητάει η άσκηση...Δηλαδή, δεν πρέπει να προχωράει και να δέχεται αριθμό επιβατών όταν έχουμε δώσει ως τύπο τη λέξη 'ΤΕΛΟΣ'..για αυτό είπα ότι χρειάζεται αυτό το if
πόσο λέτε να μου κόψουν? :(
Παράθεση από: ronalz στις 07 Ιουν 2012, 04:37:46 ΜΜ
πόσο λέτε να μου κόψουν? :(
Δεν πιστεύω πάνω 2 μόρια
Παράθεση από: janag79 στις 07 Ιουν 2012, 04:36:03 ΜΜ
Αυτό βελτιώνει τη κατάσταση , αλλά κατά την άποψη μου, δεν ικανοποιεί αυτό που ζητάει η άσκηση...Δηλαδή, δεν πρέπει να προχωράει και να δέχεται αριθμό επιβατών όταν έχουμε δώσει ως τύπο τη λέξη 'ΤΕΛΟΣ'..για αυτό είπα ότι χρειάζεται αυτό το if
Συμφωνώ απολύτως με το while που έχεις δώσει, έχεις πολύ λιγότερα να σκεφτείς και να ελέγξεις από ότι στην υλοποίηση με repeat. Ευχαριστώ για την άποψη σου.
Και κάτι ακόμα, πόσα μόρια πιστεύεις ότι θα έκοβαν από κάποιον που δεν έβαλε ξανά read στο σώμα της επανάληψης και είναι σοβαρό λάθος;
Παράθεση από: janag79 στις 07 Ιουν 2012, 04:39:51 ΜΜ
Δεν πιστεύω πάνω 2 μόρια
σε ευχαριστω πολυ janag79..
και γενικα ευχαριστω όλο το Φορουμ για την συμπαρασταση σας σε εμας
Παράθεση από: dolcefarniente στις 07 Ιουν 2012, 04:43:19 ΜΜ
Συμφωνώ απολύτως με το while που έχεις δώσει, έχεις πολύ λιγότερα να σκεφτείς και να ελέγξεις από ότι στην υλοποίηση με repeat. Ευχαριστώ για την άποψη σου.
Και κάτι ακόμα, πόσα μόρια πιστεύεις ότι θα έκοβαν από κάποιον που δεν έβαλε ξανά read στο σώμα της επανάληψης και είναι σοβαρό λάθος;
Nα σαι καλά
Εννοείς σε κάποιον που το έκανε με while και δεν έβαζε να ξαναδιαβάζει πάλι τύπο πριν κλείσει η while;
Παράθεση από: ronalz στις 07 Ιουν 2012, 04:44:51 ΜΜ
σε ευχαριστω πολυ janag79..
και γενικα ευχαριστω όλο το Φορουμ για την συμπαρασταση σας σε εμας
Καλά αποτελέσματα να χετε παιδιά!
Παράθεση από: janag79 στις 07 Ιουν 2012, 04:45:07 ΜΜ
Nα σαι καλά
Εννοείς σε κάποιον που το έκανε με while και δεν έβαζε να ξαναδιαβάζει πάλι τύπο πριν κλείσει η while;
Ναι. Στην περίπτωση της while αν δεν είχε μέσα read, αλλά μόνο έξω. Δε σταματάει ποτέ και είναι σοβαρό λάθος.
Παράθεση από: dolcefarniente στις 07 Ιουν 2012, 04:47:59 ΜΜ
Ναι. Στην περίπτωση της while αν δεν είχε μέσα read, αλλά μόνο έξω. Δε σταματάει ποτέ και είναι σοβαρό λάθος.
Κοίτα..Αν το γράφαμε σε διαγώνισμα σε τάξη, μπορεί να έκοβα πολλά μόνο και μόνο για να σου τονίσω την σημαντικότητα του
Εδώ, με βάση το ότι η παράλειψη σου επηρεάζει τα ερωτήματα Δ2,Δ4 άντε να σου κόψουν 3-4 μόρια (το πολύ) , κατά τη προσωπική μου άποψη
Παράθεση από: janag79 στις 07 Ιουν 2012, 04:58:31 ΜΜ
Κοίτα..Αν το γράφαμε σε διαγώνισμα σε τάξη, μπορεί να έκοβα πολλά μόνο και μόνο για να σου τονίσω την σημαντικότητα του
Εδώ, με βάση το ότι η παράλειψη σου επηρεάζει τα ερωτήματα Δ2,Δ4 άντε να σου κόψουν 3-4 μόρια (το πολύ) , κατά τη προσωπική μου άποψη
Όσο κι αν σας φαίνεται περίεργο το συγκεκριμένο λάθος είναι -1 μονάδα.
Παράθεση από: gedeon στις 07 Ιουν 2012, 05:00:57 ΜΜ
Όσο κι αν σας φαίνεται περίεργο το συγκεκριμένο λάθος είναι -1 μονάδα.
Οπότε μικρό το κακό....
Ευχαριστώ janag79 και gedeon για τις απαντήσεις.
Η ΚΕΕ στέλνει βαθμολόγηση προγραμμάτων δίνοντας μονάδες ανά γραμμή εντολής....
δε πάει στη λογική ότι εφόσον λείπει το 2ο readln δε θα δουλέψει η while.
Όμως ο βαθμολογητής έχει τη "δυνατότητα" να θεωρήσει μεγαλύτερης βαρύτητας αυτή την έλλειψη και να κόψει 2, 3 μονάδες.
Συνήθως σε αυτές τις ασκήσεις γίνονται και οι αποκλίσεις απο βαθολογητή σε βαθμολογητή.
Και για όσους έβαλαν μηνύματα στις εντολές εξόδου παρά τις υποδείξεις;;
Παράθεση από: dolcefarniente στις 07 Ιουν 2012, 05:15:30 ΜΜ
Και για όσους έβαλαν μηνύματα στις εντολές εξόδου παρά τις υποδείξεις;;
Δεν υπάρχει πρόβλημα... είτε σωστή είναι η writeln είτε λάθος, δεν βαθμολογείται. Βαθμολογούνται μόνο αυτά που ζητούν τα θέματα
Και πάλι καλησπέρα
Στο θέμα Δ έβαλα την case για τον υπολογισμό με βάση το γραμμα πειράζει?
την χρέωση για τους επιβάτες την έκανα με ξεχωριστό if έξω απο την case και σε ξεχωριστή μεταβλητή απο την χρέωση οχήματος και το αποτέλεσμα για τους επιβάτες το πρόσθετα σε μια μεταβλητή μαζί με την χρέωση οχήματος απο την case
Λογικά είναι σωστό απλά να το επιβεβαιώσω
program thema_d;
uses crt;
var
typos:char;
xreosi_oxim,xreosi_epiv,tel_xreosi,syn_xreosi:real;
ar_fortigon,ar_epivaton:integer;
begin
xreosi_oxim:=0;
xreosi_epiv:=0;
tel_xreosi:=0;
syn_xreosi:=0;
ar_fortigon:=0;
ar_epivaton:=0;
write('Δώσε τον τύπο του οχήματος: ');
readln(typos);
while typos <>'ΤΕΛΟΣ' do
begin
write('Δώσε τον αριθμό των επιβατών: ');
readln(ar_epivaton);
case typos of
'M': xreosi_oxim:=10;
'A': xreosi_oxim:=20;
'Φ': begin
xreosi_oxim:=30;
ar_fortigon:=ar_fortigon+1;
end;
end;
if ar_epivaton=1 then
xreosi_epiv:=0
else
if ar_epivaton>1 then
xreosi_epiv:=(ar_epivaton-1)*5;
tel_xreosi:=xreosi_oxim+xreosi_epiv;
syn_xreosi:=syn_xreosi+tel_xreosi;
writeln('Το όχημα πρεπει να πληρώσει συνολικά: ',tel_xreosi:6:2);
writeln();
write('Δώσε τον τύπο του οχήματος: ');
readln(typos);
end;
writeln('Συνολικά επιβιβάστηκαν ',ar_fortigon,' φορτηγά');
writeln('Η συνολική χρέωση ολων των οχημάτων ειναι',syn_xreosi:8:2);
end.
Κάποιος που έχει κάνει το Θέμα Γ με πρόγραμμα σε Pascal αλλά το έχει ολόσωστο, πόσα μόρια πιστεύετε ότι μπορεί να χάσει;
Γιατί κάποιος που ελυσε το θέμα Γ με pascal να χάσει μονάδες ?????? :o αφου έλεγε με ψευδοκώδικα ή εντολές pascal αλλίως ας έλεγε ας δοθεί ο αλγόριθμος σε ψευδοκώδικα.
Πιστεύω πως από την στιγμή που η λειτουργία του αλγορίθμου είναι σωστή και βγάζει τα ζητούμενα αποτελέσματα δεν πρέπει να χάσεις κάτι
Ο αλγόριθμος μπορεί να αποδοθεί: Με ψευδοκώδικα
χρησιμοποιώντας τις εντολές που αναφέρονται στο σχετικό
πίνακα του βιβλίου σας ή με στοιχεία (εντολές) της γλώσσας
Pascal.
Όντως... γιατί ?? Δεν τίθεται τέτοιο θέμα. Προφανώς και δεν χάνει μόρια!! Πιο ξεκάθαρο δεν γίνεται να είναι το παραπάνω!!! Που να μην το έλεγαν κιόλας
Παράθεση από: kostas318 στις 07 Ιουν 2012, 09:45:49 ΜΜ
Και πάλι καλησπέρα
Στο θέμα Δ έβαλα την case για τον υπολογισμό με βάση το γραμμα πειράζει?
την χρέωση για τους επιβάτες την έκανα με ξεχωριστό if έξω απο την case και σε ξεχωριστή μεταβλητή απο την χρέωση οχήματος και το αποτέλεσμα για τους επιβάτες το πρόσθετα σε μια μεταβλητή μαζί με την χρέωση οχήματος απο την case
Λογικά είναι σωστό απλά να το επιβεβαιώσω
program thema_d;
uses crt;
var
typos:char;
xreosi_oxim,xreosi_epiv,tel_xreosi,syn_xreosi:real;
ar_fortigon,ar_epivaton:integer;
begin
xreosi_oxim:=0;
xreosi_epiv:=0;
tel_xreosi:=0;
syn_xreosi:=0;
ar_fortigon:=0;
ar_epivaton:=0;
write('Δώσε τον τύπο του οχήματος: ');
readln(typos);
while typos <>'ΤΕΛΟΣ' do
begin
write('Δώσε τον αριθμό των επιβατών: ');
readln(ar_epivaton);
case typos of
'M': xreosi_oxim:=10;
'A': xreosi_oxim:=20;
'Φ': begin
xreosi_oxim:=30;
ar_fortigon:=ar_fortigon+1;
end;
end;
if ar_epivaton=1 then
xreosi_epiv:=0
else
if ar_epivaton>1 then
xreosi_epiv:=(ar_epivaton-1)*5;
tel_xreosi:=xreosi_oxim+xreosi_epiv;
syn_xreosi:=syn_xreosi+tel_xreosi;
writeln('Το όχημα πρεπει να πληρώσει συνολικά: ',tel_xreosi:6:2);
writeln();
write('Δώσε τον τύπο του οχήματος: ');
readln(typos);
end;
writeln('Συνολικά επιβιβάστηκαν ',ar_fortigon,' φορτηγά');
writeln('Η συνολική χρέωση ολων των οχημάτων ειναι',syn_xreosi:8:2);
end.
Η μεταβλητή typos δεν είναι char (γιατί κάποια στιγμή παίρνει την τιμή 'ΤΕΛΟΣ')
Παρά τους άσκοπους μηδενισμούς που κάνεις στην αρχή (εκτός των syn_xreosi,ar_fortigon) φαίνεται πως είναι μία χαρά η λύση σου
Ευχαριστώ για την απάντηση σας.
Τη μεταβλητή τύπος το σκέφτηκα μετά ότι είναι string.Πόσο μπορεί να μου κόψει για αυτό το λάθος?
Ευχαριστώ
Παράθεση από: kostas318 στις 09 Ιουν 2012, 09:52:54 ΜΜ
Ευχαριστώ για την απάντηση σας.
Τη μεταβλητή τύπος το σκέφτηκα μετά ότι είναι string.Πόσο μπορεί να μου κόψει για αυτό το λάθος?
Ευχαριστώ
-1 μονάδα,
Αν είχα το γραπτό σου ούτε αυτή θα έκοβα λόγω της λύσης που έδωσες, μπράβο σου
ευχαριστω για τη στηριξη σας :)
ο βαθμος μου στον δομημενο προγραμματισμο ηταν 199,0 ^^ :)