Несоответствие типов при обращении к элементам матрицы - 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;
Объяснение кода листинга программы
- Объявляются указатели на матрицы A, B, C, N, M, N1, M1.
- Задаются значения переменных N, M, N1, M1.
- Создаются матрицы A, B, C размером N x M.
- Вычисляются значения матрицы C по формуле C = A * B.
- Выводится результат на экран.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д