for-Schleifenproblem



  • Hallo,

    ich möchte gerne folgendes mit verschachtelten for-schleifen darstellen, wenn dies möglich ist:

    01  06  11  16
    02  07  12  17
    03  08  13  18
    04  09  14  19
    05  10  15  20
    

    ich steh irgendwie auf dem schlauch. Oder ist das garnicht möglich mit for-schleifen? Muss ich dafür eventuell mehrdimensonale felder anlegen?



  • Es gibt ~unendlich Möglichkeiten das in eine for-Schleife zu quetschen, könntest du etwas näher beschreiben was du damit erreichen möchtest?

    Ich rate mal irgendwas:

    #include <stdio.h>
    
    int main(void)
    {
      int i, j;
      for (i = 1; i != 6; ++i)
      {
        for (j = 0; j != 4; ++j)
          printf("%02d ", i + j * 5);
        putchar('\n');
      }
      return 0;
    }
    


  • for(unsigned int i = 0; i<5; ++i) {
        for(unsigned int j = 0; j<4; ++j) {
            std::cout<<std::setw(2)<<i + 5*j + 1<<" ";
        }
        std::cout<<"\n";
    }
    

    Das mit der 0 vor Zahlen die kleiner 10 sind solltest du selber hinbekommen ...

    EDIT: Schonwieder falsches Forum ... Aber die Grundidee stimmt doch (die Ausgabe zu verändern sollte man ja hinbekommen ...)


  • Mod

    Rammsteiner schrieb:

    Oder ist das garnicht möglich mit for-schleifen?

    Alle Schleifen können äquivalent ineinander überführt werden. Mit Schleifen und ein paar grundlegenden Rechenoperationen bist du meines Wissens nach schon Turing-vollständig und kannst jede Ausgabe erzeugen (oder fehlt noch bedingte Anweisung? Habe kein Informatik studiert)

    Muss ich dafür eventuell mehrdimensonale felder anlegen?

    Unsinn.

    Mach mal eine Schleife die N von 1 bis 5 zählt. Und da drin eine Schleife die M von N bis N + 15 in 5er Schritten zählt. Und der Rest sollte klar sein.

    @phyax: C-Forum!



  • @cooky

    ich solle ine TAN liste erstellen. Hinter 01 soll dann ein TAN stehen der vorher in ein feld geschrieben wurde ...

    01 TAN#1 aus feld Nr.0   06 TAN#6 aus feld Nr.5   11 TAN11 aus feld Nr.10   16 TAN16 aus feld Nr.15
    02 TAN#2 aus feld Nr.1   07 TAN#7 aus feld Nr.6   12 TAN12 aus feld Nr.11   17 TAN17 aus feld Nr.16
    03 TAN#3 aus feld Nr.2   08 TAN#8 aus feld Nr.7   13 TAN13 aus feld Nr.12   18 TAN18 aus feld Nr.17
    04 TAN#4 aus feld Nr.3   09 TAN#9 aus feld Nr.8   14 TAN14 aus feld Nr.13   19 TAN19 aus feld Nr.18
    05 TAN#5 aus feld Nr.4   10 TAN10 aus feld Nr.9   15 TAN15 aus feld Nr.14   20 TAN20 aus feld Nr.19
    

    mir fehlen immer irgendwie die mathematischen kenntnisse um dahinter zu blicken wie lang ich welche schleife durchführen muss. Kann man da irgendwelche tipps geben um das zu erinnerlichen? Ich probier bei c immer so lange rum bis das dann passt, aber das ist ja nicht sinn in der klausur. Die allgemeine syntax und funktionsweise einer vor schleife kenne und verstehe ich. Aber zu blicken wieman jetz die verschiedensten ausgaben wiedergibt, daran fehlt es mir leider ...



  • danke, konnte das problem mit eurer hilfe lösen 🙂 ...

    hier der code. Irgendwie hatte ich ein Brett vor dem Kopf, man kann das Problem mit nur einer for-schleife und grundliegender mathematik lösen, die mir manchmal fehlt 😃 ..... 🙄 ...

    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    #include <time.h>
    
    main(void){
    
    int tan[200];
    
    int i,z1,z2, zufall,x,y;
    
    srand(time(0));
    
      for(i=1;i<=200;i++){
    
          z1 = rand();
          z2 = rand();
          zufall = 10*z1+z2;
          tan[i]=zufall;
          }
    
    printf("Nr.  TAN\tNr.  TAN\tNr.  TAN\tNr.  TAN\n===========================================================\n");
    
      for(x=1;x<=50;x++){
          printf("%.3i  %.6i\t",x,     tan[x]     );
          printf("%.3i  %.6i\t",x+50,  tan[x+50]  );
          printf("%.3i  %.6i\t",x+100, tan[x+100] );
          printf("%.3i  %.6i\n",x+150, tan[x+150] );
      }
    
    }
    

Anmelden zum Antworten