Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/34: Рейтинг темы: голосов - 34, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 04.04.2017
Сообщений: 23

Записать в файл числа из другого файла без повторений

22.05.2019, 11:13. Показов 6652. Ответов 9

Студворк — интернет-сервис помощи студентам
Вот такой получился код. Вносим в файл f числа, заполняем ими массив и выводим их на экран. Выводит верно.
Но дальше полная лажа. Помогите
Не получается вывести в другой файл числа без повторений. В новый файл записываются те же самые числа, да еще и все повторяются по несколько раз.
Я создавала массив для хранения нового набора чисел, но не думаю, что сделала это правильно.
+ Не знаю как реализовать позже вывод нового файла на экран.

Вот мои наработки:

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
#include <iostream>
#include <fstream>
#include <math.h>
#include <string>
using namespace std;
 
int main()
{
    setlocale(LC_CTYPE, "Russian");
    int i = 0, k = 0;
    ofstream outfile; // запись в файл
    outfile.open("f.txt");
    outfile << 1 << " " << 2 << " " << 3 << " " << 2 << " " << 5 << " " << 5 << " " << 2 << " " << 4 << endl;
    int number1[10], number2[10];
    int num; //просмотр содержимого
    ifstream in("f.txt");
    if (in.is_open())
    {
        while (in >> num)
        {
            number1[i] = num;
            cout << number1[i] << " ";
            i++;
        }
        cout << endl;
        for (i = 0; i < 10; i++)
        {
            for (k = 0; k < 10; k++)
            {
                if (number1[i] != number2[k])
                {
                    number2[k] = number1[i];
                }
            }
        }
    }
    outfile.open("g.txt");
    for (k = 0; k < 10; k++)
    {
        outfile << number2[k] << " " << endl;
    }
    system("pause");
}
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
22.05.2019, 11:13
Ответы с готовыми решениями:

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

Прочитать из первого файла и записать во второй файл числа, делящиеся без остатка на 3
Добрый день. помогите, пожалуйста найти ошибку. Я нашла подобное задание и переделала. Нужно создать файл с произвольным именем....

Записать в файле g все числа файлов c и d без повторений и в порядке возрастания
Помогите написать, очень прошу, и очень срочно нужно...с меня огромное спасибо!!! Пусть файлы c и d с компонентами, являющимися целыми...

9
6772 / 4565 / 1844
Регистрация: 07.05.2019
Сообщений: 13,726
22.05.2019, 11:19
Цитата Сообщение от bitochek_yusha Посмотреть сообщение
Я создавала массив для хранения нового набора чисел, но не думаю, что сделала это правильно.
+ Не знаю как реализовать позже вывод нового файла на экран.
Если порядок чисел в втором файле неважен, то здесь проще всего воспользоваться std::set
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <set>
..............
int number1[10], 
std::set<int> number2;
....................
 
        while (in >> num)
        {
            number1[i] = num;
 number2.emplace(num)
            cout << number1[i] << " ";
            i++;
        }
.................................
 
 
    outfile.open("g.txt");
    for (int n: number2)
    {
        outfile << n << " " << endl;
    }
0
Модератор
Эксперт С++
 Аватар для zss
13769 / 10962 / 6491
Регистрация: 18.12.2011
Сообщений: 29,239
22.05.2019, 11:21
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
        int j=0;
        for (i = 0; i < 10; i++)
        {
            for (k = 0; k < j; k++)
                 if (number1[i] == number2[k] )
                    break;
            if(k==j)
                 number2[j++] = number1[i];
            }
        }
        outfile.open("g.txt");
        if(outfile)
           for (k = 0; k < j; k++)
              outfile << number2[k] << " " << endl;
0
0 / 0 / 0
Регистрация: 04.04.2017
Сообщений: 23
22.05.2019, 11:30  [ТС]
Код по-прежнему не работает. Файл заполняется все так же.
0
6772 / 4565 / 1844
Регистрация: 07.05.2019
Сообщений: 13,726
22.05.2019, 11:38
Цитата Сообщение от bitochek_yusha Посмотреть сообщение
Код по-прежнему не работает. Файл заполняется все так же.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
size_t k = 0;
for (size_t i = 0; i < 10; ++i)
{
    bool not_exists = true;
    for (size_t j = 0; i < k; ++j)
        if (number1[i] == number2[j])
        {
            not_exists = false;
            break;
        }
    if (not_exists)
        number2[k++] = number1[i];
}
Добавлено через 57 секунд
Хотя, то же самое, что у zss,
0
0 / 0 / 0
Регистрация: 04.04.2017
Сообщений: 23
22.05.2019, 11:40  [ТС]
Как оказалось, файл g вообще не заполняется. И не создается. Проверила на этом коде:
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
#include <iostream>
#include <fstream>
#include <math.h>
#include <set>
using namespace std;
 
