Klausurvorbereitung



  • xX Dany Xx schrieb:

    Ja was will die Funktion haben... Initialisierung von matnr und name vielleicht? Ich dachte das wäre in der Struktur initialisiert und das hätt ich ja durch das StudiTyp* ptr so an die Funktion weitergeleitet...

    ich meine, in der parameterliste steht: StudiTyp ptr*
    ^^ was ist damit gemeint?
    🙂



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

    Ich kriege zwar am Ende iwelchen Fehler, aber das Prog läuft schon mal ^^



  • Gut so, ähem, jetzt fehlen noch ein, zwei mallocs. Btw. für Aufgabe 5a gibt es mit C nur unsinnige Lösungen und Ansätze.



  • xX Dany Xx schrieb:

    ...
    void student_eingeben ()
    {
    	printf ("Matrikelnummer: ");
    	scanf ("%d", &a.matnr);
    	printf ("Name: ");
    	scanf ("%s", b.name);
    }
    ...
    

    Ich kriege zwar am Ende iwelchen Fehler, aber das Prog läuft schon mal ^^

    damit gibst du nur a.matnr und b.name ein. a.name und b.matnr bleiben leer. ausserdem ist das ziemlich unflexibel, du müsstest für jeden member jeder struct zwei zeilen hinschreiben. der ursprüngliche ansatz mit dem StudiTyp* war schon nicht so verkehrt.
    🙂



  • dozent0r schrieb:

    Gut so, ähem, jetzt fehlen noch ein, zwei mallocs. Btw. für Aufgabe 5a gibt es mit C nur unsinnige Lösungen und Ansätze.

    ^^ blödsinn, das geht in C wunderbar und mallocs brauchste auch nciht.
    🙂



  • ja aber der Fehler ist ganz schön schlecht... Mallocs?? Ich wollte nach der Eingab von Name nochmal Ausgabe machen, dass er das halt nochmal anzeigt, aber soweit kommt er ja dann gar nicht... jmnd ne Idee?

    ja was jetzt?? also doch jetzt mit StudiTyp* ptr?



  • xX Dany Xx schrieb:

    ja aber der Fehler ist ganz schön schlecht... Mallocs?? Ich wollte nach der Eingab von Name nochmal Ausgabe machen, dass er das halt nochmal anzeigt, aber soweit kommt er ja dann gar nicht... jmnd ne Idee?

    dozent0r will dich nur veralbern, beachte ihn nicht.
    🙂



  • LoL okay... ich konzentrier mich meistens ehe nur auf ;fricky oder noobLolo und en paar andere.. kommen immer mal so paar unbekannte dazu.. die verwirren mich dann immer...



  • struct Student { 
     int   matnr; 
     char* name; // <- ohne malloc ?
    }; 
    typedef struct Student StudiTyp;
    
    (...)
    
    void student_eingeben (void);
    

    ^^ So sind die Vorgaben. Die kann man nicht wegdiskutieren.

    @xX Dany Xx :
    Soll die Aufgabe 5 wirklich mit C gelöst werden?



  • 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 😞




Anmelden zum Antworten