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

Отсортировать файл с числами

07.04.2019, 11:03. Показов 2123. Ответов 21
Метки нет (Все метки)

Прочитать текстовый файл с числами, вывести его на консоль и записать эти же числа, но по возрастанию в другой файл, помогите, пожалуйста, у меня была целостная программа, но уже который раз ругается на stdafx.h и не могу с этим ничего сделать, может, конечно, и в коде ошибки, но должна работать, с подсказками преподавателя делал
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
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
#include "stdafx.h"
#include <iostream> 
#include <string> 
#include <cmath> 
#include "pch.h"
#include <vector> 
#include <fstream> 
#include <sstream> 
#include <list> 
#include <map> 
 
 
using namespace std;
 
struct point
{
    string x;
}
res[4500];
 
 
int main()
{
    ifstream f1("C:\\Users\text1.txt");
    ofstream f2("C:\\Users\text2.txt");
    int k, t, d, p = 0;
    cout << "f1 " << f1.is_open() << " f2 " << f2.is_open() << endl;
    if (!f1.is_open() || !f2.is_open()) return 0;
 
    vector<pair<string, int> > dict;
    int dictSize = 0;
 
    while (!f1.eof())
    {
        string a, b;
        getline(f1, a);
        cout << "a=" << a << endl;
 
        stringstream str1(a);
        string str;
        while (!str1.eof())
        {
            str1 >> str;
            cout << str << endl;
            pair<string, int> p1(str, 1);
 
            bool cont = false;
            for (int i = 0; i < dictSize; i++)
            {
                pair<string, int> p2 = dict.at(i);
                if (!p2.first.compare(p1.first))
                {
                    cont = true;
                    dict[i].second++;
                    break;
                }
            }
            if (!cont)
            {
                dict.push_back(p1);
                dictSize++;
            }
        }
 
 
    }
 
    cout << "DICT : \n";
    for (int i = 0; i < dictSize; i++)
    {
        pair<string, int> p2 = dict.at(i);
        cout << p2.second << " - " << p2.first << endl;
    }
 
    //Сортировка массива 
    for (int i = 0; i < p; i++)
    {
        for (int j = p - 1; j > i; j--)
        {
            if (res[j].x <= res[j - 1].x)
            {
                swap(res[j - 1].x, res[j].x);
            }
        }
    }
    cout << "sort ok " << endl;
    //Конец сортировки 
    f2 << "PROCESSED WORDS:" << endl << endl;
    k = 0;
    t = 0;
    d = 0;
    for (int i = 1; i < p; i++)
    {
        for (int j = 0; j < p - 1; j++)
        {
            if (res[j].x > res[j + 1].x)
            {
                swap(res[j + 1].x, res[j].x);
            }
        }
    }
    f2 << endl;
    f2 << "QUANTITY OF WORDS: " << d << endl; //Число обработанных слов 
    f1.close();
    f2.close();
    system("pause");
    return 0;
}
ЕСЛИ ВОЗМОЖНО НАМНОГО ПРОЩЕ СДЕЛАТЬ, ПОМОГИТЕ
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
07.04.2019, 11:03
Ответы с готовыми решениями:

Отсортировать массив со случайными числами по убыванию
отсортировать массив со случайными числами по убыванию и указать на последний элемент

Массив заполнен случайными числами. Отсортировать разности (1-2,3-4,..,19-20) по возрастанию
Массив заполнен с помощью генератора случайных чисел. Отсортировать разности (1-2,3-4,..,19-20) по...

Создать двухмерный массив, заполнить случайными числами от 0 до 30 и отсортировать
Суть: создать двухмерный массив, заполнить случайными числами от 0 до 30 и отсортировать массив....

Массив отсортировать по возрастанию,находящегося между 2 введенными числами
В заданном массиве из n элементов отсортировать по возрастанию его часть, находящуюся между двумя...

21
Модератор
Эксперт .NET
5732 / 4631 / 2918
Регистрация: 20.04.2015
Сообщений: 8,273
07.04.2019, 11:16 2
Цитата Сообщение от terminatyr Посмотреть сообщение
раз ругается на stdafx.h
Ну так удалите это гамно эту строку:
C++
1
#include "stdafx.h"
И эту
C++
1
#include "pch.h"
0
1714 / 605 / 187
Регистрация: 12.03.2016
Сообщений: 2,188
07.04.2019, 11:37 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
#include <iostream>
#include <fstream>
#include <vector>
#include <iterator>
#include <algorithm>
 
