2016-04-29 11 views
-3

У меня есть задание, которое состоит в создании куска кода, который генерирует и сохраняют значения в форме:Генерация 1 и 0 и хранение в виде ромба внутри массива

1 1 0 1 1 
1 0 0 0 1 
0 0 0 0 0 
1 0 0 0 1 
1 1 0 1 1 

я могу использовать только массивы и петли. Нет необходимости печатать массив, но я печатаю его, чтобы проверить, правильно ли я сделал. В моей голове это должно работать, но оно возвращает мусор. Массив двухмерный, должен иметь равные нечетные номера. У меня есть буквально менее недели опыта работы с любыми программами.

main(){ 
    int number; 
    printf("PLEASE GIVE ME A EVEN NUMBER FROM 3 TO 20\n"); 
    scanf("%d", &number); 
    if(number%2==0) 
    { 
     printf("THIS WON'T FIT\n"); 
     return 0; 
    } 

    int array1[number][number]; 
    int lin, col, zero=1, count; 
    int ones=(number-1)/2; 
    for(lin=0;lin<number;lin++) 
    { 
     for(col=0;col<number;col++) 
     { 
      for(count=1; count<=ones;count++) 
      { 
       array1[lin][col]=1; 

       for(count=1;count<=zero;count++) 
       { 
        array1[lin][col]=0; 
       } 
      } 
     } 

     --ones; 
     zero+=2; 
    } 

    for(lin=0;lin<number;lin++) 
    { 
     for(col=0;col<number;col++) 
      printf("%d", array1[lin][col]); 
     printf("\n"); 
    } 
} 
+4

То же самое в предыдущем посте: время, чтобы узнать, как отлаживать код. – LPs

+0

Злые сообщения. – BLUEPIXY

+0

Учитывая точки 'i' и' j', вы можете проверить, находится ли точка внутри/снаружи алмаза? –

ответ

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

int main(void){ 
    int number; 
    printf("PLEASE GIVE ME A ODD NUMBER FROM 3 TO 19\n"); 
    scanf("%d", &number); 
    if(number%2==0 || number < 3 || number > 19){ 
     printf("THIS WON'T FIT\n"); 
     return 0; 
    } 
    int center = number/2; 
    int array[number][number]; 

    for(int i = 0; i < number; ++i){ 
     for(int j = 0; j < number; ++j){ 
      array[i][j] = abs(i-center)+abs(j-center) > center; 
      printf("%d ", array[i][j]); 
     } 
     puts(""); 
    } 
    return 0; 
} 
+1

Это отрицание того, о чем просит ОП. ;) 'array [i] [j] =! (abs (i-center) + abs (j-center) <= center);' – LPs

+0

Человек, его учитель, вероятно, даст ему минус очки;) – Matthieu

+0

@LPs или заменить '<=' by '>' – Matthieu