Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Vinori
4 / 4 / 0
Регистрация: 27.09.2015
Сообщений: 59
#1

Отсортировать файл: положительные числа, потом отрицательные

05.06.2016, 21:39. Просмотров 209. Ответов 1
Метки нет (Все метки)

Дан файл f, компоненты которого являются целыми числами. Никакая из компонент файла не равна нулю. Файл f содержит столько же отрицательных чисел, сколько и положительных. Используя вспомогательный файл h, переписать компоненты файла f в файл g так, чтобы в файле g:
· сначала шли положительные, потом отрицательные числа;
· числа располагались в следующем порядке два положительных,
два отрицательных, два положительных, два отрицательных и т. д.

Условия противоречат сами себе, но 1 я сделал а вот с 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
33
34
35
36
37
38
#include <iostream>
#include <fstream>
#include <Windows.h>
using namespace std;
int main()
{
    setlocale(LC_ALL, "RUS");
    int a = 0;
    ifstream fin;
    ofstream fout;
    fout.open("g.txt");//конечный файл 
    fin.open("f.txt");//начальный файл
    if (!(fin.is_open()))//удалось ли открыть файл 
    {
        cout << "Такого файла не существует!!";
        Sleep(5000);
        return -1;
    }  
    const int kol = 10;
    int A[kol];
        
    for (int i (0); i < 10; i++)
    {
        a = 0;
        fin >> a;
        A[i] = a; //преобразовал жлементы файла в массив
        cout << A[i] << " ";
    }
    for (int i = 0; i < kol; i++)
        if (A[i] >= 0)
            fout << A[i];
    for (int i = 0; i < kol; i++)
        if (A[i] >= 0)
            fout << A[i];
    cout << endl;
    system("pause");
    return 0;
}
Помогите с 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
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
#include <iostream>
#include <fstream>
#include <Windows.h>
using namespace std;
int main()
{
    setlocale(LC_ALL, "RUS");
    int a = 0;
    ifstream fin;
    ofstream fout;
    //fout.open("h.txt");// вспомогательный файл
    fout.open("g.txt");//конечный файл 
    fin.open("f.txt");//начальный файл
    if (!(fin.is_open()))//удалось ли открыть файл 
    {
        cout << "Такого файла не существует!!";
        Sleep(5000);
        return -1;
    }
    const int kol = 10;
    int A[kol];
 
    for (int i(0); i < kol; i++)
    {
        a = 0;
        fin >> a;
        A[i] = a; //преобразовал жлементы файла в массив
        cout << A[i] << " ";
    }
    cout << endl << endl;
    int i = 0;
    for (int i(0); i < kol; i++)
    {
        while (A[i] > 0)
        {
            cout << A[i] << " ";
            i++;
            if (i > 2)
                break;
        }
        while (A[i] < 0)
        {
            cout << A[i] << " ";
            i++;
            if (i > 2)
                break;
        }
    }
    cout << endl;
    system("pause");
    return 0;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
05.06.2016, 21:39
Ответы с готовыми решениями:

Задан файл с отрицательными и положительными целыми числами. Записать в другой файл сначала отрицательные, а потом положительные числа
Помогите пожалуйста!!!правда очень важно!! Задан файл с отрицательными и...

Переписать файл так, чтобы сначала шли положительные, потом отрицательные числа
Подскажите, пожалуйста, нужно ли что-то поменять или добавить в программу? ...

Переписать файл целых чисел так, чтобы сначала шли положительные, а потом - отрицательные
Дан файл целых чисел F. Используя вспомогательный файл H переписать компоненты...

Переставить элементы массива: отрицательные, потом нулевые, потом положительные
Есть массив а нужно сделать массив б чтобы сначала в нем шли отрицательные...

Отсортировать массив, чтобы все положительные числа находились в начале, отрицательные - в конце
Помогите пожалуйста. Дан вещественный массив A( N ) . Отсортировать его таким...

1
Геомеханик
785 / 592 / 937
Регистрация: 26.06.2015
Сообщений: 1,409
05.06.2016, 23:27 #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
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
73
74
75
76
#include <iostream>
#include <fstream>
#include <sstream>
 
struct node {
    node* next;
    int   val;
};
 
bool slist_add(node*& lst, int val);
void slist_pop(node*& lst);
void slist_clear(node* lst);
void output_pair(std::ostream& _out, std::istream& _in);
 
 
int main(void){
    //для примера
    char s[] = "-1 1 2 -2 -3 3 4 -4 5 -5 6 7 -6 -7 8 -8";
    std::istringstream sp(s);
    output_pair(std::cout, sp);
 
/*  ввод из файла в файл
    std::ifstream fin("input.txt");
    std::ofstream fout("output.txt");
    output_pair(fout, fin);
    fin.close();
    fout.close();
*/
    return 0;
}
 
void output_pair(std::ostream& _out, std::istream& _in){
    int   val;
    node* lst[2] = {NULL, NULL};
    
    while((_in >> val) && !_in.fail())
        slist_add(lst[val < 0], val);
 
    while((lst[0] != NULL) && (lst[1] != NULL)){
        for(int i = 0; i < 2; ++i){
            for(int j = 0; (j < 2) && (lst[i] != NULL); ++j){
                _out << lst[i]->val << ' ';
                slist_pop(lst[i]);
            }
        }
    }
    slist_clear(lst[0]);    
    slist_clear(lst[1]);
}
 
//добавление
bool slist_add(node*& lst, int val){
    node* p = new (std::nothrow) node();
    if(p != NULL){
        p->val  = val;
        p->next = lst;
        lst = p;
    }
    return (p != NULL);
}
 
//вытолкнуть
void slist_pop(node*& lst){
    node* t;
    if(lst != NULL){
        t   = lst;
        lst = lst->next;
        delete t;
    }
}
 
//удаление всех
void slist_clear(node* lst){
    while(lst != NULL)
        slist_pop(lst);
}
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
05.06.2016, 23:27

Отсортировать массив целых так, чтобы сначала шли отрицательные, затем положительные числа
если можно, то еще поменять порядок положительных

Переписать в новый файл сначала все отрицательные компоненты, потом все положительные
Дан файл, компонентами которого являются целые числа. Переписать в новый файл...

Сортировка: сначала положительные числа по возрастанию, а потом - отрицательные тоже по возрастанию
Имеется код программы сортировки чисел. нужно чтобы сначала выводило...


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

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

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