int main()
{
    std::ifstream fil("input.txt");
    if (!fil.is_open()) {
        std::cout << " No open file " << '\n';
        return 1;
    }
 
    std::vector <double> vec{ std::istream_iterator <double>(fil), std::istream_iterator <double>() };
    std::copy(cbegin(vec), cend(vec), std::ostream_iterator <double>(std::cout, "   "));
    std::sort(begin(vec), end(vec));
 
    std::ofstream ifl("output.txt");
    copy(begin(vec), end(vec), std::ostream_iterator<double>(ifl, "   "));
 
    fil.close();
    ifl.close();
}
0
0 / 0 / 0
Регистрация: 03.04.2019
Сообщений: 24
07.04.2019, 14:49  [ТС] 4
Ваш ответ слишком схож с теми, которые сидят на мыло.ру, и зачастую как и там, он не помогает
0
1714 / 605 / 187
Регистрация: 12.03.2016
Сообщений: 2,188
07.04.2019, 14:51 5
Чем не помогает? Файл какой?
0
0 / 0 / 0
Регистрация: 03.04.2019
Сообщений: 24
07.04.2019, 14:54  [ТС] 6
Ошибка C1010 непредвиденный конец файла во время поиска предкомпилированного заголовка. Возможно, вы забыли добавить директиву "#include "pch.h"" в источник.
0
10 / 7 / 3
Регистрация: 14.12.2018
Сообщений: 82
07.04.2019, 14:58 7
Все библиотеки или header-файлы, которые имеют форму записи "pch.h" удаляйте. Вроде как они работают только в VS Code.
0
4050 / 2298 / 959
Регистрация: 07.02.2019
Сообщений: 6,003
07.04.2019, 15:00 8
Цитата Сообщение от terminatyr Посмотреть сообщение
#include "pch.h
в самую первую строку файла
0
1714 / 605 / 187
Регистрация: 12.03.2016
Сообщений: 2,188
07.04.2019, 15:01 9
В какой среде работаешь? Судя по
Цитата Сообщение от terminatyr Посмотреть сообщение
Возможно, вы забыли добавить директиву "#include "pch.h"" в источник.
В VS 17
0
0 / 0 / 0
Регистрация: 03.04.2019
Сообщений: 24
07.04.2019, 15:07  [ТС] 10
Убирал pch.h из свойств, компилировалось, но с нулём консоль закончилась и не считал файлы, так же оба по 0

Добавлено через 37 секунд
И так пробовал, все тоже самое, что в предыдущем ответе
0
1714 / 605 / 187
Регистрация: 12.03.2016
Сообщений: 2,188
07.04.2019, 15:11 11
Выложи свой файл. И разберись с созданием проекта и его компиляцией в VS.
0
0 / 0 / 0
Регистрация: 03.04.2019
Сообщений: 24
07.04.2019, 15:28  [ТС] 12
Требуется из заполненного числами файла.txt, записать обработанные эти же числа по возрастанию во 2-ой текстовый файл
Есть наработки
i
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
nt main()
{
    ifstream f1("C:\\Users\text1.txt");
    ofstream f2("C:\\Users\text2.txt");
    int k, t, d, p = 0;
    cout << "f1 " << f1.is_open() << " f2 " << f2.is_open() << endl;
    if (!f1.is_open() || !f2.is_open()) return 0;
 
    vector<pair<string, int> > dict; // словарь
    int dictSize = 0;
 
    while (!f1.eof())
    {
        string a, b;
        getline(f1, a);
        cout << "a=" << a << endl;
 
        stringstream str1(a);
        string str;
        while (!str1.eof())
        {
            str1 >> str;
            cout << str << endl;
            pair<string, int> p1(str, 1);
 
            bool cont = false;
            for (int i = 0; i < dictSize; i++)
            {
                pair<string, int> p2 = dict.at(i);
                if (!p2.first.compare(p1.first)) 
                {
                    cont = true;
                    dict[i].second++;
                    break;
                }
            }
            if (!cont) 
            {
                dict.push_back(p1);
                dictSize++;
            }
        }
Но я не уверен, что есть смысл сюда и строковые величины использовать
0
1714 / 605 / 187
Регистрация: 12.03.2016
Сообщений: 2,188
07.04.2019, 15:31 13
Ну покой новые темы создаешь, раздел загаживаешь? Отвечай на вопросы которые задавали и до сути доберемся. Где файл?
0
0 / 0 / 0
Регистрация: 03.04.2019
Сообщений: 24
07.04.2019, 16:04  [ТС] 14
Файл в папке программы
0
1714 / 605 / 187
Регистрация: 12.03.2016
Сообщений: 2,188
07.04.2019, 16:08 15
terminatyr, что и как в нем записано? Вы можете его показать или нет?
0
0 / 0 / 0
Регистрация: 03.04.2019
Сообщений: 24
10.04.2019, 10:04  [ТС] 16
Вот
0
Миниатюры
Отсортировать файл с числами   Отсортировать файл с числами  
4050 / 2298 / 959
Регистрация: 07.02.2019
Сообщений: 6,003
10.04.2019, 10:21 17
terminatyr,
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <fstream>
#include <vector>
#include <iterator>
#include <algorithm>
 
int main() 
{
    std::ifstream is("text1.txt");
    if (!is) exit(-1);
 
    std::vector<int> v{ std::istream_iterator<int>{is}, {} };
    std::sort(v.begin(), v.end());
 
    std::ofstream os("text2.txt");
    std::copy(v.begin(), v.end(), std::ostream_iterator<int>{os, " "});
}
0
0 / 0 / 0
Регистрация: 03.04.2019
Сообщений: 24
10.04.2019, 10:24  [ТС] 18
Этот код отвечает за чтение файла и что еще? не знаю "iterator"
0
1714 / 605 / 187
Регистрация: 12.03.2016
Сообщений: 2,188
10.04.2019, 10:39 19
terminatyr, я тебе точно такую же прогу скидывал, только там, исходя из твоего задания, были файлы input.txt и output.txt.
0
4050 / 2298 / 959
Регистрация: 07.02.2019
Сообщений: 6,003
10.04.2019, 11:05 20
Цитата Сообщение от Manowar Посмотреть сообщение
terminatyr, я тебе точно такую же прогу скидывал
действительно, что-то я прощелкал...
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
10.04.2019, 11:05

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

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

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

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

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


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

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

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