Неправильный вывод данных в программе, которая определяет минимальный элемент на главной диагонали - 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;
 
}
 
}

Объяснение кода листинга программы

  1. Включаются необходимые заголовочные файлы: , , .
  2. Определяются функции: ini_array, print_array, zamena_array.
  3. В функции main() считывается размерность матрицы с помощью scanf().
  4. Выделяется память под массив с помощью malloc().
  5. Вызывается функция ini_array для инициализации массива.
  6. Выводится исходная матрица с помощью функции print_array().
  7. Вызывается функция zamena_array для замены строки столбцом, а столбца - строкой.
  8. Выводится обработанная матрица с помощью функции print_array().
  9. Освобождается память с помощью функции free().
  10. Возвращается 0, что означает успешный конец работы программы.
  11. В функции print_array() происходит вывод массива на экран.
  12. В функции zamena_array() происходит замена строки столбцом, а столбца - строкой.
  13. В функции ini_array() происходит инициализация массива случайными значениями.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

15   голосов , оценка 3.8 из 5
Похожие ответы