Заполнение массива заданными числами - 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);

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


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

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

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