Заполнение массива заданными числами - C (СИ)
Формулировка задачи:
Доброго времени суток.
Столкнулся с проблемкой. Нужно заполнить две матрицы заданными заранее числами. На пример из файла или заданными в самой программе. Не подскажете как это осуществить?
Программа предназначена для прямого произведения матриц.
Вот пример программы, где матрицы заполняются рандомно:
#include <time.h> #include <stdio.h> #include <stdlib.h> #include <assert.h> //Прямое произведение матриц void multiply(int** result, int** m1, int** m2, size_t size) { size_t i, j, k, l; //Основная ф-ция for(i = 0; i < size; ++i) for(j = 0; j < size; ++j) for(k = 0; k < size; ++k) for(l = 0; l < size; ++l) result[i * size + k][j * size + l] = m1[i][j] * m2[k][l]; } void dump(int** matrix, size_t size, const char* prompt) //Вывод отформатированной матрицы { size_t i, j; //Первая матрица (temp) if(prompt != NULL) puts(prompt); for(i = 0; i < size; ++i, putchar('\n')) for(j = 0; j < size; ++j) printf("%5d", matrix[i][j]); } void generate(int** matrix, size_t size, int left, int right) //Генерирование матрицы { size_t i, j; for(i = 0; i < size; ++i) for(j = 0; j < size; ++j) matrix[i][j] = rand() % (right - left + 1) + left; } int** allocate_matrix(size_t size) //Сдвиг/перемещение матрицы { size_t i; int** matrix; matrix = malloc(size * sizeof(int*)); assert(matrix != NULL); for(i = 0; i < size; ++i) { matrix[i] = malloc(size * sizeof(int)); assert(matrix[i] != NULL); } return matrix; } void free_matrix(int** matrix, size_t size) //Свободная матрица { size_t i; for(i = 0; i < size; ++i) free(matrix[i]); free(matrix); } int main(void) //Основная программа { size_t size; int** m1; int** m2; int** m3; srand((size_t) time(NULL)); printf("Введите размерность матрицы: "); scanf("%zd", &size); m1 = allocate_matrix(size); //Матрица 1 m2 = allocate_matrix(size); //Матрица 2 m3 = allocate_matrix(size * size); //Итоговая матрица (Размерность n*n) generate(m1, size, -5, 5); //Генерирование +рандом generate(m2, size, -5, 5); //Генерирование +рандом dump(m1, size, "Первая матрица:"); //Вывод отформатированных матриц dump(m2, size, "Вторая матрица:"); //Вывод отформатированных матриц multiply(m3, m1, m2, size); dump(m3, size * size, "Результат:"); //Размерность и вывод итоговой матрицы free_matrix(m3, size); free_matrix(m2, size); free_matrix(m1, size); exit(0); //Выход при одиночном нажатии клавиши Enter }
Решение задачи: «Заполнение массива заданными числами»
textual
Листинг программы
generate(m1, size, -5, 5);
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д