Неполный ввод динамического массива - C (СИ)
Формулировка задачи:
Написала программу, но тут же столкнулась с трудностью. При вводе массива появляется какой-то косяк и приходится вводить множество чисел из которых в массив идут лишь некоторые...
#include<stdio.h> #include<alloc.h> #include<conio.h> int main() {int m,n,i,j,c,d,k; int *p,*q; c=0;d=0; do{puts("vvedite razmeri matrici"); scanf("%d%d", &n,&m);} while(n<1 || m<1); p=(int*)calloc(n*m,sizeof(int)); q=(int*)calloc(n,sizeof(int)); fflush(stdin); puts("vvedite matricy posrochno"); for(i=0;i<n;i++)65 for(j=0;j<m;j++) scanf("%d%d", &p[i*n+j]); for(i=0;i<n;i++) {for(j=0;j<m;j++) {if(p[i*n+j]%2==0) c++; else d++; if(c>d) q[i]=2; else q[i]=1;} } c=0;d=0; for(k=0;k<n;k++) {if(q[k]==2) c++; else d++;} puts("pervaya matritsa"); for(i=0;i<n;i++) for(j=0;j<m;j++) printf(" %d", p[i*m+j]); puts("vtoraya matritsa"); for(k=0;k<n;k++) printf(" %d ",*(q+k),q+k); printf("\nchislo chetnih elementov %d,nechetnih %d ", c,d); return 0; }
Решение задачи: «Неполный ввод динамического массива»
textual
Листинг программы
#include <stdio.h> #include <stdlib.h> int main() { size_t n, m; int** matrix; size_t i, j; puts("Input matrix dimensions:"); scanf("%u %u", &n, &m); if((matrix = (int**) malloc(n * sizeof(int*))) == NULL) { fputs("Can't allocate memory\n", stderr); exit(1); } for(i = 0; i < n; ++i) if((matrix[i] = (int*) malloc(m * sizeof(int))) == NULL) { fputs("Can't allocate memory\n", stderr); exit(1); } for(i = 0; i < n; ++i) for(j = 0; j < m; ++j) { printf("[%02u][%02u] > ", i, j); scanf("%d", &matrix[i][j]); } puts("Let's print our matrix out:"); for(i = 0; i < n; ++i, putchar('\n')) for(j = 0; j < m; ++j) printf("%-6d", matrix[i][j]); for(i = 0; i < n; ++i) free(matrix[i]); free(matrix); exit(0); }
Объяснение кода листинга программы
В этом коде выполняются следующие действия:
- Объявляются переменные:
- size_t n, m; - для ввода размеров матрицы;
- int** matrix; - для работы с двумерным массивом;
- size_t i, j; - для работы с индексами матрицы.
- Выводится приглашение для ввода размеров матрицы.
- Считываются размеры матрицы.
- Выделяется память под матрицу и её строки.
- Выделяется память под элементы матрицы.
- Производится заполнение матрицы.
- Выводится приглашение для ввода элементов матрицы.
- Выводятся значения матрицы.
- Освобождается память, выделенная под матрицу и её строки.
- Выполняется выход из программы.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д