Ввод/вывод двумерного массива с использованием указателей и выделения памяти - C (СИ)
Формулировка задачи:
Доброго времени суток. Такая проблема. Нужно написать программу с использованием функций для ввода/вывода двумерного массива с использованием указателей и выделения памяти(массив должен состоять из чисел с плавающей точкой).
Выводит только нули. Помогите пожалуйста найти ошибку.
#include <stdio.h> #include <conio.h> void vvod(int n, double **a) { int i,j; for(i=0;i<n;i++) for(j=0;j<n;j++) { printf("a[%d][%d]= ", i,j); scanf("%f", &a[i][j]); } } void vivod(int n, double **a) { int i,j; for(i=0;i<n;i++) { printf("\n"); for(j=0;j<n;j++) printf("%.2f \t ",a[i][j]); } } void main() { int i,j,n; double **A; clrscr(); printf("vvedite n \n"); scanf("%d",&n); A=new double *[n]; for(i=0; i<n;i++) { A[i]=new double[n]; } vvod(n,A); vivod(n,A); for(i=0;i<n;i++) delete [] A[i]; delete [] A; getch(); }
Решение задачи: «Ввод/вывод двумерного массива с использованием указателей и выделения памяти»
textual
Листинг программы
/*Кто в C использует new и delete мил человек!!!*/ #include <stdio.h> #include <stdlib.h> void vvod(int n, double **a) { int i,j; for(i=0;i<n;i++) { for(j=0;j<n;j++) { printf("a[%d][%d]= ", i,j); scanf("%lf", &a[i][j]); } } } void vivod(int n, double **a) { int i,j; for(i=0;i<n;i++) { printf("\n"); for(j=0;j<n;j++) printf("%.2f \t ",a[i][j]); } } int main() { double **A; int i,j,n; printf("vvedite n \n"); scanf("%d",&n); A = (double**) malloc(n * sizeof(double*)); //new и delete в C не используются !!! for(i = 0; i < n; i++) A[i] = (double*) malloc(n * sizeof(double)); vvod(n,A); vivod(n,A); for(i=0;i<n;i++) free(A[i]); free(A); return 0; }
Объяснение кода листинга программы
- Ввод количества строк n
- Выделение памяти под указатель на double с помощью malloc
- В цикле для каждой строки выделение памяти под double с помощью malloc
- Вывод сообщения и ввод double с помощью scanf
- Вывод значения double с помощью printf
- Освобождение памяти выделенной под double с помощью free
- Освобождение памяти выделенной под указатель на double с помощью free
- Возврат значения 0, что означает успешный конец работы программы
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д