apoel1986 Δημοσ. 2 Δεκεμβρίου 2010 Δημοσ. 2 Δεκεμβρίου 2010 Το πρόγραμμα θα δέχεται δυο μεγάλους ακέραιους (πάνω από 10 ψηφία ο καθένας) από το πληκτρολόγιο και θα δημιουργεί ένα αντικείμενο (χρήση κλάσεων) ως συνδεδεμένη λίστα στην οποία ο κάθε κόμβος της λίστας θα αντιπροσωπεύει τον αριθμό. Το πρόγραμμα θα δέχεται και αρνητικούς και θετικούς αριθμούς. Επομένως το πρόγραμμα πρέπει: 1.Να προσθέτει τους 2 αριθμούς 2.Να αναγνωρίζει τον μεγαλύτερο ή τον μικρότερο 3.Να αναγνωρίζει αν είναι ίσοι 4.Να αφαιρεί τον μικρότερο από τον μεγαλύτερο. 5.Να τυπώνει στην οθόνη τα πιο πάνω αποτελέσματα
nifa Δημοσ. 2 Δεκεμβρίου 2010 Δημοσ. 2 Δεκεμβρίου 2010 Θες να σου λύσουμε το πρόβλημα? Η θελεις καπου συγκεκριμένα βοήθεια?
apoel1986 Δημοσ. 2 Δεκεμβρίου 2010 Μέλος Δημοσ. 2 Δεκεμβρίου 2010 eeeeemmmm βασικα θα μου ηταν πιο ευκολο να μου το λυνατε γιατι δεν καταλαβω τι πρεπει να κανω ή ακομη και αν εχετε το κομματι που ζιτα τοτε θα με βοηθησετε παρα πολυυυυ
apoel1986 Δημοσ. 2 Δεκεμβρίου 2010 Μέλος Δημοσ. 2 Δεκεμβρίου 2010 στο οτι δεν καταλαβαινω τι ζητα η ολη ασκηση....
nplatis Δημοσ. 3 Δεκεμβρίου 2010 Δημοσ. 3 Δεκεμβρίου 2010 Και αν στο λύναμε τι θα κέρδιζες; Αυτό είναι ένα αρκετά μεγάλο και πολύπλοκο πρόβλημα. Αν δεν καταλαβαίνεις τίποτα από την άσκηση καλύτερα να το ξαναπιάσεις από την αρχή το μάθημα...
V.I.Smirnov Δημοσ. 3 Δεκεμβρίου 2010 Δημοσ. 3 Δεκεμβρίου 2010 Το "ο κάθε κόμβος της λίστας θα αντιπροσωπεύει τον αριθμό" είναι λάθος διατύπωση. Η σωστή διατύπωση είναι προφανώς "κάθε κόμβος αντιπροσωπεύει ένα ψηφίο του μεγάλου ακέραιου". Πρέπει να φτιάξεις μια λίστα "bigInteger" που σε κάθε κόμβο της θα αποθηκεύεται από ένα ψηφίο ενός ακέραιου. Η λίστα αυτή θα είναι αντικείμενο κάποιας κλάσης όπερ σημαίνει ότι ορίζοντας αντικείμενα του τύπου "bigInteger" θα ορίζονται λίστες όπου μπορείς να αποθηκεύσεις τέτοιους αριθμούς. Για την κλάση αυτή θα πρέπει να ορίσεις τις πράξεις "πρόσθεση", "διάταξη", "ισότητα" και τέλος "εκτύπωση". Οι πράξεις θα πρέπει να υλοποιηθούν όπως τις κάνεις με το χέρι όπου όμως τώρα τα ψηφία θα λαμβάνονται από τους κόμβους των δύο λιστών που αναπαριστούν τους αριθμούς. Απαιτεί αρκετή δουλειά για να γίνει και δεν μπορεί να παρουσιαστεί εδώ. Kαι απ' ότι βλέπω το έχουν ζητήσει κι' άλλοι : http://www.forums.gr/showthread.php?35321-voitheia-gia-programma-sti-c-me-xrisi-klasewn -
virxen75 Δημοσ. 3 Δεκεμβρίου 2010 Δημοσ. 3 Δεκεμβρίου 2010 με πίνακες η αφαίρεση θετικών αριθμών γίνεται: > #include <stdio.h> #define size 4 int main(){ int A[size]={8,6,4,3};//3468 int B[size]={7,5,9,5};//5957 int C[size+1]={0};//A-B=-2489 int carry=0; int i,pio=0;//isa //pio=0--->isa , pio=1---> A>B pio=2 ----> B>A if (A[size-1]==B[size-1]){ for (i=1;i<size;i++){ if (B[size-1-i]>A[size-1-i]){ pio=2;//B break; }else if (A[size-1-i]>B[size-1-i]){ pio=1;//A break; } } } if (A[size-1]>B[size-1] || pio==1){ pio=1; for (i=0;i<size;i++){ if (A[i]>=(B[i]+carry)){ C[i]=A[i]-B[i]-carry; carry=0; }else{ C[i]=10+A[i]-B[i]-carry; carry=1; } } }else if (A[size-1]<B[size-1] || pio==2){ pio=2; for (i=0;i<size;i++){ if (B[i]>=(A[i]+carry)){ C[i]=B[i]-A[i]-carry; carry=0; }else{ C[i]=10+B[i]-A[i]-carry; carry=1; } } } printf("\nresult:"); int mexripou=size; for (i=size;i>=0;i--){//για να μην εμφανιστούν μηδενικά στην αρχή του αριθμού if (C[i]!=0){ mexripou=i; break; } } if (pio==2) printf("-"); for (i=mexripou;i>=0;i--) printf("%d",C[i]); getchar(); return 0; } σημείωση: ο αριθμός αποθηκεύεται στον πίνακα ανάποδα π.χ. 123--->Α[0]=3,Α[1]=2,Α[2]=1 και η πρόσθεση > #include <stdio.h> #define size 4 int main(){ int A[size]={8,6,4,3};//3468 int B[size]={7,5,9,5};//5957 int C[size+1]={0};//A+B=9425 int carry=0; int i; for (i=0;i<size;i++){ C[i]=(A[i]+B[i]+carry)%10; carry=(A[i]+B[i]+carry-C[i])/10; } printf("\nresult:"); int mexripou=size; for (i=size;i>=0;i--){ if (C[i]!=0){ mexripou=i; break; } } for (i=mexripou;i>=0;i--) printf("%d",C[i]); getchar(); return 0; }
Προτεινόμενες αναρτήσεις
Αρχειοθετημένο
Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.