Сформировать матрицу по правилу - 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 Список действий:
- Объявление переменных: — matrix[SIZE][SIZE] - двумерный массив (матрица) размером SIZE на SIZE; — array[SIZE SIZE] - одномерный массив (буфер) размером SIZE SIZE; — i, j - индексы для обхода матрицы и массива; — pArr - указатель на элемент массива array.
- Заполнение матрицы случайными числами от 0 до 99 с помощью функции rand() и оператора % (остаток от деления).
- Хитрое копирование в массив array по следующему правилу: сначала заполняются четные строки матрицы, начиная с первой строки, затем нечетные строки, начиная с последней строки.
- Вывод на экран содержимого массива array.
- Вход из программы.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д