Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.57/7: Рейтинг темы: голосов - 7, средняя оценка - 4.57
alexander71
0 / 0 / 0
Регистрация: 07.09.2014
Сообщений: 19
1

С помощью алгоритма вставки, нужно сортировать парные числа массива в порядке возрастания

07.09.2014, 19:44. Просмотров 1363. Ответов 4
Метки нет (Все метки)

Приветствую!
Нужно написать программу которая из текстового файла будет считывать в массив числа (например, 2 6 4 13 15 29).
После этого, с помощью алгоритма вставки, нужно сортировать парные числа в порядке возрастания, а непарные в порядке убывания. В результате создается новый текстовый файл, в котором находятся уже отсортированные числа по заданному алгоритму. (Было - 2 6 4 13 15 29. Стало - 2 4 6 29 15 13).
Я знаю как работает алгоритм вставки и как отсортировать числа в порядке возрастания, но с парными - непарными проблема. Так же есть проблема со считыванием чисел из файла в массив.
Буду благодарен за советы и подсказки!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
07.09.2014, 19:44
Ответы с готовыми решениями:

Расположить чётные числа массива в порядке возрастания, а нечётные в порядке убывания
Требуется расположить чётные числа в порядке возрастания, а не чётные в порядке...

сгенерировать квадратную матрицу n*n и сортировать ее в порядке возрастания
подскажите кто знает.я уже запарился.язык С надо сгенерировать квадратную...

Сортировать записи в файле в порядке возрастания номера телефона
Привет, ребята помогите с кодом, необходимо написать программу которая...

Нужно ввести любые три числа и чтобы они расположились в порядке возрастания
Помогите решить задачу! Нужно ввести любые три числа и чтобы они...

Вывести все четные числа массива в порядке возрастания их индексов, а затем все нечетные в порядке убывания
Дан целочисленный массив размера N.Вывести в начале все содержащиеся в данном...

4
m5willmax
1 / 1 / 0
Регистрация: 23.08.2014
Сообщений: 8
07.09.2014, 21:40 2
Перепиши вектор на массив

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
#include <iostream>
#include <fstream>
#include <vector>
#include <string>
using namespace std;
 
void writeTxt(string file, string message){
    ofstream out(file); //(file,ios::app) - для дозаписи
    if (out) {
        out << message << endl;
        out.close();
    }
}
 
vector<string> readTxt(string file, int mode){
    vector<string> lines;
    string line;
    ifstream in(file);
    if (in) {
        while (!in.eof()){
            if (mode == 0){
                getline(in,line); //читает с пробелами
            } else {
                in>>line; //пробел = новая строка
            }
            if (line!=""){
                lines.push_back(line); //не читать пустые строки
            }
        }
        return lines;
    }
}
1
igorrr37
1867 / 1483 / 751
Регистрация: 21.12.2010
Сообщений: 2,473
Записей в блоге: 11
07.09.2014, 22:23 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
#include <iostream>
#include <fstream>
 
// сортировка вставками
void ISort(int arr[], int arrsiz)
{
    int i, j, tmp, dta;
    for(i = 0; i < arrsiz; ++i)
    {
        tmp = arr[i];
        dta = 1;
        for(j = i - 1; j >= 0 && (((tmp&1) == (arr[j]&1)) ? (tmp&1 ? arr[j] < tmp : arr[j] > tmp) : (++dta, true)); --j)
        {
            if((tmp&1) == (arr[j]&1))
            {
                arr[j+dta] = arr[j];
                dta = 1;
            }
        }
        arr[j+dta] = tmp;
    }
}
 
int main()
{
    std::fstream fs("in.txt", std::ios::in);
    if(fs.is_open())
    {
        int arr[100], arrsiz = -1;
        while(fs >> arr[++arrsiz])
            ;
        fs.clear();
        fs.close();
        fs.open("out.txt", std::ios::out);
        if(fs.is_open())
        {
            ISort(arr, arrsiz);
            for(int i = 0; i < arrsiz; fs << arr[i] << "  ", ++i)
                ;
            fs.close();
        }
        else
            std::cerr << "Unable to open output file\n";
    }
    else
        std::cerr << "Unable to open input file\n";
    return 0;
}
1
wrone
8 / 8 / 2
Регистрация: 19.12.2013
Сообщений: 87
07.09.2014, 22:40 4
Я вижу что тут уже два готовых когда есть, но своим я тоже хочу поделиться, сделал задание чтобы потренироваться. Я еще нуб в программирование, так что жесткая критика приветствуется.

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
#include <iostream>
#include <vector>
#include <fstream>
 
using namespace std;
 
int main(){
 
 
    vector<int> arr;
    int number;
    ifstream infile("numbers.txt");
 
        int n = 0;
        cout << endl << "Before: " << endl;
        while(!infile.eof())
        {
               infile >> number;
               arr.push_back(number);
               cout << arr[n] << " ";
               n++;
        }
               infile.close();
 
              for(int i = 0; i < arr.size(); i++)
              {
                  for(int j = i + 1; j < arr.size(); j++)
                  {
                      if(arr[i] % 2 == 0 && arr[i] > arr[j])
                      {
                         swap(arr[j],arr[i]);
                      }
                      if(arr[i] % 2 != 0 && arr[i] < arr[j])
                      {
                         swap(arr[j],arr[i]);
                      }
                  }
              }
 
          cout << endl << endl;
          cout << "After: " << endl;
 
          ofstream outfile("new.txt");
          for(int i = 0; i < arr.size(); i++)
          {
              cout << arr[i] << " ";
              outfile << arr[i] << " ";
          }
 
return 0;
}
1
alexander71
0 / 0 / 0
Регистрация: 07.09.2014
Сообщений: 19
08.09.2014, 11:59  [ТС] 5
Спасибо всем.
Цитата Сообщение от wrone Посмотреть сообщение
Я вижу что тут уже два готовых когда есть, но своим я тоже хочу поделиться, сделал задание чтобы потренироваться.
У меня еще вопрос, по поводу входного и конечного txt файла.
Как переделать код, если в файле должно быть первое число - количество элементов массива, а потом уже идут сами элементы входного массива. Но при этом в отредактированном конечном файле не должно быть размерности массива (первого числа, как во входном файле).
0
08.09.2014, 11:59
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.09.2014, 11:59

Записать в массив в порядке возрастания все различные числа исходного массива
Дан массив целых чисел X(n) . Сформировать массив Y(m) , поместив в него в...

Вывести на экран элементы массива целых чисел в порядке возрастания их числа делителей
1 Получить все числа, которые входят в массив по одному разу 2 Вывести на...

Выведите все числа от A до B включительно, в порядке возрастания, если A < B, или в порядке убывания в противном случае.
пробовала сделать ,но выдаёт ошибки я не понимаю,что он требует ТЕКСТ ЗАДАЧИ....


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

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

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