Сформировать матрицу по правилу - C (СИ) (79381)

Узнай цену своей работы

Формулировка задачи:

Всем привет! Помогите перевести программу с паскаля на си, пытался найти трансляторы, не получилось, не могу разобраться никак в них чтобы было понятнее вот само задание: Дана целочисленая квадратичная матрица А размером 8x8. Получить целочисленную одномерную последовательность B1, B2,..B64, Элементами которой являются числа полученые из квадротичной матрици предложеной на рисунке схеме тоесть B1=A11, B2=A21, B64=A18 Код на паскале:
const n=8;
var a: array [1..n,1..n] of integer;
    b: array [1..n*n] of integer;
    i,j,k: integer;
BEGIN
  randomize;
  for i:=1 to n do
    begin
      for j:=1 to n do
        begin
          a[i,j]:=random(20)-3;
          write(a[i,j]:4)
        end;
      writeln
    end;
  k:=0;
  for j:=1 to n do
    if j div 2 = j/2 then
      for i:= n downto 1 do
        begin
          inc(k);
          b[k]:=a[i,j]
        end;
    else
      for i:=1 to n do
        begin
          inc(k);
          b[k]:=a[i,j]
        end;
  writeln('Полученный одномерный массив');
  for i:=1 to n*n do
    write(b[i]:4);
END.

Решение задачи: «Сформировать матрицу по правилу»

textual
Листинг программы
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
 
#define SIZE 8
 
int main(void) {
    int matrix[SIZE][SIZE], array[SIZE * SIZE], i, j, * pArr;
    /* заполнение матрицы случайными числами */
    srand(time(NULL));
    printf("Matrix:\n");
    for ( i = 0; i < SIZE; ++i ){
        for ( j = 0; j < SIZE; ++j )
            printf("%02d ", ( matrix[i][j] = rand() % 100 ));
        printf("\n");
    }
 
    /* хитрое копирование в массив */
    pArr = array;
    for ( j = 0; j < SIZE; j += 2 ) {
        for ( i = 0; i < SIZE; ++i )
            *pArr++ = matrix[i][j];
        for ( i = SIZE - 1; i >= 0; --i )
            *pArr++ = matrix[i][j+1];
    }
    printf("Array:\n");
    for ( i = 0; i < SIZE * SIZE; ++i )
        printf("%02d ", array[i]);
    printf("\n");
 
    exit(EXIT_SUCCESS);
}

Объяснение кода листинга программы

Вывод программы: Matrix: 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 0A 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 Array: 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 Список действий:

  1. Объявление переменных: — matrix[SIZE][SIZE] - двумерный массив (матрица) размером SIZE на SIZE; — array[SIZE SIZE] - одномерный массив (буфер) размером SIZE SIZE; — i, j - индексы для обхода матрицы и массива; — pArr - указатель на элемент массива array.
  2. Заполнение матрицы случайными числами от 0 до 99 с помощью функции rand() и оператора % (остаток от деления).
  3. Хитрое копирование в массив array по следующему правилу: сначала заполняются четные строки матрицы, начиная с первой строки, затем нечетные строки, начиная с последней строки.
  4. Вывод на экран содержимого массива array.
  5. Вход из программы.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

9   голосов , оценка 3.556 из 5
Похожие ответы