Klausurvorbereitung



  • Ja nur C Bitte keine C++ und auch keine C# Sprachen!!!
    Das ist in der Klausur ohnehin nicht zulässig...
    Das Fach Einführung in die Programmierung behandelt nur C-Programmiersprache..

    Achso ja bis auf die b) .. die haben wir gestrichen.. sowas wird bei uns auch nicht drankommen denk ich... also solange es dafür keine Lösung in C gibt...



  • Ja wenn ich jetzt so darüber nachdenke.. Wenn die b) nur in C++ lösbar ist und es keine vernünftige Lösung in C für a) gibt... ist es schon möglich, dass die komplette 5 in C++ gelöst werden sollte...

    Wie gesagt wir haben nur ne kleine Exkursion in C++ gemacht... angeblich soll in der Klausur von C++ nix drankommen, hat der Prof gesagt... das ist ne Klausur vom SS und der ist länger.. deswegen ist es möglich, dass die halt so ne kleine C++ Aufgabe hatten.. bei uns kommt sowas halt aber nicht dran...



  • Ich mach mich mal an die 4 ran.... wobei ich seh nur noch *s und muss kotzen.. ich hasse Zeiger... ich komm mit den Dingern überhaupt nicht klar.. und dann auch noch die ganze hin und her schmeißerei durch funktionen ... omg ..



  • Mit C kann bei Aufgabe 5 eben nur Unsinn rauskommen. Aber um trotzdem bei Deinem Ansatz zu bleiben:

    struct Student { 
     int matnr; 
     char* name; 
    }; 
    typedef struct Student StudiTyp; 
    
    StudiTyp a;
    
    void student_eingeben () 
    { 
     printf ("Matrikelnummer: "); 
     scanf ("%d", &a.matnr); 
     printf ("Name: "); 
     scanf ("%s", a.name); 
    }
    

    "a.name" (char 😉 ist nur ein Zeiger auf Speicherplatz. Der Speicherplatz ansich muß noch "besorgt" werden:

    int main () 
    { 
     a.name = malloc (50*sizeof(char)); // <- so hier
    
    // char name [50];                  // <- oder so hier (lieber nicht) :)
    // a.name = name;
    
     student_eingeben(); 
     getch(); 
    }
    


  • // char name [50];                  // <- oder so hier (lieber nicht) :)
    // a.name = name;
    

    Wieso nicht so? 🙂 Das gefällt mir aber mehr... danke für deine Antwort ich werds mal gleich ausprobieren...

    Aber bei der 4 habe ich ja wieder das gleiche Problem.. diesmal steht halt in der Klammer bei der Funktion was drin.. bzw. MUSS drin stehen..

    void verschluesseln (char *s, int n)
    {
    	s[100]={' '};
    	n=0;
    
    	printf ("Zeichenfolge: ");
    	scanf ("%s", &s);
    
    	while (s[n] != '\0')
    	{
    		n++;
    	}
    	printf ("\nDie Folge enthealt %d Zeichen.", n);
    }
    
    int main ()
    {
            verschluesseln();
            getch();
    }
    


  • Ja man du bist voll der Pro dozentOr 👍
    Funzt super..

    struct Student {
        int matnr;
        char* name;
    };
    typedef struct Student StudiTyp;
    
    StudiTyp a;
    
    void student_eingeben ()
    {
        printf ("Matrikelnummer: ");
        scanf ("%d", &a.matnr);
        printf ("Name: ");
        scanf ("%s", a.name);
    	printf ("\nMatrikelnummer: %d\nName: %s", a.matnr, a.name);
    }
    
    int main ()
    {
    	char name[50];
    	a.name = name;
            student_eingeben();
            getch();
    }
    


  • Aufgabe 4 habe ich jetzt so gemacht

    void verschluesseln (char *s, int n)
    {
    	int d=0;
        s[100]={' '};
    	n=3;
    
        printf ("Zeichenfolge: ");
        scanf ("%s", &s);
    
        while (s[d] != '\0')
        {
            d++;
        }
        printf ("\nDie Folge enthealt %d Zeichen.", d);
    	for (; d>=0; d--)
    		s[d]=s[d]+n;
    	printf ("\nVerschluesselte Zeichenfolge lautet: %s", s);
    }
    
    int main ()
    {
            verschluesseln();
            getch();
    }
    

    Also aufrufen kann ich die Funktion immer noch nicht, deswegen kann ich noch nicht prüfen ob das funktionieren würde, aber er meckert schon mal dass ; bei s[100]={' '} fehlt.. jeweils vor { und } aber das ist doch Schwachsinn... ja und die verschluesseln Funktion akzeptiert wieder keine 0 Argumente.



  • xX Dany Xx schrieb:

    ...ja und die verschluesseln Funktion akzeptiert wieder keine 0 Argumente.

    Hast du schon mal etwas von einer Parameterübergabe gehört, Bruder?



  • Du meinst so..

    void verschluesseln (char *s, int n)
    {
    	int d=0;
    
        printf ("Zeichenfolge: ");
        scanf ("%s", &s);
    
        while (s[d] != '\0')
        {
            d++;
        }
        printf ("\nDie Folge enthealt %d Zeichen.", d);
    	for (; d>=0; d--)
    		s[d]=s[d]+n;
    	printf ("\nVerschluesselte Zeichenfolge lautet: %s", s);
    }
    
    int main ()
    {
    	int n=3;
    	char s[100]={' '};
            verschluesseln(s, n);
            getch();
    }
    

    Ich habe in meinem schlauen Buch nachgeschaut 😃
    Aber jetzt kommt iwie ein Fehler, nachdem ich die Zeichenfolge eingegeben habe.. der Compiler meckert allerdings nicht...



  • kannst dus nich oder willst dus nicht (dir die grundlagen anschauen)? du stocherst da in einem haufen code rum ohne zu wissen wonach du suchst, das führt einfach nicht zum ziel...

    fehler im scanf() wie auch schon vorhin, dir fehlt einfach das 1 mal 1 der zeiger, datentypen, eingabe und ausgabe, feldinitialisierung, und alles was sonst noch so in ein programm rein kommt, du hast mittlerweile 2 ganze abende damit verbracht diese mini aufgabe zu lösen, und ich hoffe du weißt wieviel hier menschen schon geschrieben haben um dir zu helfen, aber du zeigst immernoch NULL eigeninitiative.

    auch wenns madig ist, aber lieber das als keins...
    http://openbook.galileocomputing.de/c_von_a_bis_z/004_c_ein_ausgabe_001.htm#mj9988ed46abbabfaf84eb71b69bea2fd8

    ich bin mal wieder traurig 😞





  • xX Dany Xx schrieb:

    Ich habe in meinem schlauen Buch nachgeschaut 😃

    Da solltest du öfter mal reingucken, ruhig ein bisschen länger.
    Jedenfalls ist noch ne Menge Müll in deinem Code drin, viel mehr kann man fast schon nicht mehr falsch machen.
    Der scanf Parameter ist kagge, die Arraygrenze ist nicht abgesichert, du überschreibst den Nullterminator, die Eingabe der Zeichenfolge sollte außerhalb der Verschlüsselungsfunktion erfolgen, das Array ist ein wenig sinnfrei initialisiert. Reicht das erstmal?

    Gruß,
    B.B.



  • Big Brother schrieb:

    Jedenfalls ist noch ne Menge Müll in deinem Code drin, viel mehr kann man fast schon nicht mehr falsch machen.
    Der scanf Parameter ist kagge, die Arraygrenze ist nicht abgesichert, du überschreibst den Nullterminator, die Eingabe der Zeichenfolge sollte außerhalb der Verschlüsselungsfunktion erfolgen, das Array ist ein wenig sinnfrei initialisiert. Reicht das erstmal?

    Gruß,
    B.B.

    Ich weiß nicht was ihr habt.. ich hab nur aus der scanf Funktion gets gemacht und das Programm funktioniert... außer, dass er mir bei der verschlüsselten Zeichenfolge immer das Endzeichen (\0) mit einliest.. aber das ist halb so schlimm... Also er erkennt richtig bei "hallo" z.B. 5 Zeichen gibt dann bei der verschlüsselten Zeichenfolge aber 6 Zeichen aus.. Aber das kann ich ja einfach beheben indem ich in die for-Schleife d=d-1 reinschreibe...

    void verschluesseln (char *s, int n)
    {
    	int d=0;
    	printf ("Zeichenfolge: ");
        gets (s);
    
        while (s[d] != '\0')
        {
            d++;
        }
        printf ("\nDie Folge enthealt %d Zeichen.", d);
    	for (; d>=0; d--)
    		s[d]=s[d]+n;
    	printf ("\nVerschluesselte Zeichenfolge lautet: %s", s);
    }
    
    int main ()
    {
    	int n=3;
    	char s[100]={' '};
            verschluesseln(s, n);
            getch();
    }
    


  • Du bist nicht zufällig Hasso, oder sein Kumpel? 😃



  • ne


Anmelden zum Antworten