Я хотел бы умножить 2 матрицы с помощью указателей в c. Трудность в том, что я должен использоватьgcc -Werror -o run filename file.c
в терминале linux, поэтому я не могу иметь даже предупреждения в своем коде.умножение матрицы в c с помощью указателей
У меня есть MyArray матрица пхп (где п четное число - 4,6,8 ...), и я должен разделить его на 4 части, после этого, я должен умножить эту часть как:
1x2 = a, ax3 = b и bx4 = c (где 1,2,3,4 - это 4 части моей исходной матрицы).
Проблема довольно проста, но я не могу ее обработать. Код:
#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>
//---------------------------------------------initialize and adding elements!!!
void init_matrix(int **myArray, int n)
{
int i,j;
printf("Insert data:\n");
for (i = 0; i < n; i++)
for (j = 0; j < n; j++)
{
scanf("%d", &*(*(myArray+i)+j));
}
printf("The introduced Array:\n");
for (i = 0; i < n; i++)
{
for (j = 0; j < n; j++)
printf("%d ", *(*(myArray+i)+j));
printf("\n");
}
printf("\n");
{
}
}
//---------------------------------------------devisation in 4 parts!!!
void first_matrix(int **myArray,int n)
{ int i,j,m;
printf("\nThe first matrix is: \n");
for (i = 0; i < n/2; i++)
{
for (j = 0; j < m/2; j++)
printf("%d ", *(*(myArray+i)+j));
printf("\n");
}
printf("\n");
{
}
}
void second_matrix(int **myArray, int n)
{ int i,j,m;
printf("\nThe second matrix is: \n");
for (i = 0; i < n/2; i++)
{
for (j = m/2; j < m; j++)
printf("%d ", *(*(myArray+i)+j));
printf("\n");
}
printf("\n");
{
}
}
void third_matrix(int **myArray, int n)
{ int i,j,m;
printf("\nThe third matrix is: \n");
for (i = n/2; i < n; i++)
{
for (j = 0; j < m/2; j++)
printf("%d ", *(*(myArray+i)+j));
printf("\n");
}
printf("\n");
{
}
}
void fourth_matrix(int **myArray, int n)
{ int i,j,m;
printf("\nThe fourth matrix is: \n");
for (i = n/2; i < n; i++)
{
for (j = m/2; j < m; j++)
printf("%d ", *(*(myArray+i)+j));
printf("\n");
}
printf("\n");
{
}
}
int main(void)//----------------------------------------------------main function!!!
{
int **myArray,i, n;
printf("Enter the dimmension of Array: ");
scanf("%d", &n);
//alloc memory
myArray = (int **) malloc(n * sizeof(int*));
for(i = 0; i< n; i++)
myArray[i] = (int *) malloc(sizeof(int));
init_matrix(myArray,n);
first_matrix(myArray,n);
second_matrix(myArray,n);
third_matrix(myArray,n);
fourth_matrix(myArray,n);
//some methods for mutiply
//free memory
for(i = 0; i< n; i++)
free(myArray[i]);
free(myArray);
printf("\n");
return 0;
}
Пожалуйста, отформатируйте свой код последовательно, это важно для восприятия структуры. Как и выше, это едва читаемо. –
В вашем коде не существует C++ - это вопрос C, да? – Cameron
Что/где «myArray1»? – chux