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

Пытаюсь реализовать сортировку слиянием (выскакивает ошибка) - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Поменять местами столбцы матрицы, содержащие наибольший и наименьший элементы http://www.cyberforum.ru/cpp-beginners/thread852166.html
. Дана матрица А. Поменять местами столбцы, содержащие наибольший и наименьший элементы.
C++ Не переименовывает файл void deleteFILE(char filename) { char gr; setlocale(LC_ALL,"Russian"); ifstream in("examen.txt",ios_base::binary); ofstream out("buf.txt",ios_base::binary); ... http://www.cyberforum.ru/cpp-beginners/thread852164.html
Учебник по массивам C++
Посоветуйте учебник по решению задач с массивами на с++
C++ friend и member функции
Народ, объясните пожалуйста как пишутся данные функции, принцип их написания, откуда что берется. И несколько примеров пожалуйста. Желательно с кодом для *.h
C++ Мнимая единица http://www.cyberforum.ru/cpp-beginners/thread852119.html
Как умножить на мнимую единицу, она же равна корень из (-1).
C++ Отличие динамического от статического объекта Вопрос, в универе проходим динамические объекты(классы, структуры). И я вот не пойму... В чем разница динамического от статического класса или структуры. Когда мы используем массив там понятно, если... подробнее

Показать сообщение отдельно
MrGluck
Модератор
Эксперт CЭксперт С++
7423 / 4538 / 673
Регистрация: 29.11.2010
Сообщений: 12,319
30.04.2013, 01:29
Тот же алгоритм, но для любого кол-ва чисел и с проверкой на открытие файла
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
#include <iostream>
#include <fstream>
#include <vector>
 
void merge(const std::vector<int> &a, const std::vector<int> &b, std::vector<int> &c)
{
    std::vector<int>::const_iterator it1 = a.begin(), it2 = b.begin();
    while (it1 != a.end() && it2 != b.end())
    {
        if(it1 == a.end())
        {
            c.push_back(*it2++);
            continue;
        }
        if(it2 == b.end())
        {
            c.push_back(*it1++);
            continue;
        }
 
        if(*it1 < *it2)
            c.push_back(*it1++);
        else
            c.push_back(*it2++);
    }
}
 
int main()
{
    std::ifstream ifs1("input.txt"), ifs2("input2.txt");
    std::vector<int> a, b, c;
    int tmp;
 
    if (!ifs1 || !ifs2) return 1;
    while (!ifs1.eof() && ifs1 >> tmp)
        a.push_back(tmp);
    while (!ifs2.eof() && ifs2 >> tmp)
        b.push_back(tmp);
    merge(a, b, c);
    for (std::vector<int>::const_iterator it = c.begin(); it != c.end(); ++it)
        std::cout << *it << " ";
}
Добавлено через 1 минуту
рука так и чешется все переписать под шаблонную функцию с итераторами...
0
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru