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

Переписать файл так, чтобы сначала шли положительные, потом отрицательные числа

20.05.2014, 20:17. Просмотров 721. Ответов 2
Метки нет (Все метки)

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

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

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 <string.h>
#include <iostream>
 
const int N=10;
typedef int mas[N];
void Fill();
void Sort();
void Finish();
FILE *f,*g;
mas A={1,2,3,4,5,-6,-7,-8,-9,-10};
mas B;
int i;
int z=0;
 
int main() {
    Fill();
    if ((f=fopen("C:\\test.bin","rb"))==NULL){
        printf("File not open");
        exit(1);
    }
    if ((g=fopen("C:\\test2.bin","w+b"))==NULL){
        printf("File not open");
        exit(1);
    }
    for (i=0;i<N;i++)
        fread(&A[i],sizeof(int),1,f);
    fclose(f);
    Sort();
    for (i=0;i<z;i++)
        fwrite(&B[i],sizeof(int),1,g);
    fclose(g);
    printf("Result:");
    printf("\n");
    Finish();
    system("pause");
}
 
void Fill(){
    if ((f=fopen("C:\\test.bin","w+b"))==NULL){
        printf("File not open");
        exit(1);
    }
    for (i=0;i<N;i++)
        fwrite(&A[i],sizeof(int),1,f);
    fclose(f);
}
 
void Sort(){
    for (i=0;i<N;i++)
        if (A[i]>0){
            B[z]=A[i];
            z++;
        }   
        for (i=0; i<N;i++)
            if (A[i]<0){
                B[z]=A[i];
                z++;
            }
}
 
void Finish(){
    if ((g=fopen("C:\\test2.bin","rb"))==NULL){
        printf("File not open");
        exit(1);
    }
    for (i=0;i<N;i++)
        fread(&A[i],sizeof(int),1,g);
    fclose(g);
    for (i=0;i<N;i++)
        printf("%i\n",A[i]);
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.05.2014, 20:17
Ответы с готовыми решениями:

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

Используя вспомогательный файл, переписать компоненты f так, чтобы в файле сначала шли нечетные, потом четные числа
Здравствуйте. Помогите реализовать алгоритм решения задачи. Дан файл f,...

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

Распределить элементы массива так, чтобы сначала стояли положительные, а потом отрицательные
Даны целые числа n одномерного массива. Полная программа на c++.

Преобразовать массив так, чтобы сначала располагались все положительные элементы, а потом отрицательные
Помогите пжлст решить задачу:cry: В одномерном массиве, состоящем из n целых...

2
alsav22
5441 / 4836 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
20.05.2014, 20:40 #2
В Finish() не обязательно из файла в массив читать, можно в int и сразу выводить. Сортировать не обязательно, можно просто два раза массив перебрать, или вообще не читать в массив, а два раза файл перебрать (тем более, что количество чисел в массиве, по заданию, неизвестно).
0
Насютка
0 / 0 / 0
Регистрация: 27.02.2014
Сообщений: 36
21.05.2014, 20:41  [ТС] #3
alsav22,
Цитата Сообщение от alsav22 Посмотреть сообщение
В Finish() не обязательно из файла в массив читать, можно в int и сразу выводить.
как это сделать?
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
21.05.2014, 20:41

Расположить элементы массива так, чтобы сначала были отрицательные и нули, а потом положительные
Дан массив из 12 элементов. Расположить элементы так,чтобы сначала были...

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

Переписать в новый файл сначала все отрицательные компоненты из первого, потом все положительные
Почему не работает? /* II. Работа с текстовыми файлами. 13.Дан файл,...


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

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

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