Zahlen in Buchstaben



  • hey Leute,

    habe Folgende Aufgabenstellung und komme nicht drauf/weiter.

    Vll. kann mir jemand nen Denkanstoß geben.

    Zur Aufgabe:

    Ich soll irgend eine Zahl einlesen, diese dann über eine Funktion in Kleinbuchstaben umwandeln und diese Ausgeben mit jeweils einem Leerzeichen dazwischen.

    Bsp:

    Eingabe: 84368

    Ausgabe: acht vier drei sechs acht

    Bis her:

    #include <stdio.h>
    #include <stdlib.h>
    
    void	zahlworte(int	zahl,	char	*array){
    
        char feld[10][7]={'null','eins','zwei','drei','vier','fünf','sechs','sieben','acht','neun'};
        int i,j;
    
        for(;;){
    
            for(;;){
    
                if (){
    
                }
            }
        }
    
    }
    
    int main()
    {
        char feld[100];
        int zahlen;
    
        scanf("%d",&zahlen);
        zahlworte(zahlen,feld);
    
        return 0;
    }
    

    😕 Stimmt mein Ansatz überhaupt?

    Bin für jeden Denkanstoß dankbar 👍


  • Mod

    Bis jetzt hast du noch nichts, daher kann man auch nicht viel dazu sagen, ob das falsch oder richtig ist. Du hast ein Gerüst, an dem ist alles dran, was zum Nebenher gehört, aber mit dem entscheidenden Teil hast du noch nicht angefangen. Für meinen Geschmack hast du zu viele Schleifen und ein if bräuchte ich auch nicht. Heißt aber nicht, dass das unbedingt falsch sein muss. Da noch überhaupt nichts drin steht, kann man den Ansatz nicht wirklich sinnvoll kommentieren.



  • #include <stdio.h>
    #include <stdlib.h>
    
    void	zahlworte(int	zahl, char	*array) {
    
    	char feld[10][7] = { "null","eins","zwei","drei","vier","fünf","sechs","sieben","acht","neun" };
    	int i, j, hilfe;
    
    	for (i = 0;i < 10;i++) {
    
    		hilfe = zahl % 10;
    
    		if (hilfe = i) {
    
    			for (j = 0;j < 7;j++) {
    
    				printf("%c", feld[i][j]);
    
    				zahl = hilfe;
    			}
    		}
    	}
    }
    
    int main()
    {
    	char feld[100];
    	int a;
    
    	scanf("%d", &a);
    	zahlworte(a, feld);
    
    	return 0;
    }
    

    so zählt er alle zahlen durch, ich weiß nicht wie ich es machen soll damit er nur die zahlen ausgibt die Verlangt werden und das noch in der richtigen Reihenfolge.

    Ich denke es hat was mit der Modulo zu tun hat. Hab ich oben deshalb auch probiert, kommt leider nicht das Raus was ich erhofft habe.
    Weiß auch warum allerdings weiß ich nicht wie ich es so ändern kann das es funktioniert. 😕



  • Am Modulo liegt es nicht.

    Deine beiden Schleifen sind Mist, die zweite sogar überflüssig.(wie werden C-Strings mit printf ausgegeben?)

    Mit hilfe = zahl % 10; bekommst du die letzte Stelle der Zahl. Diese hat einen Wert von 0 bis 9 und den kannst du direkt als (ersten) Index auf dein feld nehmen

    Jetzt musst du noch die letzte Stelle entfernen und weitermachen. Du darfst mal selber überlegen wie du nur durch Rechnen von 12345 auf 1234 (und dann 123) kommst.
    Das ist Grundschulniveau, da du mit Ganzzahlen rechnest.



  • greecly schrieb:

    if (hilfe = i) {
    

    Warnt dein Compiler bei dieser Zeile nicht?

    Ein Vergleich geht mit ==, eine Zuweisung ist mit =.



  • DirkB schrieb:

    Du darfst mal selber überlegen wie du nur durch Rechnen von 12345 auf 1234 (und dann 123) kommst.

    Na mit shift right natürlich. Was für eine Frage. 😉


Anmelden zum Antworten