"Выражение должно иметь тип указателя на объект" - C (СИ)
Формулировка задачи:
Добрый вечер!
При написании кода возникло ряд проблем , как только не пытался исправить , но всё равно не получается.Надеюсь на вашу помощь и объяснения что именно не так в ней)Заранее спасибо))
выражение должно иметь тип указателя на объект 58
выражение должно иметь тип указателя на объект 38
выражение должно иметь тип указателя на объект 42
выражение должно иметь тип указателя на объект 51
выражение должно иметь тип указателя на объект 52
выражение должно иметь тип указателя на объект 52
выражение должно иметь тип указателя на объект 53
#define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include <locale.h> #include <Windows.h> #include <math.h> #include <malloc.h> #include <stdlib.h> int main() { setlocale(LC_ALL, "rus"); int *a; int i, j, n, m; int count1, count2, temp = 0; printf("Введите кол-во столбцов :\n"); scanf("%d", &n); printf("Введите кол-во строк :\n"); scanf("%d", &m); a = (int*)malloc(n*m * sizeof(int)); for (i = 0; i < n; i++) { for (j = 0; j < m; j++) { printf("a[%d][%d]=", i, j); scanf("%d", (a + i*m + j)); } } for (i = 0; i < n; i++) { for (j = 0; j < m; j++) { printf("%5d ", *(a + i*m + j)); } } for (i = 0; i < n; i++) { if (a[i][0]<0) { count1++; } if (a[n - 1][m < 0]) { count2++; } } if ((count1 = (n - 1)) && (count2 = (n - 1))) { for (i = 0; i < n; i++) { temp = a[i][1]; a[i][1] = a[n - 1][m]; a[n - 1][m] = temp; } for (i = 0; i < n; i++) for (j = 0; j < n; j++) { printf("%d", &a[i][j]); } } system("pause"); return 0; }
Решение задачи: «"Выражение должно иметь тип указателя на объект"»
textual
Листинг программы
typedef struct DynArray { int * data; int n, m; } DynArray; int * at(DynArray* a, int i, int j) { return a->data + i * a->m + j; } // .... *at(a, i, j) = 42;
Объяснение кода листинга программы
- В данном коде определен тип структуры
DynArray
, которая содержит указатель на массив, его размер и количество элементов. - В структуре
DynArray
указательdata
указывает на начало массива, а переменныеn
иm
хранят размер массива и количество элементов соответственно. - Функция
at
принимает указатель на структуруDynArray
, индексыi
иj
и возвращает указатель на элемент массива с учетом его размера и количества элементов. - Значение переменной
at(a, i, j)
присваивается значение 42.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д