Несоответствие типов при обращении к элементам матрицы - C (СИ)

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

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

Программа правильно работала с типом Int, но в лабе нужно дробные числа использовать в матрицах переделал прогу под float и теперь выдает ошибку invalid types 'float[int]' for array subscript код:
#include "stdio.h"
#include "stdlib.h"
#include "locale.h"

int main(void)
{
    float *A, *B, *C, N,M,N1,M1;
    int  i, j, k;
    setlocale(0, "RUS");
    N = 10;
    /*int **A = (int**)malloc(N * sizeof(int*));
    int **B = (int**)malloc(N * sizeof(int*));
    int **C = (int**)malloc(N * sizeof(int*));
    for (i = 0; i < N; i++)
    {
        A[i] = (int*)malloc(N * sizeof(int));
        B[i] = (int*)malloc(N * sizeof(int));
        C[i] = (int*)malloc(N * sizeof(int));
    }*/
    printf("Введите разсерность матрицы A(число строк и столбцов через пробел): ");
    scanf("%f %f", &N, &M);
    printf("Введите количество строк второй матрицы: ");
    scanf("%f %f", &N1, &M1);
    
    if (M != N1)
        printf("Эти матрицы невозможно перемножить");
    else
    {

         if((A=(float*)malloc(N*M*sizeof(float)))==0)
    {
      printf("Ошибка распределения памяти.\n");
      return 1;
    }
  if((B=(float*)malloc(M*M1*sizeof(float)))==0)
    {
      free((void*)A);
      printf("Ошибка распределения памяти.\n");
      return 1;
    }
  if((C=(float*)malloc(N*M*sizeof(float)))==0)
    {
      free((void*)A);
      free((void*)B);
      printf("Ошибка распределения памяти.\n");
      return 1;
    }
          printf("Заполните матрицу A:\n");
    for (i = 0; i < N; i++)
        for (j = 0; j < M; j++)
        {
            scanf("%f", &A[i][j]);
        }
        
        printf("Заполните матрицу B:\n");
        for (i = 0; i < N1; i++)
            for (j = 0; j < M1; j++)
            {
                scanf ("%f", &B[i][j]);
            }
 
        for (i = 0; i < N; i++)
           for (j = 0; j < M1; j++)
           {
              C[i][j] = 0;
                 for (k = 0; k < M; k++)
                    C[i][j] += A[i][k] * B[k][j];
           }
 
        printf("\nВид матрицы А\n");
        for (i = 0; i < N; i++)
        {
            for (j = 0; j < M; j++)
                printf("%f ", A[i][j]);
        }
        printf("\n");
        printf("----");
        printf("\n");
 
        printf("\nМатрица B\n");
        for (i = 0; i < N1; i++)
        {
            for (j = 0; j < M1; j++)
                printf("%f ", B[i][j]);
        }
            printf("\n");
            printf("----");
            printf("\n");
        printf("\nПри умножении получаем матрицу порядка %fx%f\n",N,M1);
        for (i = 0; i < N; i++)
        {
            for (j = 0; j < M1; j++)
                printf("%f ", C[i][j]);
            printf("\n");
        }
        FILE *s;
        s = fopen ("output.txt", "wt");
        if (s)
        {
            for (i = 0; i < N; i++)
            {
                for (j = 0; j < M1; j++)
                    fprintf(s,"%f ", C[i][j]);
                fprintf(s,"\n");
            }
        }
        fclose(s);
        printf("\nЗначения матрицы сохранены \n");
        return 0;
    }
}

Решение задачи: «Несоответствие типов при обращении к элементам матрицы»

textual
Листинг программы
float *A, *B, *C, N,M,N1,M1;

Объяснение кода листинга программы

  1. Объявляются указатели на матрицы A, B, C, N, M, N1, M1.
  2. Задаются значения переменных N, M, N1, M1.
  3. Создаются матрицы A, B, C размером N x M.
  4. Вычисляются значения матрицы C по формуле C = A * B.
  5. Выводится результат на экран.

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

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