PROBLEM IN C-AUFGABE - BITTE UM HILFE



  • [C-CODE]
    #include<stdio.h>
    #include<math.h>
    #include<stdlib.h>
    #include<time.h>

    void main (void)
    {
    double feld1[35][4][6];
    int i,j,k,zUntfünfzig=0;

    srand((unsigned)time(NULL));

    //mit diesen drei Schleifen wird das ganze Array durchlaufen und
    //mit Zufallszahlen geffüllllt

    for(i=0; i<35; i++)
    {
    for(j=0; j<4; j++)
    {
    for(k=0; k<6; k++)
    {

    feld1[i][j][k]=rand()*99/RAND_MAX+1;
    //printf("Array [%i] Array [%i] Array [%i] Zahl: %.2lf \n",i,j,k,feld1[i][j][k]);
    // funktionirt jetzt, allerdings zeigt er mir nicht alles komplett an,
    // also bei der Ausgabe wir abgeschnitten
    // wie ganze Ausgabe verfolgen???
    }

    }
    }

    //diese drei Schleifen durchlaufen auch das Array und falls eine Zahl
    //unter 50 ist wird diese
    //mit 30 multipliziert und gleichzeitig mitgezählt, dass wieder eine Zahl unter 50 war.

    for(i=0; i<35; i++)
    {
    for(j=0; j<4; j++)
    {
    for(k=0; k<6; k++)
    {
    if(feld1[i][j][k] < 50)
    {
    feld1[i][j][k] = feld1[i][j][k]*30;
    printf("Array[%i] Array[%i] Array[%i] Zahl: %0.2lf \n",i,j,k,feld1[i][j][k]);
    zUntfünfzig = zUntfünfzig +1;
    }

    }

    }
    }
    printf("so viele Zahlen sind kleiner als 50: %i \n",zUntfünfzig);
    }

    // ein Problem bleibt weiterhin und zwar - aus Aufgabe:
    // Drucken Sie zum Schluss das Datenfeld in 140 Zeilen zu je 6 Daten
    // mit jeweils 2 Nachkommastellen aus
    // wie soll ich das verstehen???
    // aus 3 Dimensionen 2 Dimensionen machen???
    // oder neues Feld mit feld2[140][6][6]???, aber dann hab ich doch viel mehr Plätze zu vergeeben
    // und wie soll ich die Werte überhaupt übergeben???
    [/C-CODE]

    HIER ÜBRIGENS DIE ORGINAL AUFGABE:

    Entwickeln Sie Analyse, Struktogramm und C-Programm:

    Füllen Sie ein Datenfeld, das auf 35 mal 4 mal 6 Fließkommawerte dimensioniert ist, irgendwie Zahlen zwischen 1 und 100. Das Programm soll dann ermitteln und ausdrucken, wie viele Zahlen kleiner als 50 sind. Alle Zahlen kleiner als 50 sollen dann mit 30 multipliziert werden. Drucken Sie zum Schluss das Datenfeld in 140 Zeilen zu je 6 Daten mit jeweils 2 Nachkommastellen aus.



  • ach ja ich wollte eigentlich die gesamte Aufgabe hier schön übersichtlich reinmachen, so wie im Progrmm, aber keine Ahnung wie 😞



    1. Wir haben hier code-tags, damit das lesbar wird:
    2. man rückt ein:
    #include<stdio.h>
    #include<math.h>
    #include<stdlib.h>
    #include<time.h>
    
    void main (void)
    {
      double feld1[35][4][6];
      int i,j,k,zUntfünfzig=0;
    
      srand((unsigned)time(NULL));
    
      //mit diesen drei Schleifen wird das ganze Array durchlaufen und
      //mit Zufallszahlen geffüllllt
    
      for(i=0; i<35; i++)
      {
        for(j=0; j<4; j++)
        {
          for(k=0; k<6; k++)
          {
            feld1[i][j][k]=rand()*99/RAND_MAX+1;
            //printf("Array [%i] Array [%i] Array [%i] Zahl: %.2lf \n",i,j,k,feld1[i][j][k]); 
            // funktionirt jetzt, allerdings zeigt er mir nicht alles komplett an,
            // also bei der Ausgabe wir abgeschnitten
            // wie ganze Ausgabe verfolgen???
          }
        }
      }
      //diese drei Schleifen durchlaufen auch das Array und falls eine Zahl
      //unter 50 ist wird diese
      //mit 30 multipliziert und gleichzeitig mitgezählt, dass wieder eine Zahl    unter 50 war.
    
      for(i=0; i<35; i++)
      {
        for(j=0; j<4; j++)
        {
          for(k=0; k<6; k++)
          {
            if(feld1[i][j][k] < 50)
            {
              feld1[i][j][k] = feld1[i][j][k]*30;
              printf("Array[%i] Array[%i] Array[%i] Zahl: %0.2lf \n",i,j,k,feld1[i][j][k]);
              zUntfünfzig = zUntfünfzig +1;
            }
          }
        }
      }
      printf("so viele Zahlen sind kleiner als 50: %i \n",zUntfünfzig);
    }
    
    // ein Problem bleibt weiterhin und zwar - aus Aufgabe:
    // Drucken Sie zum Schluss das Datenfeld in 140 Zeilen zu je 6 Daten
    // mit jeweils 2 Nachkommastellen aus
    // wie soll ich das verstehen???
    // aus 3 Dimensionen 2 Dimensionen machen???
    // oder neues Feld mit feld2[140][6][6]???, aber dann hab ich doch viel mehr Plätze zu vergeeben
    // und wie soll ich die Werte überhaupt übergeben???
    
    1. keine Variablen mit Umlauten verwenden, z.B. zUntfünfzig

    2. 140 Zeilen zu je 6 Daten <-- klingt doch plausibel bei

    for(i=0; i<35; i++)
      {
        for(j=0; j<4; j++)
        {
          for(k=0; k<6; k++)
          {
    

    35*4 = 140 und dann verbleiben jeweils 6

    Du kannst das doch steuern über \n Zeilenumbruch oder \t Tabulator o.ä.



  • wie macht man das?

    1. Wir haben hier code-tags, damit das lesbar wird:
    2. man rückt ein:
      C/C++ Code:

    habe das im meinem 2 Thema versucht und bin glech gescheitert



    1. mit [ cpp ] ... [ /cpp ]
    2. einfach einrücken (space oder tab)


  • danke!

    so nochmal auf die 140 zu kommen, was will die eigentlich von mir?
    soll ich das nur so verstehen, dass ich mein 3-dimensionales-Feld auf dem Bildschirm ausgeben???

    also keine neuen Felder???



  • for(i=0; i<35; i++)
      {
        for(j=0; j<4; j++)
        {      
          for(k=0; k<6; k++)
          { 
              feld1[i][j][k] *= 30;
              printf("[%i][%i][%i]: %0.2lf  ",i,j,k,feld1[i][j][k]);
              if(feld1[i][j][k] < 50)
              {
                zahlUnterFuenfzig++; // increment operator
              }
          }
          printf("\n"); // Zeilenumbruch 
        }
      }
    

    So in etwa ..., habe es nicht ausprobiert.
    Also bei den zahlen tab oder " " und
    danach jeweils newline für die neue Zeile.

    Das sind keine "Dimensionen", sondern nur geschachtelte Zählschleifen. 😉



  • warum hast du die printf-Anweisung vorgezogen?
    ich hab die Aufgabenstellung so verstanden, dass erst nach der Prüfung alle Zahlen die kleiner 50 sind ausgegeben werden sollen.

    dann sollen alle Zahlen kleiner als 50 mit 30 multipliziert werden und zum Schluss
    das Datenfeld ( das komplette Datenfeld mit den neuen multipliezierten Zahlen drinne???) in 160 Zeilen zu je 6 Daten ausgegeben werden.

    aber ich merke schon, dass ich das einfach nur nicht kapiere was der Prof. von mir will (leider habe ich in C nicht so viel Erfahrung)



  • Schreib bitte nicht komplett mit Großbuchstaben (wie im Titel) 😡 👎


Anmelden zum Antworten