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

Файл целых положительных чисел. Сначала располагаются числа, которые делятся на 3 в порядке возрастания, потом - C++

Восстановить пароль Регистрация
 
Tertyshnyj
 Аватар для Tertyshnyj
3 / 3 / 0
Регистрация: 09.12.2014
Сообщений: 56
29.06.2015, 10:57     Файл целых положительных чисел. Сначала располагаются числа, которые делятся на 3 в порядке возрастания, потом #1
Файл целых положительных чисел. Сначала располагаются числа, которые делятся на 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
#include "stdafx.h"
#include "iostream"
#include "fstream"
#include "vector"
#include "algorithm"
 
using namespace std;
 
//предикат для сортировки
bool p_sort(int a, int b)
{
    if (a % 3 == 0) { if (b % 3 == 0 && b < a) return false; }
    else if (b % 3 == 0) return false;
    return true;
}
 
bool p_search(int a)
{
    return a % 2 == 0;
}
 
int main()
{
    setlocale(LC_ALL, "Russian");
    vector<int> list;           //контейнер для хранения чисел
    vector<int>::iterator it;   //итератор для обхода контейнера
    vector<int> list2;          //контейнер для четных чисел
    vector<int>::iterator it2;  //итератор для обхода контейнера четных чисел
    //ввод числе из файла
    ifstream file;
    file.open("input.txt");
    while (!file.eof())
    {
        int k;
        file >> k;
        list.push_back(k);
    }
    file.close();
    //вывод чисел на экран
    cout << "Числа из файла input.txt" << endl;
    for (it = list.begin(); it != list.end(); it++)
        cout << *it << " ";
    cout << endl;
    //сортировка
    sort(list.begin(), list.end(), p_sort);
    //вывод чисел на экран
    cout << "Числа после соритровки" << endl;
    for (it = list.begin(); it != list.end(); it++)
        cout << *it << " ";
    cout << endl;
    //поиск четных числе, и пермещение их в другой контейнер
    it2 = list.begin();
    while (true)
    {
        it2 = find_if(it2, list.end(), p_search);
        if (it2 != list.end())
        {
            it = it2;
            list2.push_back(*it);
            list.erase(it);
            it2 = it;
        }
        else break;
    }
    //вывод чисел на экран
    cout << "Числа после соритровки" << endl;
    for (it = list.begin(); it != list.end(); it++)
        cout << *it << " ";
    cout << endl;
    //
    system("pause");
}
не работает не пойму что не так??
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.06.2015, 10:57     Файл целых положительных чисел. Сначала располагаются числа, которые делятся на 3 в порядке возрастания, потом
Посмотрите здесь:

C++ Вывести на экран элементы массива целых чисел в порядке возрастания их числа делителей
C++ Дано натуральное число n. Получить в порядке возрастания n первых натуральных чисел, которые не делятся ни на какие простые числа, кроме 2, 3 и 5
дано натуральное число n. получить в порядке возрастания n первых натуральных чисел, которые не делятся ни на какие простые числа кроме 2, 3 и 5 C++
Создать файл целых чисел, содержащий номера всех локальных максимумов исходного файла в порядке возрастания C++
Дана последовательность целых положительных чисел. Найти произведение только тех чисел, которые больше заданного числа М C++
Дано натуральное n. Получить в порядке возрастания n первых натуральных чисел, которые не делятся ни на какие простые числа, кроме 2, 3 и 5 C++
C++ Получить в порядке возрастания N первых натуральных чисел, которые не делятся ни на какие простые числа, кроме 2, 3 и 5
C++ Переписать файл целых чисел так, чтобы сначала шли положительные, а потом - отрицательные

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Геомеханик
 Аватар для Геомеханик
517 / 324 / 253
Регистрация: 26.06.2015
Сообщений: 738
29.06.2015, 16:46     Файл целых положительных чисел. Сначала располагаются числа, которые делятся на 3 в порядке возрастания, потом #2
C++
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <iostream>
#include <algorithm>
#include <iterator>
 
bool desc(const int& a, const int& b){return (a > b);}
bool pred(const int& a){ return ((a % 3) == 0); }
bool even(const int& n){return ((n % 2) == 0);}
 
int main(void){
    int A[] = { 19, 9, 1, 7, 11, 3, 2, 21, 4, 6, 8, 12 };
    int N   = sizeof(A)/sizeof(A[0]);
 
    int* mid = std::partition(A, A + N, pred); 
    std::sort(A, mid);
    std::sort(mid, A + N, desc);
 
    int* end = std::remove_if(A, A + N, even);
    std::copy(A, end, std::ostream_iterator<int>(std::cout, " "));
    return 0;
}
Результат работы кода


C++11/14
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
#include <iostream>
#include <algorithm>
#include <iterator>
 
 
int main(void){
    int A[] = { 19, 9, 1, 7, 11, 3, 2, 21, 4, 6, 8, 12 };
    int N   = sizeof(A)/sizeof(A[0]);
 
    int* mid = std::partition(A, A + N, [](const int& n) { 
        return ((n % 3) == 0); }
    ); 
    std::sort(A, mid);
    
    std::sort(mid, A + N, [] (const int& a, const int& b) {
        return (a > b);
    });
 
    int* end = std::remove_if(A, A + N, [](const int& n) {
        return ((n % 2) == 0);
    } );
    
    std::copy(A, end, std::ostream_iterator<int>(std::cout, " "));
    return 0;
}
Пример работы кода
Yandex
Объявления
29.06.2015, 16:46     Файл целых положительных чисел. Сначала располагаются числа, которые делятся на 3 в порядке возрастания, потом
Ответ Создать тему
Опции темы

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