Parameter an main übergeben



  • Hey Leute, wie im Titel erwähnt möchte ich ein Programm schreiben das Parameter in die Main übergibt. Eine konkrete Übungsaufgabe dazu:

    ______________________________________________________________________

    Schreiben Sie ein Programm charcounter.c, dem ein Satz als Parameter an die main-Funktion übergeben wird und das das Vorkommen der Buchstaben (nur A bis Z, keine Sonderzeichen, keine Umlaute usw.) zählt, ohne dabei die Groß- und Kleinschreibung zu unterscheiden.

    Ihr Programm soll alle Buchstaben, die mindestens einmal vorkommen, und die Anzahl ihres Vorkommens exakt wie in den u. a. Beispielen ausgeben.

    Hinweis:
    Die Signatur Ihrer main-Funktion muss wie folgt lauten, um Parameter beim Programmstart zu bekommen:
    int main(int argc, char *argv[]);

    Beispiele:

    ./charcounter.exe "Mississippi River"
    E:1
    I:5
    M:1
    P:2
    R:2
    S:4
    V:1

    ./charcounter.exe "Voll krasses Programm"
    A:2
    E:1
    G:1
    K:1
    L:2
    M:2
    O:2
    P:1
    R:3
    S:3
    V:1

    ./charcounter.exe Voll krasses Programm
    L:2
    O:1
    V:1

    _____________________________________________________________________

    😕 😕 wie übergebe ich einen Satz als Parameter in die Main 😕 😕

    danke schon mal für die Hilfe 👍



  • Wie startest du denn bisher deine (selbstgeschriebenen) Programme? Mittels einer IDE oder per Konsole?
    Bei den Beispielen ist doch angegeben, wie das auszusehen hat.
    Bei einer IDE (z.B. Visual Studio) kannst du die Parameter in den Projektoptionen angeben.



  • Danke dir.
    Hab die Einstellung für VS gefunden. Vorher noch nie was davon gehört, deshalb etwas 😕 😉

    Jetzt noch das Programm schreiben 👍 😃

    Danke nochmal



  • kann mir jemand weiter Helfen 🙄

    #include "stdlib.h"
    #include "stdio.h"
    
    int main(int argc, char* argv[])
    {
    
    	int i;
    	int count =0;
    
    	for (char zaehler = 'A'; zaehler < '['; zaehler++){
    		for (i=0;*argv[i] != '\0' ;i++){
    
    				if ((zaehler == *argv[i]) || (zaehler + 32 == *argv [i])){
    					count++;
    				}
    
    		}
    		if(count !=0){
    		printf("%c: %d\n",zaehler, count);
    		}
    		count = 0;
    	}
    
    	return 0;
    }
    

    ich lad das bei ner Seite hoch (Praktomat) und bekomme ständig Compiler Fehlermeldungen.
    ________________________________________________

    C - Compiler : failed

    charcounter.c: In function 'main':
    charcounter.c:12:2: error: 'for' loop initial declarations are only allowed in C99 mode
    charcounter.c:12:2: note: use option -std=c99 or -std=gnu99 to compile your code

    _________________________

    Was muss ich denn Umschreiben bzw. wie Umschreiben damit er das Akzeptiert 😕



  • Im originalen C (C89) müssen Variablen am Anfang eines Blocks (scope) deklariert sein:

    char zaehler;
    
    for (zaehler = 'A'; zaehler <= 'Z'; zaehler++) // statt < '[': besser zu lesen!
    

    Edit: Du solltest dir auch mal die Funktionen toupper() bzw. tolower() anschauen (du kannst dich bei C nicht darauf verlassen, daß auf allen Systemen immer ein ASCII-Code vorliegt - es gibt noch andere [wenn auch seltener benutzt] wie EBCDIC), d.h. auch strenggenommen deine Zählschleife von 'A' bis 'Z' verhält sich nicht immer wie erwartet).

    PS: Demnächst für weitere Fragen aber einen eigenen Beitrag eröffnen.



  • Vielen dank. Compiler läuft. 🙂 👍

    Werde ich mir bei Gelegenheit anschauen 👍


Log in to reply