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

Βοήθεια για C++


apoel1986

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

Δημοσ.

Το πρόγραμμα θα δέχεται δυο μεγάλους ακέραιους (πάνω από 10 ψηφία ο καθένας) από το πληκτρολόγιο και θα δημιουργεί ένα αντικείμενο (χρήση κλάσεων) ως συνδεδεμένη λίστα στην οποία ο κάθε κόμβος της λίστας θα αντιπροσωπεύει τον αριθμό. Το πρόγραμμα θα δέχεται και αρνητικούς και θετικούς αριθμούς.

 

Επομένως το πρόγραμμα πρέπει:

 

1.Να προσθέτει τους 2 αριθμούς

2.Να αναγνωρίζει τον μεγαλύτερο ή τον μικρότερο

3.Να αναγνωρίζει αν είναι ίσοι

4.Να αφαιρεί τον μικρότερο από τον μεγαλύτερο.

5.Να τυπώνει στην οθόνη τα πιο πάνω αποτελέσματα

Δημοσ.

eeeeemmmm βασικα θα μου ηταν πιο ευκολο να μου το λυνατε γιατι δεν καταλαβω τι πρεπει να κανω

 

ή

 

ακομη και αν εχετε το κομματι που ζιτα τοτε θα με βοηθησετε παρα πολυυυυ

Δημοσ.

Και αν στο λύναμε τι θα κέρδιζες; Αυτό είναι ένα αρκετά μεγάλο και πολύπλοκο πρόβλημα. Αν δεν καταλαβαίνεις τίποτα από την άσκηση καλύτερα να το ξαναπιάσεις από την αρχή το μάθημα...

Δημοσ.

Το "ο κάθε κόμβος της λίστας θα αντιπροσωπεύει τον αριθμό" είναι λάθος διατύπωση.

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

 

Πρέπει να φτιάξεις μια λίστα "bigInteger" που σε κάθε κόμβο της θα αποθηκεύεται από ένα ψηφίο ενός ακέραιου.

Η λίστα αυτή θα είναι αντικείμενο κάποιας κλάσης όπερ σημαίνει ότι ορίζοντας αντικείμενα του τύπου "bigInteger" θα

ορίζονται λίστες όπου μπορείς να αποθηκεύσεις τέτοιους αριθμούς.

Για την κλάση αυτή θα πρέπει να ορίσεις τις πράξεις "πρόσθεση", "διάταξη", "ισότητα" και τέλος "εκτύπωση".

Οι πράξεις θα πρέπει να υλοποιηθούν όπως τις κάνεις με το χέρι όπου όμως τώρα τα ψηφία θα λαμβάνονται από

τους κόμβους των δύο λιστών που αναπαριστούν τους αριθμούς.

Απαιτεί αρκετή δουλειά για να γίνει και δεν μπορεί να παρουσιαστεί εδώ.

 

Kαι απ' ότι βλέπω το έχουν ζητήσει κι' άλλοι :

 

http://www.forums.gr/showthread.php?35321-voitheia-gia-programma-sti-c-me-xrisi-klasewn

 

-

Δημοσ.

με πίνακες η αφαίρεση θετικών αριθμών γίνεται:

 

 

>

#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;    
}

Αρχειοθετημένο

Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.

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