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

Reversed Αριθμός


Salvation

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

Δημοσ.

Καλησπέρα,

 

Θέλω να φτίαξω ένα προγραμμα που να δέχεται έναν αριθμό και να τον βγάζει το αντεστραμμένο, πχ να δέχετε το 314 και να βγάζει σαν output το 413. Μια προσπάθεια που έκανα είναι η παρακάτω:

 

>
#include <stdio.h>
#include <stdlib.h>
#include <math.h>

int main()
{

   int num,i,k,*a;
   int reversed=0;

   printf("Give number: ");
   scanf("%d",&num);
   i=0;
   a=malloc(1*sizeof(int));
   while((num/10)!=0)
   {

       a[i]=num%10;
       i++;
       a=realloc(a,sizeof(int));
       num=num/10;


   }



   for(k=0;k<i;k++) reversed+=pow(10,k)*a[k];

    printf("Reversed number is: %d",reversed);

    return 0;

}

 

Ξέρω ότι στη συγκεκριμένη υλοποίηση δεν έχω κάνει αποδέσμευση μνήμης στο τέλος ούτε κάνω τον έλεγχο για NULL στη malloc αλλά δεν νομίζω να είναι αυτό το πρόβλημα.

Αν έχετε κάμια προταση γιατί παίρνω λανθασμένο αποτέλεσμα please tell!

Δημοσ.

Καλησπέρα,

 

Θέλω να φτίαξω ένα προγραμμα που να δέχεται έναν αριθμό και να τον βγάζει το αντεστραμμένο, πχ να δέχετε το 314 και να βγάζει σαν output το 413. Μια προσπάθεια που έκανα είναι η παρακάτω:

 

>
#include <stdio.h>
#include <stdlib.h>
#include <math.h>

int main()
{

   int num,i,k,*a;
   int reversed=0;

   printf("Give number: ");
   scanf("%d",&num);
   i=0;
   a=malloc(1*sizeof(int));
   while((num/10)!=0)
   {

       a[i]=num%10;
       i++;
       a=realloc(a,sizeof(int));
       num=num/10;


   }



   for(k=0;k<i;k++) reversed+=pow(10,k)*a[k];

    printf("Reversed number is: %d",reversed);

    return 0;

}

 

Ξέρω ότι στη συγκεκριμένη υλοποίηση δεν έχω κάνει αποδέσμευση μνήμης στο τέλος ούτε κάνω τον έλεγχο για NULL στη malloc αλλά δεν νομίζω να είναι αυτό το πρόβλημα.

Αν έχετε κάμια προταση γιατί παίρνω λανθασμένο αποτέλεσμα please tell!

Δημοσ.

Kάτι πρόχειρο : δώσε τον αριθμό ως string, και ανάστρεψέτο. Μετά ξανακάνε το ανεστραμμένο string αριθμό.

Δες εδώ πώς αντιστρέφεται ένα string (διάφορες ιδέες) :

 

http://www.insomnia.gr/forum/showthread.php?t=376309&highlight=%CE%B1%CE%BD%CE%B1%CE%B4%CF%81%CE%BF%CE%BC%CE%B7

 

Aφού ο αριθμός γραφεί ανάποδα ως string, μπορεί να ξαναμετατραπεί σε αριθμό με κάποια συνάρτηση όπως η atoi....

 

-

Δημοσ.

Kάτι πρόχειρο : δώσε τον αριθμό ως string, και ανάστρεψέτο. Μετά ξανακάνε το ανεστραμμένο string αριθμό.

Δες εδώ πώς αντιστρέφεται ένα string (διάφορες ιδέες) :

 

http://www.insomnia.gr/forum/showthread.php?t=376309&highlight=%CE%B1%CE%BD%CE%B1%CE%B4%CF%81%CE%BF%CE%BC%CE%B7

 

Aφού ο αριθμός γραφεί ανάποδα ως string, μπορεί να ξαναμετατραπεί σε αριθμό με κάποια συνάρτηση όπως η atoi....

 

-

Δημοσ.

Ευχαριστώ, το συγκεκριμένο τρόπο τον γνωρίζω, αλλά ήθελα να το δοσιμάσω με τη μέθοδο των υπολοιπων. Αν βλέπεις κάτι που δεν βλέπω στον κώδικα πες!

Δημοσ.

Ευχαριστώ, το συγκεκριμένο τρόπο τον γνωρίζω, αλλά ήθελα να το δοσιμάσω με τη μέθοδο των υπολοιπων. Αν βλέπεις κάτι που δεν βλέπω στον κώδικα πες!

Δημοσ.

Δεν βλεπω κάτι λάθος στη realloc. Διαβάζω ένα αριθμό και υπολογίζω αρχικά το πηλίκο. Στη συνέχεια υπολογιζω τα υπόλοιπα και τα αποθηκεύω σε ενα πίνακα το μέγεθος του οποίου το αυξάνω κάθε φορά κατά 1. Μόλις τελειώσει η διαδικάσια πολλαπλασιάζω κάθε στοιχείο του πίνακα a με το 10^0, 10, 10^2 κτλ μονάδες,δεκάδες κτλ.

Δημοσ.

Δεν βλεπω κάτι λάθος στη realloc. Διαβάζω ένα αριθμό και υπολογίζω αρχικά το πηλίκο. Στη συνέχεια υπολογιζω τα υπόλοιπα και τα αποθηκεύω σε ενα πίνακα το μέγεθος του οποίου το αυξάνω κάθε φορά κατά 1. Μόλις τελειώσει η διαδικάσια πολλαπλασιάζω κάθε στοιχείο του πίνακα a με το 10^0, 10, 10^2 κτλ μονάδες,δεκάδες κτλ.

Δημοσ.

Αβλεψία υπάρχει πέραν του realloc, στην while και ύστερα στην pow αν δουλέψεις με έναν debugger και κάνεις step τον κώδικα σου θα το διορθώσεις άμεσα, ενδεχομένως στο pow να είναι systemic.

 

Προσωπικά πάντως θα ακολουθούσα τον δρόμο που σου υπέδειξε ο V.I.Smirnov.

 

Αν θες αναρτώ τον κώδικα αν και σε προτρέπω "να μην καταθέσεις τα όπλα".

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

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

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