2017-01-02 6 views
0

Ist dies eine Formel für die umgekehrte Zahl?Die umgekehrte Algorithmus-Nummer

zB 123-321?

Anzahl K

inv K = K% 100 + K/10% 10 * 10 + K% 10 * 100

Ich bin mir nicht sicher, ob ich genau geschrieben, und ich brauche dieses Recht für die Aufgabe in der Schule für Grafik-Algorithmus

Edit: Ja, ich bin dumm xD ich Anfänger xD bin

+0

Ich würde die Berechnungen mehr trennen, um sie leichter folgen zu lassen, wie 'Einheiten = K% 10; Zehner = ...; hunderte = ...; 'und dann, wenn die Ziffern alle getrennt sind, kombinieren Sie sie wieder inv = 100 * Einheiten + 10 * Zehner + Hunderter;'. –

+0

Sie sind nicht sehr klar, was Sie fragen. Ist '123-321' eine Zeichenkette, die Sie erhalten, und müssen Sie bestätigen, dass es sich um ein Palindrom handelt? von dir bekommst du '123' und musst' 321' zurückgeben? Werden die Zahlen, die Sie erhalten, immer 3 Ziffern lang? – AntonH

+0

Ich brauche das nicht, um ein Programm zu schreiben, aber ich würde einen Algorithmus für die Anzahl von 3 Ziffern zeichnen. Es ist gut oder nicht? mein Englisch ist suck sorry xD –

Antwort

3

Diese Logik wird Ihnen helfen. variable inverse ist die Ausgabe.

 int num = 123; 
     double inverse = 0; 
     while (num != 0) 
     { 
      inverse = inverse * 10; 
      inverse = inverse + num % 10; 
      num = num/10;     
     } 
+2

Warum ist der Typ "invers" 'double' anstelle von' int'? –

+0

Danke Herr J. Piquard für Ihren Kommentar ... Es sollte int sein. Aber es gibt auch kein Problem mit Doppel. –

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

int main(void) { 
    int i = 123045 , j = 0,k=0; 

    while(i != 0) 
     { 
     j=i%10; 
     k = k *10 + j; 
     i /=10; 
    } 

    printf("%d\n", k); 
    return 0; 
} 

Ausgabe 540321

+0

In jeder Iteration der while-Schleife wird 'i% 10' die erste Ziffer von rechts extrahieren. Diese Ziffer wird durch "j" nach "k" übertragen, und wir entfernen die Ziffer aus "i", indem wir eine ganzzahlige Division verwenden. – Amjad

+2

Dies funktioniert nicht für eine Zahl, die Null enthält, z. 12305, die Abbruchbedingung ist falsch. – axalis

+0

Modifiziert; Danke, dass du das gemacht hast! – Amjad

1

Wenn Sie Ihren Code wollen mit einer beliebigen Anzahl arbeiten, sollten Sie in einen String umzuwandeln und umzukehren es dann!

+0

Ich würde es bevorzugen, es direkt in Integer zu tun, anstatt unnötige Konvertierungen zu/von String (mit dynamischen Speicherzuweisungen btw.). – axalis