0 / 0 / 0
Регистрация: 07.09.2014
Сообщений: 19
1

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

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

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

Методом вставки "с барьером" сортировать столбики (по сумме) в порядке возрастания
Методом вставки "с барьером" сортировать столбики (по сумме) в порядке возрастания, у меня просто...

Расположить отрицательные элементы в порядке убывания с помощью алгоритма вставки
Дан массив x1, x2,..., x20. Требуется расположить отрицательные элементы в порядке убывания....

Функция сортировки массива в порядке возрастания методом вставки
Помогите написать: 1)Написать функцию сортировки массива в порядке возрастания методом вставки.

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

4
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
2708 / 1958 / 977
Регистрация: 21.12.2010
Сообщений: 3,654
Записей в блоге: 10
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
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
0 / 0 / 0
Регистрация: 07.09.2014
Сообщений: 19
08.09.2014, 11:59  [ТС] 5
Спасибо всем.
Цитата Сообщение от wrone Посмотреть сообщение
Я вижу что тут уже два готовых когда есть, но своим я тоже хочу поделиться, сделал задание чтобы потренироваться.
У меня еще вопрос, по поводу входного и конечного txt файла.
Как переделать код, если в файле должно быть первое число - количество элементов массива, а потом уже идут сами элементы входного массива. Но при этом в отредактированном конечном файле не должно быть размерности массива (первого числа, как во входном файле).
0
08.09.2014, 11:59
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
08.09.2014, 11:59
Помогаю со студенческими работами здесь

Массив: вывести на экран сначало положительные числа в порядке возрастания, а потом отрицательные в порядке возрастания.
Надо &quot;Создать динамический массив,заполнить случайными числами,затем вывести на экран сначало...

Упорядочить элементы числового массива в порядке возрастания с помощью стека и линейного списка
Упорядочить элементы числового массива в порядке возрастания с помощью стека и линейного списка. ...

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

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


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru