Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
0 / 0 / 0
Регистрация: 23.02.2020
Сообщений: 1
1

Сортировка массива из текстового файла по возрастанию

23.02.2020, 21:24. Просмотров 287. Ответов 1
Метки нет (Все метки)

Информация о наборе прямоугольных параллелепипедов записывается в текстовом файле figuri.in, каждая строка соответствует одному параллелепипеду. Строка в файле содержит следующие данные, разделенные пробелом: CodPar (код параллелепипеда - натуральное число из 5 цифр); 3 измерения: а, b, c; Цвет (возможные значения: красный, желтый, зеленый, синий).
Написать программу, которая будет копировать в файл атрибуты (дополненные в конце полем объема (a * b * c)), зеленого цвета в порядке возрастания их объемов. Я уже 3 часа никак не могу решить эту проблему, помогите пожалуйста.
Вот что я сделал(желательно чтобы вы продолжили мою программу, а не использовали непонятные пока что мне библиотеки)

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
#include <fstream>
#include <cstring>
using namespace std;
 
struct Paralelipipede
{
    int CodPar, a, b, c, Volum;
    char Color[1];
}fig[6];
 
int main()
{
    ifstream f("figuri.in");
    ofstream g("figuri.out");
 
    int pozmin, min = 0, aux;
 
    for (int i = 0; i < 6; i++)
    {
        f >> fig[i].CodPar
        >> fig[i].a
        >> fig[i].b
        >> fig[i].c
        >> fig[i].Color;
        fig[i].Volum = fig[i].a * fig[i].b * fig[i].c;
 
        if (!strcmp(fig[i].Color, "v"))
        {
            if (min == 0 || min > fig[i].Volum)
            {
                min = fig[i].Volum;
                pozmin = i;
            }
        }
 
    }
 
 
    for (int i = 0; i < 6; i++)
    {
        if(!strcmp(fig[i].Color, "g"))
        {
            if (fig[i].Volum <= min)
            {
                aux = fig[i].CodPar;
                fig[i].CodPar = fig[pozmin].CodPar;
                fig[pozmin].CodPar = aux;
 
                aux = fig[i].a;
                fig[i].a = fig[pozmin].a;
                fig[pozmin].a = aux;
 
                aux = fig[i].b;
                fig[i].b = fig[pozmin].b;
                fig[pozmin].b = aux;
 
                aux = fig[i].c;
                fig[i].c = fig[pozmin].c;
                fig[pozmin].c = aux;
 
                min = fig[i].Volum;
                pozmin = i;
 
                aux = fig[i].Volum;
                fig[i].Volum = fig[pozmin].Volum;
                fig[pozmin].Volum = aux;            
 
                g << fig[i].CodPar << " "
                << fig[i].a << " "
                << fig[i].b << " "
                << fig[i].c << " "
                << fig[i].Color << " "
                << fig[i].Volum
                << endl;
            }
        }
    }
 
    return 0;
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
23.02.2020, 21:24
Ответы с готовыми решениями:

Сортировка массива из текстового файла по возрастанию
Сортировка массива из текстового файла по возрастанию Здравствуйте!Подскажите пожалуйста.У меня...

Сортировка слов текстового файла путём слияния данных из файла и заданного внутреннего массива
Здравствуйте. Имеется задание, которое я ни в коем случае не прошу за меня сделать. Мне...

Считывание из текстового файла выборочных данных, сортировка данных по возрастанию и последующая запись в другой файл
Дан файл: 0.3000000E+01 0.1000000E+03 501 1 1 ...

Сортировка массива пузырьком, введенного с текстового файла
Здравствуйте, прошу помощи. Весь день бью курсовую - застрял на таком этапе. Сделал ввод...

1
5592 / 3803 / 2225
Регистрация: 18.12.2017
Сообщений: 11,983
24.02.2020, 06:26 2
Cronii, пусть например в файле такие записи:
78687 2 3 4 Red
28681 2 4 5 Green
10633 2 4 50 Green
10637 2 4 50 Yellow
28312 1 3 4 Green

проверьте такой вариант:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
#include <iostream>
#include <algorithm>
#include <fstream>
#include <vector> 
using namespace std;
 
struct Cube
{
    int CodPar;
    double a;
    double b;
    double c;    
    string color;
    double V;
};
 
int main()
{    
    ifstream in("figuri.txt");
    ofstream out("figuri_output.txt");
    
    if (in.is_open())
    {
        vector<Cube> data;    
        
        Cube temp;
        
        while (in >> temp.CodPar >> temp.a >> temp.b >> temp.c >> temp.color)
        {        
            temp.V=temp.a*temp.b*temp.c;
            if (temp.color=="Green") data.push_back(temp);        
        }  
 
        in.close();
    }
    else cout << "Can't open input file\n";          
    
    sort(data.begin(), data.end(), [](Cube const& a, Cube const& b) {return a.V < b.V; });
    
    if(out.is_open())
    {
        for (auto i : data)
        {
        out << i.CodPar << " " << i.a << " " << i.b << " " << i.c << " " << i.color << " " << i.V << "\n";
        }
 
        out.close();
     }
     else cout<< "Can't open output file\n";  
    
system("pause");
return 0;
}
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
24.02.2020, 06:26

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Сортировка массива: сначала положительные по возрастанию, потом отрицательные по возрастанию
Пользователь вводит массив чисел,нужно отсортировать его методом выбора,что бы сначала шли...

Прочитать из текстового файла слова, отсортировать буквы по возрастанию
Ребят не могу понять в чем ошибка..... Суть задачи: Нужно прочитать из текстового файла слова,...

Занести в текстовый файл h из текстового файла t целые числа, упорядоченные по возрастанию
В текстовом файле t записаны целые числа, упорядоченные по убыванию. Занести в текстовый файл h из...

Занести в бинарный файл h из текстового файла t целые числа, упорядоченные по возрастанию
Не получается..(((киньте идеи.. В текстовом файле t записаны целые числа, упорядоченные по...

Сортировка текстового файла
Здравствуйте! Есть текстовый файл такого вида: &lt;Глава Первая&gt; орор валовыло валорлвоы &lt;Конец...

Сортировка текстового файла
Необходимо вычислить асимптотическую сложность программы и оптимизировать код. Помогите,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.