Неправильный вывод данных в программе, которая определяет минимальный элемент на главной диагонали - C (СИ)
Формулировка задачи:
Еще одна бессонная ночь породила из моего недалекого разума еще одну программу
Вот листинг самой программы
программа должна находить максимальный элемент в строке и менять местами энтый элемент и элемент находящийся на главной диагонали. Но когда надо выводить таблицу с полученными значениями программа выводит таблицу которая была до исполнения алгоритма замены. Спасайте хлопцы, помогите изгнать из кода моего всех бесов
#include <stdio.h> #include <stdlib.h> #include <locale.h> int main() { void ini_array(int* arr,int n); void print_array(int* arr,int n); void zamena_array(int* arr, int n); setlocale(LC_CTYPE, "RUSSIAN"); { printf ("Программа определяет минимальный элемент на главной диагонали."); printf ("\nСтроку, содержащую этот элемент, меняет местами со столбцом,"); printf ("\nв котором число положительных элементов максимально."); } int n; printf("\nВведите размерность матрицы : "); scanf("%d",&n); int* pointer; pointer = (int *)malloc(n*n * sizeof(int)); ini_array(pointer,n); printf("\nИСХОДНАЯ МАТРИЦА\n"); print_array(pointer,n); zamena_array(pointer,n); printf("\nОБРАБОТАННАЯ МАТРИЦА\n"); print_array(pointer,n); return 0; } void print_array(int* arr,int n)//Выводит массив { int i,j; for(i=0;i<n;i++) { for(j=0;j<n;j++) printf("%4d ",arr[i*n+j]); printf("\n"); printf("\n"); } } void zamena_array(int* arr, int n)//заменяет строку столбцом а столбец строкой { int i,j,m; int* arr_string=(int *)malloc(n* sizeof(int)); int maxx=0;//переменная для хранения индекса минимального элемента.Задаем ей индекс первого элемента матрицы. for(i=0;i<n;i++) { maxx=arr_string[i*n+0]; for (j=0;j<m;j++) if (arr_string[i*n+j]>maxx) { maxx=arr_string[i*n+j]; m=j; } if (maxx!=arr_string[i*n+i]) { arr_string[i*n+m]=arr_string[i*n+i]; arr_string[i*n+i]=maxx; } } } void ini_array(int* arr,int n)//инициализирует массив { int i,j; for(i=0;i<n;i++) for(j=0;j<n;j++){ arr[i*n+j]=rand()%20; } }
Решение задачи: «Неправильный вывод данных в программе, которая определяет минимальный элемент на главной диагонали»
textual
Листинг программы
#include <stdio.h> #include <stdlib.h> #include <string.h> void ini_array(int* arr,int n); void print_array(int* arr,int n); void zamena_array(int* arr, int n); int main() { int n; int* pointer; printf("\nВведите размерность матрицы : "); scanf("%d",&n); pointer = malloc(n*n * sizeof(int)); ini_array(pointer,n); printf("\nИСХОДНАЯ МАТРИЦА\n"); print_array(pointer,n); zamena_array(pointer,n); printf("\nОБРАБОТАННАЯ МАТРИЦА\n"); print_array(pointer,n); free(pointer); return 0; } void print_array(int* arr,int n)//Выводит массив { int i,j; for(i=0;i<n;i++) { for(j=0;j<n;j++) printf("%d ",arr[i*n+j]); printf("\n"); printf("\n"); } } void zamena_array(int* arr_string, int n)//заменяет строку столбцом а столбец строкой { int i,j,m; int maxx=0; int tmp; for(i=0;i<n;i++) { for (j=0;j<n;j++) if (arr_string[i*n+j]>maxx) { maxx=arr_string[i*n+j]; m=j; } if (maxx!=arr_string[i*n+i]) { tmp = arr_string[i*n+m]; arr_string[i*n+m]=arr_string[i*n+i]; arr_string[i*n+i]=tmp; } } } void ini_array(int* arr,int n)//инициализирует массив { int i,j; for(i=0;i<n;i++) for(j=0;j<n;j++){ arr[i*n+j]=rand()%20; } }
Объяснение кода листинга программы
- Включаются необходимые заголовочные файлы:
, , . - Определяются функции: ini_array, print_array, zamena_array.
- В функции main() считывается размерность матрицы с помощью scanf().
- Выделяется память под массив с помощью malloc().
- Вызывается функция ini_array для инициализации массива.
- Выводится исходная матрица с помощью функции print_array().
- Вызывается функция zamena_array для замены строки столбцом, а столбца - строкой.
- Выводится обработанная матрица с помощью функции print_array().
- Освобождается память с помощью функции free().
- Возвращается 0, что означает успешный конец работы программы.
- В функции print_array() происходит вывод массива на экран.
- В функции zamena_array() происходит замена строки столбцом, а столбца - строкой.
- В функции ini_array() происходит инициализация массива случайными значениями.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д