Форум программистов, компьютерный форум CyberForum.ru

Функции. Переписать числа из файла f в файл g, проверяя число на удовлетворение какого-либо условия - C++

Восстановить пароль Регистрация
 
DIEZEL-man
13 / 13 / 0
Регистрация: 17.02.2013
Сообщений: 54
31.05.2013, 17:32     Функции. Переписать числа из файла f в файл g, проверяя число на удовлетворение какого-либо условия #1
Необходимо переписать числа из файла f в файл g, проверяя число на удовлетворение какого-либо условия. Как осуществляется проверка условия? С массивами все понятно, а вот с файлами нет. Объясните пожалуйста.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
31.05.2013, 17:32     Функции. Переписать числа из файла f в файл g, проверяя число на удовлетворение какого-либо условия
Посмотрите здесь:

С помощью какого кода можно запустить как либо файл по локальной сети, и так-же на своём компе C++
Дан файл,компонентами его яв-ся числа.Число компонент делится на 2.Создать новый файл,куда будет записываться наименьшее из каждой пары чисел 1 файла C++
Записать в третий файл только те пары чисел, в которых число из первого файла меньше соответствующего числа из второго файла. C++
Переписать компоненты файла f в файл g так, чтобы в файле g числа шли в следующем порядке: C++
C++ определить можно ли заданное натуральное число представить в виде квадрата какого либо простого числа
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
DiffEreD
 Аватар для DiffEreD
1420 / 757 / 95
Регистрация: 21.06.2011
Сообщений: 1,740
Записей в блоге: 2
31.05.2013, 17:45     Функции. Переписать числа из файла f в файл g, проверяя число на удовлетворение какого-либо условия #2
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <iostream>
#include <algorithm>
#include <iterator>
#include <fstream>
 
int main()
{
    std::ifstream from("D:/g.txt");
    if (from.is_open())
    {
        std::ofstream to("D:/f.txt");
        std::copy_if(std::istream_iterator<int>(from), std::istream_iterator<int>(),
                std::ostream_iterator<int>(to, " "), [](const int val){return val > 10;});
    }
    else
        std::cerr<<"Unable to open file(s): "<<std::endl;
}
DIEZEL-man
13 / 13 / 0
Регистрация: 17.02.2013
Сообщений: 54
31.05.2013, 17:58  [ТС]     Функции. Переписать числа из файла f в файл g, проверяя число на удовлетворение какого-либо условия #3
yuron_477, Сори, никак не получается вставить свое условие в этот "шаблон". Не могли бы помочь полностью со всей задачей. Вот условие: Файл f заполнен числами(положительных столько же сколько отрицательных) нужно переписать числа из f в g в такой последовательности: два положит., два отриц., два полож., и т. д.
DiffEreD
 Аватар для DiffEreD
1420 / 757 / 95
Регистрация: 21.06.2011
Сообщений: 1,740
Записей в блоге: 2
31.05.2013, 18:30     Функции. Переписать числа из файла f в файл g, проверяя число на удовлетворение какого-либо условия #4
Считываеш все числа с первого файла в массив, сортируеш так как тебе надо и выводиш в другой файл.
DIEZEL-man
13 / 13 / 0
Регистрация: 17.02.2013
Сообщений: 54
31.05.2013, 18:32  [ТС]     Функции. Переписать числа из файла f в файл g, проверяя число на удовлетворение какого-либо условия #5
yuron_477, Массив отсортировать у меня получается, алгоритм есть, дело в том что при считывании файла не получается считать отрицательные числа в массив int. Для меня это и есть очень большая проблема.
DiffEreD
 Аватар для DiffEreD
1420 / 757 / 95
Регистрация: 21.06.2011
Сообщений: 1,740
Записей в блоге: 2
31.05.2013, 20:33     Функции. Переписать числа из файла f в файл g, проверяя число на удовлетворение какого-либо условия #6
Так решить можно (набор чисел не симметричен, это не принципиально):
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
#include <iostream>
#include <vector>
#include <algorithm>
#include <iterator>
#include <fstream>
 
int main()
{
    std::ifstream from("D:/f.txt");
    if (from.is_open())
    {
        std::ofstream to("D:/g.txt");
        std::vector<int> v{std::istream_iterator<int>(from), std::istream_iterator<int>()};
        auto divide = std::partition(v.begin(), v.end(), [](const int val) {return val > 0;});
        auto first = v.begin();
        auto last = std::prev(v.end(), 1);
        while (true)
        {
            for (size_t i = 0; i<2 && first != divide; ++i)
                to<<*first++<<" ";
            for (size_t i = 0; i<2 && last != divide; ++i)
                to<<*last--<<" ";
            if (first == last) break;
        }
    }
    else
        std::cerr<<"Unable to open file(s): "<<std::endl;
    
    return 0;
}
Входной файл:
10 -8 12 -9 -8 -3 0 1 7 -9 -7 2 6 -7 -9 -7 6
Вывод:
10 6 -8 -7 12 6 -9 -7 2 7 -9 -8 1 -7 -9 -3
Добавлено через 25 секунд
Синтаксис стандарта С++11.
Yandex
Объявления
31.05.2013, 20:33     Функции. Переписать числа из файла f в файл g, проверяя число на удовлетворение какого-либо условия
Ответ Создать тему
Опции темы

Текущее время: 21:50. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru