Problem mit 2d Array und pointern



  • ich verlass mich mall auf dich und übernehm das einfach 🙂
    und guck gleich mal ob sich mein fehler damit erledigt hat ... danke schonmal

    hmm .. das sich die windoof commandline beim einlesen der ersten zeile aufhängt mit addressfehler bleibt leider trotzdem :-\



  • mach das:

    scanf("%f", **&**matrix[i][j]);



  • haha wie dumm .. das hatte ich doch schonmal probiert !! ...
    jetzt gehts 🙂 besten dank !!!11 👍 😃

    Also beim einlesen gibts jezz keine Fehler mehr .. doch trotzdem haut er mir bei der ausgabe nicht die eingegeben Zahlen aus sondern irgendwas ... mit verdammt vielen Nullen ^^

    printf("Bitte geben sie die Anzahl der Unbekannten an!\n");
      scanf("%u",&numunknown);
    
      row=numunknown;       /*Anzahl Zeilen der Matrix 
                              nur von 0 bis row-1 */
      column=numunknown+1;  /*Anzahl Spalten der Matrix
                              nur bis column-1 also bis numunknown*/
      matrix=initMatrix(row,column);
    
      printf("Bitte geben sie von links nach rechts und von oben nach unten\n");
      printf("die Faktoren der %u Variablen Zeilenweise und mit\n",numunknown);
      printf("Leerzeichen getrennt, ein.\n");
      for(i=0; i!=row; ++i)
      {
        for(j=0; j!=column-1; ++j)
        {
          scanf("%f",&matrix[i][j]);
        }
        printf("\n");
      }
      printf("Bitte geben sie den Loesungsvektor wie oben beschrieben an!\n");
      for(i=0; i!=row; ++i)
      {
        scanf("%f",&matrix[i][column-1]);
        printf("\n");
      }
    
     //Ausgabe des linearen GLS
      printf("Es folgt die Ausgabe des GLS in Matrixschreibweise:\n");
      for(i=0; i!=row; ++i)
      {
        printf("(");
        for(j=0,t=1; j!=column-1; ++j,++t)
        {
          printf("%.2f",(double)matrix[i][j]);
          if(t!=numunknown) printf("\t");
        }
        printf(")");
        printf("\t(x%d)",i+1); //Variablenvektor
        printf(" = (%.2f)",(double)matrix[i][column-1]); //Lösungsvektor
        printf("\n");
      }
    

    nur wieso ?



  • hilfe :>



  • probier mal %lf fuer ueberall, wo du mit doubles zu tun hast. koennte funktionieren.

    allein vom anschauen ist mir am code nichts aufgefallen. versuchs mal mit nem debugger oder lass dir ein paar variablen mit nem printf ausgeben.



  • ihr habt eindeutig zuwenig smilies .. ich brauch jezz ein was sich mit nem hammer auf den kopf schlägt oder so ...
    http://www.smilieworld.net/smilies/kranke_smilies/krank3.gif
    wie in 3 teufelsnamen machst du das ^^ ich find %lf nichtmal irgendwo bei google oder in meinen komischen c/c++ Büchern .. was macht das bitte ?!?!?

    naja werde wohl die double werte in floats umändern ... :-x





  • @c-rackwitz ich habe eine Frage zu der 7. Zeile deines Codes (bin gerade dabei mir C für Mikrocontroller Programmierung anzueignen): Wieso wird in der Klammer von sizeof ein * hinter den Datentyp geschrieben?

    Ich finde aktuell leider keine Erklärung dazu 😞 und würde mich über ein Feedback sehr freuen 🙂



    1. Es wird nicht gern gesehen, Threads von vor über 10 Jahren wiederzubeleben. Stelle deine Frage doch einfach neu.
    2. Es handelt sich nicht um ein 2d-Array, sondern um ein Array von Pointern auf Arrays¹. Wichtig ist, dass dein Array also Pointer enthält. Somit musst du Speicher für sizeof(pointer)*anzahl_elemente reservieren.

    ¹ ok, es sind genau genommen gar keine Arrays, sondern Pointer auf dynamisch reservierten Speicher


  • Mod

    Was @wob gesagt hat. Ich mache hier zu, aber lasse die Beiträge stehen, damit du die Antworten sehen kannst. Wenn Nachfragen bestehen: Neuer Thread. Und zwar vorzugsweise so, dass man den neuen Thread verstehen kann, ohne erst einen 13 Jahre alten anderen Thread lesen zu müssen. Du darfst davon ausgehen, das keiner der Nutzer aus diese Thread nach so langer Zeit noch aktiv sind, also spar es dir, sie persönlich anzusprechen.


Log in to reply