Programm stürzt ab ?

Tutorials.at
Verfügbare Informationen zu "Programm stürzt ab ?"

  • Qualität des Beitrags: 0 Sterne
  • Beteiligte Poster: Kleriker - DrPhil_Guth
  • Forum: Tutorials.at
  • Forenbeschreibung: Programmierforum
  • aus dem Unterforum: C / C++
  • Antworten: 13
  • Forum gestartet am: Mittwoch 19.04.2006
  • Sprache: deutsch
  • Link zum Originaltopic: Programm stürzt ab ?
  • Letzte Antwort: vor 17 Jahren, 11 Monaten, 24 Tagen, 4 Stunden, 9 Minuten
  • Alle Beiträge und Antworten zu "Programm stürzt ab ?"

    Re: Programm stürzt ab ?

    Kleriker - 04.05.2006, 15:36

    Programm stürzt ab ?
    Hi Leute

    Also ich hab mir durch diese Seite hier bisschen C angeeignet und übe mic hderzeit im einfache Programm schreiben.

    Jetzt hab ich ein Programm, bei dem der Compiler keine Fehler angibt aber das Programm stürzt trotzdem ab. Kann jemand helfen?

    Hier der Quelltext:(Ich füg mal de ein "---------------------" ein wo das Programm immer abstürzt!
    Zitat: #include <stdio.h>
    #include <conio.h>

    int main(){
    int klausuren[20][20], lknoten[20][50], facher=0, anzkl[20],anzlk[20];
    float klschnitt[20], lkschnitt[20], gesamt=0;
    for (int i=0;i<20;i++){
    klschnitt[i]=0;
    lkschnitt[i]=0;
    anzkl[i];
    anzlk[i];
    for (int j=0;j<20;j++){
    klausuren[i][j]=0;}
    for (int j=0;j<50;j++){
    lknoten[i][j]=0;}
    }
    printf ("Herzlich Willkommen beim Schulnotenprogramm!\n\n");
    printf ("Bitte geben sie die Anzahl der Faecher an(20):");
    scanf ("%d", &facher);
    printf ("\n");
    for (int i=0;i<facher;i++) {
    printf ("Anzahl der Klausurnoten fuer das %d.Fach(20):",i+1);
    scanf ("%d",anzkl[i]);
    printf ("\n");
    ---------------------
    for (int j=0;j<anzkl[i];j++){
    printf ("Wie lautet die %d.Note:",j+1);
    scanf ("%d",&klausuren[i][j]);}
    printf ("\n");
    printf ("Anzahl der LKnoten fuer das %d.Fach(50):",i+1);
    scanf ("%d",anzlk[i]);
    printf ("\n");
    for (int j=0;j<anzlk[i];j++){
    printf ("Wie lautet die %d.Note:",j+1);
    scanf ("%d",&lknoten[i][j]);}
    }
    getch();
    getch();
    return 0;}

    edit: Sehe grad das der Text nicht formatiert ist. War er vor dem kopieren schon. Sorry das ihr euch jetzt so durchfressen müsst.



    Re: Programm stürzt ab ?

    Kleriker - 04.05.2006, 16:25


    Mmh.. 4 Leute ham schon geguckt aber keine Lösung?

    Könnt ihr das bei euch net einfach mal testen? (müsstet natürlic hdie "------" rausmachen ;) )

    Vllt is bei mir irgendwas kaputt?



    Re: Programm stürzt ab ?

    DrPhil_Guth - 04.05.2006, 17:17


    :lol:
    und da zeigt er bei dir keine fehler an?

    Ok, ich schreib mal in echtzeit. fehlerfindungsprozess ;)

    Also mein Super c findet da an die 8 fehler,
    und mein Visual c++ findet 3.

    man muss glaub ich nicht jedes mal i und j neu definieren, das reicht es einmal in der main fkt. zu deklarieren. (das sind auch die 8 fehler des Super c, und die 3 (???) fehler des Visual c++)

    Ok, nach dem kompilieren

    Ach ja, und noch ein tipp: für dich selber und vor allem wenn den code wer anderer lesen soll:
    Formatier ein bisschen. Absätze, tabulatoren, und hier und dort ein paar kommentare. Ich sag dir, wenn du das ding nach nem halben jahr anschaust, weisst du ungefähr, wie's uns beim lesen geht.

    Ok, nach dem kompilieren macht er bei mir auch halt, allerdings nicht dort wo bei dir.

    Ehm, eine Frage: sag mal hast du auch nur eine einzige zeile, in der das was du vom benutzer bekommst auch in deine Arrays eingelesen wird?

    Ah, doch das ist wohl bei den scanf anweisungen dabei...

    meine schlussfolgerung:
    Zitat:
    #include <stdio.h>
    #include <conio.h>

    int main(){

    int klausuren[20][20], lknoten[20][50], facher=0, anzkl[20],anzlk[20], i, j;
    float klschnitt[20], lkschnitt[20], gesamt=0;

    for (i=0;i<20;i++)

    {
    klschnitt[i]=0;
    lkschnitt[i]=0;
    anzkl[i];
    anzlk[i];

    for (j=0;j<20;j++){

    klausuren[i][j]=0;}

    for (j=0;j<50;j++){

    lknoten[i][j]=0;}
    }

    printf ("Herzlich Willkommen beim Schulnotenprogramm!\n\n");
    printf ("Bitte geben sie die Anzahl der Faecher an(20):");
    scanf ("%d", &facher);
    printf ("\n");

    for (i=0;i<facher;i++)

    {
    /*-------------------*/
    printf ("Anzahl der Klausurnoten fuer das %d.Fach(20):",i+1);
    scanf ("%d",&anzkl[i]); /*&nicht vergessen*/
    printf ("\n");


    for (j=0;j<anzkl[i];j++)

    {
    printf ("Wie lautet die %d.Note:",j+1);
    scanf ("%d",&klausuren[i][j]);
    }

    printf ("\n");
    printf ("Anzahl der LKnoten fuer das %d.Fach(50):",i+1);
    scanf ("%d",&anzlk[i]); /*&nicht vergessen*/
    printf ("\n");

    for (j=0;j<anzlk[i];j++)

    {
    printf ("Wie lautet die %d.Note:",j+1);
    scanf ("%d",&lknoten[i][j]);
    }
    /*---------------------*/
    }

    getch();
    getch();
    return 0;}

    wegen irgendeinem grund erfüllt sich die bedingungen die mit ------- gekennzeichnet ist nie, weil ich zwar die vorherigen zeilen sehe, diese aber nicht.

    Ok, das hilft dir ganz sicher sehr viel weiter :lol:

    ich schau noch mal rein. Ich hab nur meine zwischenergebnisse reingepostet, weil du ja so ungeduldig bist...

    ich hab schon was gelöst schau dort wo rot ist

    Oh, das war schon alles...
    kann das sein, dass dein programm noch nicht fertig ist? Der Notenschnitt wird gar nicht gerechnet...

    Jetzt müsste das programm funktionieren.



    Re: Programm stürzt ab ?

    Kleriker - 04.05.2006, 17:34


    Ahja

    Danke erstmal für deine Antwort.

    Also der 1. Fehler mit dem initialisieren von i und j.
    Das hab ich mir auch schon gedacht. Aber is vllt eher ein Form Fehler. Hatte erst probiert die einfach bei der 1. schleife zu initialisieren udn bei den anderen einfach nur noch zu definieren aber das ging rigendwie nicht. da gab es fehler. Aber danke für den Hinweis. Die natürlich gleich oben einfach mal zu initialisieren is natürlich viel logischer.

    Welches Programm verwendest du? Heißt das "Super C" Oder nennst du es nur grad so? Bini ch mir grad nicht ganz schlüssig.

    Hauptfehler:

    Also alles dreht sich um diese Schlefie die du ja schon markiert hast.
    Aber inwiefern meinst du das sich die Bed. nie erfüllt? Es wird doch gar keine Bedingung abgefragt. Weil es aj lediglich erstmal darum geht alles einzulesen.
    Dazu sollt ich vllt sagen das das Programm noch net fertig ist. Aber ich halt erstmal getestet habe ob alle Noten eingegeben werden können. Und da trat halt der FEhler auf.
    Ich sag´s mal auch wenn es vllt keiner glaubt: Ich hatte erst ordentliceh Kommentare rangeschrieben aber aus der Befürchtung das da vllt irgendwas gestört hat die ganzen Kommentare wieder rausgelöscht. Sorry. Soll ich nochmal welche ranschreiben damit ihr/du siehst wie ich mit das alles gedacht habe?

    Danke erstmal für deine Antwort.(hab grad gesehen das ich mich wiederholt hab, aber is trotzdem ernst gemeint ;) )
    Bei mir stürzt das Programm auch immer noch an der selben stelle ab.



    Re: Programm stürzt ab ?

    DrPhil_Guth - 04.05.2006, 17:42


    Ich hab meine antwort aktualisiert. es geht wirklich um die bedingung

    for (i=0; i<anzkl[i]; i++);

    nämlich dass du vorher die variable nicht mit &anzkl[i] eingelesen hast.

    der operator & gibt die !Adresse! der variable an, und scanf() speichert das was eingegeben wurde nicht unter der variable, sondern einfach nur unter der adresse.
    d.H. er speicherts unter der adresse mit dem inhalt anzkl[i]. Das wäre sagen wir mal 12 oder so. Eine richtige adresse wäre aber 12353323. deswegen musst du bei Scanf() immer ein & dazuschreiben

    und ich verwende zum lernen den Compiler Borland Super-C, wie in der vorbereitung empfohlen. (www.tutorials.at, dann auf c lernen, dann auf vorbereitungen und dann das markierte hier)

    und zum helfen (wegen der STRG c, STR v funktion) den Visual c++ vom M$



    Re: Programm stürzt ab ?

    Kleriker - 04.05.2006, 17:46


    oh... krasses ding.
    jaja das man den zeiger & verwenden muss war mir eigentlich kalr baer hab ihn übersehen das er fehlt. Ich dank dir für deine echt gute hilfe.
    Thumps up! *g*

    Kleriker



    Re: Programm stürzt ab ?

    Kleriker - 04.05.2006, 17:56


    Okay ich erweiter mal das ganze...

    Angenommen der Benutzer soll auch den Namen des Bezeichners eingeben können? Wie kann ich das anstellen. Also ich hab mir das Kapitel zu "strings" und so angeguckt und weis das der text in array´s gespeichert wird, aber wie kann ich ihn für jedes fach einzeln abspeichern? Also das müsste dann ansich ja wieder ein 2 dimensionales array werden wo einer der "Fach"-Zähler "i" durchläuft und bei den anderen der "string". Geht das so? Oder hab ich nen Denkfehler?



    Re: Programm stürzt ab ?

    DrPhil_Guth - 04.05.2006, 18:04


    nein nein, denkfehler.

    du kannst den bezeichner nicht selber eingeben, zumindest nicht mit einem string.
    Weil dann wären die daten sozusagen char und int gleichzeitig. das geht nicht.
    aber überleg mal: eigentlich kanns dir ja scheissegal sein, wie der bezeichner heißt, oder? Ich mein beim Kompilieren vernichtet er das eh alles zu 1 und 0.

    Aber die problematik ist mir bekannt. Ich hab in der Schule vor einiger zeit Ableitungen gelernt, und ich dachte mir, ich programmier das mal. Quadratische glg. lösen hab ich ja schon geschafft.

    nun, da gibts 2 hauptprobleme:

    1. Wie krieg ich das kackding dazu, dass er versteht was ich eintippe und das dann ableitet. ich meine nicht mit zahlen, sondern mit x u.s.w.
    (das ist genau das gleiche problem, wie du hast: von der eingabe zum Code)
    das ist irgendwie ziemlich komplex...


    2. Wie krieg ich das kackding dazu, dass er mir die ableitung dann so ausspuckt, dass man dasd irgendwie verwenden kann (vereinfachung).
    dazu müsste man sozusagen "Vereinfachungsregeln" einführen.



    Re: Programm stürzt ab ?

    Kleriker - 04.05.2006, 18:34


    mmh.. dann is das echt schwer.

    ob wir jemals ne Lösung finden? *g*

    Aber nochmal verständnis Frage:
    Wenn ich
    char text[6];
    gets (text);

    machdann "hallo" eingeb kann ich das normal mit
    printf wieder ausgeben oder?



    Re: Programm stürzt ab ?

    DrPhil_Guth - 04.05.2006, 18:50


    jo.
    nur kannst du dann halt noch nen ganzen satz eingeben, wogegen bei scanf() nach dem ersten leerzeichen schluss ist.



    Re: Programm stürzt ab ?

    Kleriker - 04.05.2006, 18:58


    jo des mir klar^^



    Re: Programm stürzt ab ?

    DrPhil_Guth - 04.05.2006, 19:07


    du bist wohl gleich weit wie ich, oder? am ende des 4. Kapitels... dann brauch ich dir eigentlich garnix erzählen...



    Re: Programm stürzt ab ?

    Kleriker - 04.05.2006, 19:28


    Jo aber siehst ja das man manchmal einfach sachen übersieht da hilft ein 2. immer. hjer übrigens das fertige programm wen es interessiert. Is noch ausbaufähig. aber naja alles zu seiner zeit.
    Zitat: #include <stdio.h>
    #include <conio.h>

    int main(){
    int klausuren[20][20], lknoten[20][50], facher=0, anzkl[20],anzlk[20],i=0,j=0;
    float klschnitt[20], lkschnitt[20], fachschnitt[20],gesamt=0;
    for (i=0;i<20;i++){
    klschnitt[i]=0;
    lkschnitt[i]=0;
    fachschnitt[i]=0;
    anzkl[i]=0;
    anzlk[i]=0;
    for (j=0;j<20;j++){
    klausuren[i][j]=0;}
    for (j=0;j<50;j++){
    lknoten[i][j]=0;}
    }
    printf ("Herzlich Willkommen beim Schulnotenprogramm!\n\n");
    printf ("Bitte geben sie die Anzahl der Faecher an(20):");
    scanf ("%d", &facher);
    printf ("\n");
    for (i=0;i<facher;i++) {
    printf ("Anzahl der Klausurnoten fuer das %d.Fach(20):",i+1);
    scanf ("%d",&anzkl[i]);
    printf ("\n");
    for (j=0;j<anzkl[i];j++){
    printf ("Wie lautet die %d.Note:",j+1);
    scanf ("%d",&klausuren[i][j]);}
    printf ("\n");
    printf ("Anzahl der LKnoten fuer das %d.Fach(50):",i+1);
    scanf ("%d",&anzlk[i]);
    printf ("\n");
    for (j=0;j<anzlk[i];j++){
    printf ("Wie lautet die %d.Note:",j+1);
    scanf ("%d",&lknoten[i][j]);}
    }
    for (i=0;i<facher;i++) {
    for (j=0;j<anzkl[i];j++){
    klschnitt[i]+=klausuren[i][j];}
    for (j=0;j<anzlk[i];j++){
    lkschnitt[i]+=lknoten[i][j];}
    klschnitt[i]=klschnitt[i]/anzkl[i];
    lkschnitt[i]=lkschnitt[i]/anzlk[i];
    fachschnitt[i]=((klschnitt[i]*2)+lkschnitt[i])/3;
    }
    for (i=0;i<facher;i++) {
    gesamt+=fachschnitt[i];
    }
    gesamt/=facher;
    for (i=0;i<facher;i++) {
    printf ("Dein Note im %d.Fach ist:%.2f\n",i+1,fachschnitt[i]);
    }
    printf ("Dein Gesamtschnitt ist: %.2f",gesamt);
    getch();
    getch();
    return 0;}

    P.S.:Sorry die Formatierung geht beim kopierne verloren und Kommentare hab ich jetzt noch net drin di schreib ich nach.



    Mit folgendem Code, können Sie den Beitrag ganz bequem auf ihrer Homepage verlinken



    Weitere Beiträge aus dem Forum Tutorials.at

    hilfe bei Prog - gepostet von niki1 am Sonntag 03.06.2007
    Moin - gepostet von Zhero am Dienstag 22.08.2006
    Umrechner Arabische in Römische Zahlen - gepostet von Walgo am Donnerstag 19.07.2007
    qIp, ICQ, MSN, Trilian und andere... - gepostet von Dirty Oerty am Samstag 17.11.2007
    [C++]Problem mit Dateilese/schreibfunktion - gepostet von Dirty Oerty am Dienstag 23.01.2007
    Programm stürzt ab ? - gepostet von Kleriker am Donnerstag 04.05.2006
    schon wieder probleme: getchar() - gepostet von detewe89 am Donnerstag 03.05.2007



    Ähnliche Beiträge wie "Programm stürzt ab ?"

    Wer kommt in Mohrenkönig! Neues Programm!! - dussi (Montag 16.04.2007)
    TV Programm - Mietzlinchen (Freitag 13.07.2007)
    Programm - ostaricia (Dienstag 18.09.2007)
    neues oder altes Programm ??? - kiki010101 (Donnerstag 21.06.2007)
    Sechselberg Gemeinschaftsfreizeit Programm - Karolinchen (Dienstag 03.10.2006)
    Schleifen Programm - Kimi (Samstag 01.12.2007)
    Gericht verbietet "Cards"-Programm - 4dministr4t0r (Montag 25.12.2006)
    Ezan Programm! - eQua (Freitag 06.01.2006)
    Speak-Programm - Sir_Achim (Montag 15.01.2007)
    Boah, der Name ist programm! - Mez (Donnerstag 24.02.2005)