int main()
{
    setlocale(LC_CTYPE, "Russian");
    int i = 0, k = 0, j = 0;
    ofstream outfile; // запись в файл
    outfile.open("f.txt");
    outfile << 1 << " " << 2 << " " << 3 << " " << 2 << " " << 5 << " " << 5 << " " << 2 << " " << 4 << endl;
    int number1[10];
    std::set<int> number2;
    int num; //просмотр содержимого
    ifstream in("f.txt");
    if (in.is_open())
    {
        while (in >> num)
        {
            number1[i] = num;
            number2.emplace(num);
            cout << number1[i] << " ";
            i++;
        }
        cout << endl;
    }
    outfile.open("g.txt");
    for (int n : number2)
    {
        outfile << n << " " << endl;
    }
    system("pause");
}
0
698 / 140 / 57
Регистрация: 20.08.2017
Сообщений: 255
22.05.2019, 11:45
Лучший ответ Сообщение было отмечено bitochek_yusha как решение

Решение

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
#include <iostream>
#include <fstream>
#include <set>
 
int main()
{
    /* Открываем файл для записи. Если файла не существует, он будет создан. */
    std::fstream fileWithNumbers("input.txt", std::fstream::out);
    if (!fileWithNumbers.is_open())
        return EXIT_FAILURE;
 
    /* Записываем в файл строку с числами. */
    fileWithNumbers << "1 2 3 1 7 4 9 2 3 4 9" << std::endl;
 
    /* Создаем множество (set) целочисленных значений (int). */
    std::set<int> uniqueNumbers;
 
    /* Переоткрываем файл для чтения. */
    fileWithNumbers.close();
    fileWithNumbers.open("input.txt", std::fstream::in);
 
    /* Считываем поочереди каждое число из файла и заносим его во множество. */
    int number;
    while (fileWithNumbers >> number)
        uniqueNumbers.insert(number);
 
    /* Закрываем файл. Он нам больше не нужен. */
    fileWithNumbers.close();
 
    /* Открываем файл, в который будем записывать уникальные числа. */
    std::ofstream fileWithUniqueNumbers("output.txt");
    if (!fileWithUniqueNumbers.is_open())
        return EXIT_FAILURE;
 
    /* Проходим по всем числам во множестве и записываем их в файл. */
    for (auto i : uniqueNumbers)
        fileWithUniqueNumbers << i << ' ';
 
    /* Закрываем файл с уникальными числами. */
    fileWithUniqueNumbers.close();
}
2
6772 / 4565 / 1844
Регистрация: 07.05.2019
Сообщений: 13,726
22.05.2019, 11:51
Цитата Сообщение от bitochek_yusha Посмотреть сообщение
Как оказалось, файл g вообще не заполняется. И не создается. Проверила на этом коде:
Потому что ты outfile два раза открываешь
outfile.open("f.txt");
outfile.open("g.txt");
Сделай ещё один ofstream outfile2; outfile2.open("g.txt"); ... outfile2 << n << " " << endl;
0
698 / 140 / 57
Регистрация: 20.08.2017
Сообщений: 255
22.05.2019, 11:55
Цитата Сообщение от oleg-m1973 Посмотреть сообщение
Сделай ещё один ofstream outfile2; outfile2.open("g.txt"); ... outfile2 << n << " " << endl;
Или можно просто закрывать файл перед тем как открывать новый:

C++
1
2
outfile.close();
outfile.open("g.txt");
1
0 / 0 / 0
Регистрация: 04.04.2017
Сообщений: 23
22.05.2019, 11:56  [ТС]
да, именно в этом моя ошибка. не до конца изучила работу с файлами!
Большое спасибо всем. Разобралась.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
22.05.2019, 11:56
Помогаю со студенческими работами здесь

Из текстового файла прочитать четные числа и записать их в другой файл без использования массива (код С++)
Код есть только перед чтением файла нужно его создать, внести 15 чисел и закрыть, через ofstream. #include &lt;iostream&gt; #include...

Записать в файл f целые числа, потом из файла f записать в файл g нечетные числа
Как правильно написать программу? * Робота с файлами. Нужно записать в файл f целые числа, потом из файла f записать в файл g числа...

В исходный файл переписать все отрицательные числа без повторений
Задан файл целых чисел. В исходный файл переписать все отрицательные числа без повторений, дописать количество повторений чисел. Заранее...

Создать новый текстовый файл, содержащий список ip без повторений из исходного файла
Дан текстовый файл со статистикой посещения сайта за неделю. Имеется 10 строк(10 посещений). Каждая строчка содержит ip адрес, время и...

Дан файл, содержащий целые числа. Записать их в другие два файла, при этом в первый записать четные, а во второй нечетные числа.
Дан файл, содержащий целые числа. Записать их в другие два файла, при этом в первый записать четные, а во второй нечетные числа. Выручайте...


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

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru