Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Центр помощи > [C] Массив -> матрица


Автор: Denzel666 25.12.2006, 01:19
Помогите ,пожалуйста, с программой...препод не объяснил а сам не могу разобраться че к чему...

Задание:
Дан одномерный массив целых чисел А размерностью 64. Получить квадратную матрицу порядка 8 ,элементами которой являются числа массива А, расположенные в ней по схемам, приведенным на рис

рис:
__  _   __
  / /  / /  /  /|
 / /  / /  /  / | 
/ /  / /  /  / /
|/  / /  /  / /
   / /  /  / /  |  
  / /  /  / /  /|
 / /  /  / /  / /
|/  /_/ /_/ /__> 

 в о бщем то же самое почти что и в примере, только стрелка внизу и начинается не так маленько...

ПРимер на эту же тему:

рис
    _  _   __
| / / / /  /  /  /|     
|/ / / /  /  /  / |       
  / / /  /  /  /  /   
 / / /  /  /  /  /         
| / /  /  /  /  /               
|/ /  /  /  /  /  /             
  /  /  /  /  /  /|     
 /  /  /  /  /  / |      
|_/  /_/  /_/ \|/     
                    | 


Пример на эту тему:

 Дан одномерный массив целых чисел Р размерностью 64. Получить квадратную матрицу порядка 8 ,элементами которой являются числа массива Р, расположенные в ней по схеме, приведенной на рисунке. Эта задача решается с помощью одного основного цикла, в котором организуется управление изменением индексов в зависимости от условий размещения элементов. Для отслеживания направления движения по диагонали вводится вспомогательная переменная l. Ее значение равно 0 при движении вниз по диагонали и 1 при движении вверх.

Код

#include <stdio.h>
#include <math.h>
#include <conio.h>
main()
  {
  clrscr();
  float p[64];
  float a[8][8];
  int n=8,i=0,j=0,k,l=0;
  for (k=0;k<n*n;k++)
    p[k]=k;
  for (k=0;k<n*n;k++)
    {
    a[i][j]=p[k];
    if(j==0 && i<n-1 && l==0 )
      {
      i++;
      l=1;
      }
    else if(i==0 && j<n-1 && l==1 )
      {
      j++;
      l=0;
      }
    else if( j==n-1 && l==1)
      {
      i++;
      l=0;
      }
    else if(i==n-1 && l==0)
      {
      j++;
      l=1;
      }
    else if(l==0)
      {
      i++;
      j--;
      }
    else
      {
      i--;
      j++;
      }
    }
  for(i=0;i<n;i++)
    {
    for(j=0;j<n;j++)
      printf("%3.0f ",a[i][j]);
    printf ("\n");
    }
  }



Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)