Заполнение массива заданными числами - C (СИ)

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

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

Доброго времени суток. Столкнулся с проблемкой. Нужно заполнить две матрицы заданными заранее числами. На пример из файла или заданными в самой программе. Не подскажете как это осуществить? Программа предназначена для прямого произведения матриц. Вот пример программы, где матрицы заполняются рандомно:
Листинг программы
  1. #include <time.h>
  2. #include <stdio.h>
  3. #include <stdlib.h>
  4. #include <assert.h>
  5. //Прямое произведение матриц
  6. void multiply(int** result, int** m1, int** m2, size_t size)
  7. {
  8. size_t i, j, k, l; //Основная ф-ция
  9. for(i = 0; i < size; ++i)
  10. for(j = 0; j < size; ++j)
  11. for(k = 0; k < size; ++k)
  12. for(l = 0; l < size; ++l)
  13. result[i * size + k][j * size + l] = m1[i][j] * m2[k][l];
  14. }
  15. void dump(int** matrix, size_t size, const char* prompt) //Вывод отформатированной матрицы
  16. {
  17. size_t i, j; //Первая матрица (temp)
  18. if(prompt != NULL)
  19. puts(prompt);
  20. for(i = 0; i < size; ++i, putchar('\n'))
  21. for(j = 0; j < size; ++j)
  22. printf("%5d", matrix[i][j]);
  23. }
  24. void generate(int** matrix, size_t size, int left, int right) //Генерирование матрицы
  25. {
  26. size_t i, j;
  27. for(i = 0; i < size; ++i)
  28. for(j = 0; j < size; ++j)
  29. matrix[i][j] = rand() % (right - left + 1) + left;
  30. }
  31. int** allocate_matrix(size_t size) //Сдвиг/перемещение матрицы
  32. {
  33. size_t i;
  34. int** matrix;
  35. matrix = malloc(size * sizeof(int*));
  36. assert(matrix != NULL);
  37. for(i = 0; i < size; ++i)
  38. {
  39. matrix[i] = malloc(size * sizeof(int));
  40. assert(matrix[i] != NULL);
  41. }
  42. return matrix;
  43. }
  44. void free_matrix(int** matrix, size_t size) //Свободная матрица
  45. {
  46. size_t i;
  47. for(i = 0; i < size; ++i)
  48. free(matrix[i]);
  49. free(matrix);
  50. }
  51. int main(void) //Основная программа
  52. {
  53. size_t size;
  54. int** m1;
  55. int** m2;
  56. int** m3;
  57. srand((size_t) time(NULL));
  58. printf("Введите размерность матрицы: ");
  59. scanf("%zd", &size);
  60. m1 = allocate_matrix(size); //Матрица 1
  61. m2 = allocate_matrix(size); //Матрица 2
  62. m3 = allocate_matrix(size * size); //Итоговая матрица (Размерность n*n)
  63. generate(m1, size, -5, 5); //Генерирование +рандом
  64. generate(m2, size, -5, 5); //Генерирование +рандом
  65. dump(m1, size, "Первая матрица:"); //Вывод отформатированных матриц
  66. dump(m2, size, "Вторая матрица:"); //Вывод отформатированных матриц
  67. multiply(m3, m1, m2, size);
  68. dump(m3, size * size, "Результат:"); //Размерность и вывод итоговой матрицы
  69. free_matrix(m3, size);
  70. free_matrix(m2, size);
  71. free_matrix(m1, size);
  72. exit(0); //Выход при одиночном нажатии клавиши Enter
  73. }

Решение задачи: «Заполнение массива заданными числами»

textual
Листинг программы
  1. generate(m1, size, -5, 5);

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


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

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

14   голосов , оценка 4.071 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы