2016-05-19 7 views
0

So habe ich ein Dilemma. Mein Code soll ein diagonales Muster von Zahlen mit for-Schleifen und einem 5 mal 5 zweidimensionalen Array ausgeben. Ich soll das Array mit Nullen füllen und die for-Schleife mit den gewünschten Zahlen füllen. Bisher habe ich das erfolgreich gemacht. Sie sind jedoch in der falschen Reihenfolge. Ich möchte, dass die 80 oben rechts und die 5 unten links sind.Erstellen von Mustern mit mehrdimensionalen Arrays in c

Die Ausgabe sollte so aussehen:

0 0 0 0 80 
0 0 0 40 0 
0 0 20 0 0 
0 10 0 0 0 
5 0 0 0 0 

Aktuelle Quellcode:

#include <stdio.h> 
#include <stdlib.h> 

int main() 
{ 
    int the_array[5][5] = 
    { 
     { 0, 0, 0, 0, 0 }, 
     { 0, 0, 0, 0, 0 }, 
     { 0, 0, 0, 0, 0 }, 
     { 0, 0, 0, 0, 0 }, 
     { 0, 0, 0, 0, 0 }, 
    }; 

    int dia = 5; 
    int x = 0; 
    int y = 0; 
    for (x = 4; x >= 0; --x) 
    { 
     for (y = 0; y < 5; ++y) 
     { 
      if (x == y) 
      { 
       the_array[x][y] = dia; 
       dia *= 2; 
      } 

      printf(" %d ", the_array[x][y]); 
     } 
     printf("\n"); 
    } 
    return 0; 
} 
+0

Split die Schlaufen oben in zwei Durchgänge. Setzen Sie das Array im ersten Durchlauf und drucken Sie es im zweiten Schritt. Auf diese Weise können Sie die Reihenfolge ändern, in der Sie iterieren. Die erste Schleife muss nicht geschachtelt werden, da Sie sie nur bei 'x == y' setzen. –

Antwort

0

die innere Schleife entfernen. Du brauchst es nicht. x kann in Ihrem Fall auch für y verwendet werden (mit Subtraktion)! Setzen Sie auch dia auf Startwert von 80 und teilen Sie es dann.

int main() 
{ 
    int the_array[5][5] = 
    { 
     { 0, 0, 0, 0, 0 }, 
     { 0, 0, 0, 0, 0 }, 
     { 0, 0, 0, 0, 0 }, 
     { 0, 0, 0, 0, 0 }, 
     { 0, 0, 0, 0, 0 }, 
    }; 

    int dia = 80; 

    for (int x = 4; x >= 0; --x) 
    { 
     the_array[x][x] = dia; 
     dia /= 2; 

     for (int y = 0; y < 5; ++y) 
     { 
      printf(" %02d ", the_array[x][y]); 
     } 
     printf("\n"); 
    } 
    return 0; 
} 
0
#include <stdio.h> 
#include <stdlib.h> 

int main() 
{ 
int the_array[5][5] = 
{ 
{ 0, 0, 0, 0, 0 }, 
{ 0, 0, 0, 0, 0 }, 
{ 0, 0, 0, 0, 0 }, 
{ 0, 0, 0, 0, 0 }, 
{ 0, 0, 0, 0, 0 }, 
}; 

int dia = 5; 
int x = 0; 
int y = 0; 
for (x = 4; x >= 0; --x) 
{ 
     the_array[x][x] = dia; 
     dia *= 2; 
} 

    for(int i = 0; i < 5; i++) 
    { 
     for(int j = 4; j >= 0; j--) 
     { 
      printf("%d ", the_array[i][j]); 
     } 
     printf("\n"); 
    } 
return 0; 
} 

können Sie verwenden eine Schleife verwenden, zu ändern the_array zu:

80 0 0 0 0 
0 40 0 0 0 
0 0 20 0 0 
0 0 0 10 0 
0 0 0 0 5 

Dann zwei verwenden Schleife die Ausgabe es:

0 0 0 0 80 
0 0 0 40 0 
0 0 20 0 0 
0 10 0 0 0 
5 0 0 0 0 
0
#include <stdio.h> 

int main(void){ 
    int the_array[5][5] = {{0}}; 
    int x, y, dia = 80;//start from 80 

    for (x = 0; x < 5; ++x){//start from 0 
     for (y = 0; y < 5; ++y){ 
      if (x == 5 - y - 1) { 
       the_array[x][y] = dia; 
       dia /= 2; 
      } 
      printf(" %2d ", the_array[x][y]); 
     } 
     printf("\n"); 
    } 
    return 0; 
} 
Verwandte Themen