Переставить строки матрицы по убыванию элементов первого столбца - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Здравствуйте, никак не могу сделать работу, подскажите что делать или исправьте пожалуйста: Дано два файла: первый исходный, второй пустой, в который нужно записать результат
-10,50 1,50 -5,45 20,50
-2,14 1,01 4,50 5,25
23,13 -25,60 -13,70 6,25
-1,50 10,50 -8,5 6,30
2,30 4,30 52,20 -19,30
// 11_2.cpp: определяет точку входа для консольного приложения.
//
 
#include "stdafx.h"
#include <iostream>
#include <conio.h>
#include <stdlib.h>
#include <math.h>
#include <locale>
extern const int n=5, m=4;
using namespace std;
 
float print_mas(float massive[n][m])
{
    FILE *f2;
    f2=fopen("Y2.dat","w");
    int i,j;
    for(i=0;i<n;i++)
    {
        for(j=0;j<m;j++)
        {
        printf(" %7.2f",massive[i][j]);
        }
    printf("\n");
    }
    fclose(f2);
return 0;
}
float perestanovka(float massive[n][m])
{
    setlocale(LC_ALL,"Russian");
    int i,j;
    float tmp;
    cout<<"Перестановка матрицы по убыванию элементов первого столбца"<<endl;
    for(i=0;i<n;i++)
     {
      for(j=m;j<0;j--)
       {
        if (massive[j-1][0]>massive[j][0])
         {
         for (int k=0;k<n;k++)
          {
              tmp=massive[j][k-1];
              massive[j][k-1]=massive[j][k];
           massive[j][k]=tmp;
          }
         }
       }
     }
   print_mas(massive);
    return 0;
}
 
void main()
{
    FILE *f1;
    int i,j;
    float mas[n][m];
    setlocale(LC_ALL,"Russian");
    cout<<"В файле input.dat находится матрица вещетвенных чисел (отрицательные и положительные)."<<endl;
    cout<<"Массив в файле"<<endl;
    system("cls");
    f1=fopen("input.dat","r");
    for (i=0;i<n;i++)
    {
        for(j=0;j<m;j++)
        {
          fscanf(f1,"%f",&mas[i][j]);
        }
        printf("\n");
    }
  print_mas(mas);
  perestanovka(mas);
_getch();
}

Решение задачи: «Переставить строки матрицы по убыванию элементов первого столбца»

textual
Листинг программы
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <string.h>
#include <memory.h>
 
#define N 5
#define M 8
 
int main(int argc, char* argv[])
{
    FILE* fp[2] = { NULL };
    const char* filename[2] = { "input.txt", "output.txt" };
    if ((fp[0] = fopen(filename[0],"r")) == NULL)
    {
        printf("Unable to open file %s for reading\n",filename[0]);
        return -1;
    }
 
    if ((fp[1] = fopen(filename[1],"w")) == NULL)
    {
        printf("Unable to open file %s for reading\n",filename[1]);
        return -1;
    }
 
    int** A = new int*[N];
    memset((void*)A, 0x00, 4 * N);
 
    char* line = new char[256];
    for (int t1 = 0; fgets(line, 256, fp[0]) != NULL; t1++)
    {
        A[t1] = new int[M]; int t2 = 0;
        memset((void*)A[t1], 0x00, sizeof(int) * M);
        for (char* s = strtok(line,","); s != NULL; s = strtok(NULL,",")) 
            A[t1][t2++] = atoi(s);
    }
 
    for (int z1 = 0; z1 < N; z1++)
    {
        for (int z2 = 0; z2 < M; z2++)
        {
            fprintf(fp[1],"%d ",A[z1][z2]);
            printf("%d ",A[z1][z2]);
        }
 
        fprintf(fp[1],"\n");
        printf("\n");
    }
 
    _getch();
 
    return 0;
}

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

В этом коде программа считывает из файла input.txt матрицу строк, разделенных запятыми, и записывает ее в файл output.txt в порядке убывания элементов первого столбца. Код выполняет следующие действия:

  1. Подключает необходимые библиотеки.
  2. Определяет размерность матрицы N и M.
  3. Открывает файлы для чтения и записи.
  4. Выделяет память под матрицу строк A и инициализирует ее нулями.
  5. Считывает строки матрицы из файла input.txt и сохраняет их в переменной line.
  6. Разделяет каждую строку на элементы, используя запятую как разделитель, и сохраняет их в матрице A.
  7. Записывает элементы матрицы в файл output.txt в порядке убывания элементов первого столбца.
  8. Выводит элементы матрицы на экран.
  9. Ждет нажатия клавиши для завершения работы программы.
  10. Закрывает файлы.
  11. Освобождает выделенную память.
  12. Возвращает 0, указывая, что программа успешно завершила работу.

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


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

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

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