Εργαστήριο Τεχνολογίας Λογισμικού
+3 votes
529 views

Στο πρόβλημα 31:

Να γράψετε ένα πρόγραμμα που να διαβάζει δύο φυσικούς αριθμούς Α και Β, να υπολογίζει το γινόμενό τους και να εκτυπώνει τα δύο προτελευταία ψηφία του.

Για παράδειγμα, αν Α=4217 και Β=1742, είναι ΑxΒ=7346014 και θα πρέπει να εκτυπώνονται τα δύο προτελευταία ψηφία: 01.

Δοκιμάζω το παράδειγμα της εκφώνησης και στα δεδομένα εξόδου έχω "1" αντί για "01" (ουσιαστικά "τρώει" το 0 στις δεκάδες). Πώς μπορώ να το διορθώσω;

in progintro by (540 points)
edited by | 529 views
+1

Δεν θέλω να κάνω spoil την λύση απλά δοκίμασε να τα πάρεις τα ψηφία ξεχωριστά και να τα τυπώσεις με μια συγκεκριμένη εντολή που δεν αφήνει κενά. (από pzhelp)

1 Answer

+5 votes
Best answer

Μάλλον χρειαζόμαστε λίγα παραπάνω δεδομένα για να καταλάβουμε ποιό είναι το πρόβλημα. Mιας και δεν είναι εργασία προς παράδοση μπορείς να ανεβάσεις τον κώδικα ή κάποιο μέρος του (πχ το τύπωμα).


Υποθέτω ότι αποθηκεύεις τα δύο ψηφία σε μια μεταβλητή, έστω x, ως έναν δεκαδικό αριθμό και μετά τυπώνεις τον αριθμό x.

printf("%d\n", x);

(Αυτό είναι συμβατό με την έξοδο που βγάζεις)

Αν τα προτελευταία 2 ψηφία είναι 01 τότε ο αριθμός x θα είναι 1 και προφανώς με τον παραπάνω τρόπο θα τυπωθεί χωρίς μηδενικό στην αρχή.

Αν θες να τυπώσεις και το μηδενικό, μπορείς να πεις στην C/C++ να τυπώσει 2 ακριβώς ψηφία και να γεμίσει τον χώρο με μηδενικά στην αρχή του αριθμού, αν ο αριθμός είναι κάτω από δύο ψηφία. Αυτό γίνεται εύκολα έτσι:

printf("%02d\n", x);

Το 2 στο %02d σημαίνει ότι η έξοδος θα έχει μήκος 2 χαρακτήρες και με το 0 λες στην C/C++ να γεμίσει τον χώρο με μηδενικά αν το x έχει λιγότερα από δύο ψηφία

by (2.4k points)
selected by
+1

Θα δοκιμάσω αυτό που είπατε, ευχαριστώ πάρα πολύ. Ο κώδικας μου, ωστώσο, βασίζεται στο εξής:

include "pzhelp"

PROGRAM {
int a, b, c;
a = READ_INT();
b = READ_INT();
c = a*b;
c = c / 10;
c = c % 100;
WRITELN(c);
}

+1

Λειτούργησε, ευχαριστώ πολύ και πάλι.

301 questions

289 answers

288 comments

903 users