Wo liegt mein Denkfehler



  • Hallo,
    also erstmal kurz zur Einleitung, ich muß für meinen Infokurs an der FH ein kleines Programm in C schreiben, wir sind im 1.Semester und demnach noch nicht allzu tief in der Materie drin, ergo kenn ich mich noch nicht besonders gut aus.

    folgende Aufgabe:
    Wir sollen mithilfe einer Switch Anweisung ein beliebiges Wort einlesen und das dann in eine Vanity Nummer umwandeln (aus HALLO wird z.B. 0700-42556)

    Das klappt bei mir ganz gut...solange das Wort nur einen Buchstaben hat 😉
    Was muß ich machen damit er auch alle Zeichen vom Wort bearbeitet - ich vermute irgendwas mit ner While Schleife!? Oder ist mein ganzer Ansatz schon Mist?
    Naja so siehts bisher aus..:

    [code]#include <stdio.h>
    #include <stdlib.h>
    
    int main()
    {
        char wort;
    
            printf(" \n\n      ~~~   PROGRAMM ZUR ERZEUGUNG VON VANITY NUMMERN AUS EINEM WORT   ~~~");
            printf("\n\n\n   Bitte ein Wort eingeben das in eine Vanity Nummer umgewandelt werden soll!\n\n");
    
            wort=getchar();
    
            printf("Die Nummer lautet: 0700 - ");
             switch (wort)
            {
            case 'A':
            case 'B':
            case 'C':
            printf("2");
            break;
            case 'D':
            case 'E':
            case 'F':
            printf("3");
            break;
            case 'G':
            case 'H':
            case 'I':
            printf("4");
            break;
            case 'J':
            case 'K':
            case 'L':
            printf("5");
            break;
            case 'M':
            case 'N':
            case 'O':
            printf("6");
            break;
            case 'P':
            case 'Q':
            case 'R':
            case 'S':
            printf("7");
            break;
            case 'T':
            case 'U':
            case 'V':
            printf("8");
            break;
            case 'W':
            case 'X':
            case 'Y':
            case 'Z':
            printf("9");
            break;
            default:
            printf("Falsche Eingabe, nur Grossbuchstaben verwenden!"); // fuer alle anderen Faelle
            }
             printf("\n\n\n");
    
        return 0;
    }
    [/code]
    


  • getchar ist für deine Zwecke die falsche Funktion. Du möchtest ein Wort (einen String, also eine Zeichenkette) einlesen. getchar liest aber nur ein einzelnes Zeichen (char) auf dem Eingabepuffer und gibt es zurück. Nimm stattdessen gets oder eine andere Funktion, die mehr als ein Zeichen einliest.

    'wort' darf jetzt auch nicht mehr vom Typ char sein, sondern sollte ein char-Array (eine Kette von chars, also ein String) sein. Zum Beispiel so:

    char wort[256];
    


  • Ein Schleife brauchst du sowieso, mit welcher du die eingelesene Zeichenkette einzeln/zeichenweise durchläufst:

    #include <stdio.h>
    #include <stdlib.h>
    
    int main()
    {
        int i;
        char wort[256], zeichen;
    
            printf(" \n\n      ~~~   PROGRAMM ZUR ERZEUGUNG VON VANITY NUMMERN AUS EINEM WORT   ~~~");
            printf("\n\n\n   Bitte ein Wort eingeben das in eine Vanity Nummer umgewandelt werden soll!\n\n");
            fgets( wort,256,stdin );
    
            printf("Die Nummer lautet: 0700 - ");
            for( i=0; zeichen=wort[i], zeichen!=0 && zeichen!='\n'; ++i )
             switch (zeichen)
            {
            case 'A':
            case 'B':
            case 'C':
            printf("2");
            break;
            case 'D':
            case 'E':
            case 'F':
            printf("3");
            break;
            case 'G':
            case 'H':
            case 'I':
            printf("4");
            break;
            case 'J':
            case 'K':
            case 'L':
            printf("5");
            break;
            case 'M':
            case 'N':
            case 'O':
            printf("6");
            break;
            case 'P':
            case 'Q':
            case 'R':
            case 'S':
            printf("7");
            break;
            case 'T':
            case 'U':
            case 'V':
            printf("8");
            break;
            case 'W':
            case 'X':
            case 'Y':
            case 'Z':
            printf("9");
            break;
            default:
            printf("Falsche Eingabe, nur Grossbuchstaben verwenden!"); // fuer alle anderen Faelle
            }
             printf("\n\n\n");
    
        return 0;
    }
    


  • €: Erledigt, funktioniert - vielen Dank, jetzt muß ich nur noch verstehen wieso ^^


Anmelden zum Antworten