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

Записать в другой файл сначала отрицательные элементы, а затем положительные - C++

Восстановить пароль Регистрация
 
 
STRj
0 / 0 / 0
Регистрация: 05.02.2014
Сообщений: 31
02.04.2014, 19:16     Записать в другой файл сначала отрицательные элементы, а затем положительные #1
Здравствуйте форумчане. В общем возникают проблемы в решении программ с использованием файловых переменных. Вот сама задача:

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

-Первую часть я сделал, создал двоичный файл с полож. и отриц. числами. А вот записать в другой файл не получается.

Заранее спасибо за помощь!
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.04.2014, 19:16     Записать в другой файл сначала отрицательные элементы, а затем положительные
Посмотрите здесь:

Записать в этот же массив сначала все положительные числа и нули, а затем все отрицательные C++
C++ Получить новый массив, в котором сначала идут положительные числа, затем нулевые, затем отрицательные исходного
C++ Расположить элементы одномерного массива в следующем порядке: сначала отрицательные, затем нули, потом положительные
C++ Программа про файлы (Записать построчно в другой файл сначала элементы, находящиеся над главной диагональю, затем...)
C++ Записать в данный массив сначала все отрицательные числа и нули, затем все положительные, сохраняя порядок их следования
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
03.04.2014, 01:12     Записать в другой файл сначала отрицательные элементы, а затем положительные #2
Цитата Сообщение от STRj Посмотреть сообщение
Первую часть я сделал, создал двоичный файл с полож. и отриц. числами.
Покажите код.
STRj
0 / 0 / 0
Регистрация: 05.02.2014
Сообщений: 31
03.04.2014, 07:26  [ТС]     Записать в другой файл сначала отрицательные элементы, а затем положительные #3
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <iostream>
#include <stdio.h>
using namespace std;
int main()
{
int n, i,m;
FILE *f;
cout <<"vvedi colichestvo dannih";
cin>>n;
f=fopen("Z:\\1.dat", "wb");
fwrite(&n, sizeof(int), 1, f);
cout<< "vvedi dannie ";
for (i=0;i<n;i++)
{
cin>>m;
fwrite(&m, sizeof(int), 1, f);
}
fclose(f);
 
return 0;
}
vvedi colichestvo dannih 19
vvedi dannie -9 -8 -7 -6 -5 -4 -3 -2 -1 0 1 2 3 4 5 6 7 8 9
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
03.04.2014, 19:28     Записать в другой файл сначала отрицательные элементы, а затем положительные #4
Цитата Сообщение от STRj Посмотреть сообщение
fwrite(&m, sizeof(int), 1, f);
Т.е., как записать, бинарным методом, числа в файл, вы знаете.
Метод для бинарного чтения: fread() (если уж хотите C-шные функции использовать).
На первом проходе читаете из файла числа, отрицательные записываете в другой файл. Потом делаете rewind(). На втором проходе читаете из файла числа, положительные записываете в другой файл.
STRj
0 / 0 / 0
Регистрация: 05.02.2014
Сообщений: 31
03.04.2014, 19:35  [ТС]     Записать в другой файл сначала отрицательные элементы, а затем положительные #5
alsav22, спасибо, но как-то сложно все.
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
03.04.2014, 19:41     Записать в другой файл сначала отрицательные элементы, а затем положительные #6
Цитата Сообщение от STRj Посмотреть сообщение
но как-то сложно все
Проще трудно придумать.
STRj
0 / 0 / 0
Регистрация: 05.02.2014
Сообщений: 31
05.04.2014, 16:45  [ТС]     Записать в другой файл сначала отрицательные элементы, а затем положительные #7
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
#include <iostream.h>
#include <stdio.h>
int main()
{
int n, i, k, m;
int *a;
FILE *f;
f=fopen("Z:\\1.dat", "rb");
while(!feof(f))
{   fread(&m, sizeof(int), 1, f);
 
}
fclose(f)
Пробовал по примеру, но считать и записать в другой бинарный файл не получается.
Что-то вроде
C++
1
2
3
4
F>>n;
if (n>0)
G<<n;
else Z<< n;
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
05.04.2014, 20:31     Записать в другой файл сначала отрицательные элементы, а затем положительные #8
Цитата Сообщение от STRj Посмотреть сообщение
но считать и записать в другой бинарный файл не получается
Что и где не получается?
Цитата Сообщение от STRj Посмотреть сообщение
Что-то вроде
Что мешает сделать это в цикле бинарного чтения?

Добавлено через 8 минут
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
int n, i, k, m;
    int *a;
    FILE *fin, *fout;
    if ((fin = fopen("Z:\\1.dat", "rb")) == NULL)
        printf("Error!\n");
    else
    {
        fout = fopen("Z\\2.dat", "wb");
        while(!feof(fin))
        {   
            fread(&m, sizeof(int), 1, fin);
            if (m < 0)
                fwrite(&m, sizeof(int), 1, fout);
        }
        fclose(fin);
        
    }
STRj
0 / 0 / 0
Регистрация: 05.02.2014
Сообщений: 31
06.04.2014, 18:27  [ТС]     Записать в другой файл сначала отрицательные элементы, а затем положительные #9
alsav22, Все сделал как ты написал, выводит ошибки в 4,6,7 строке.
Compiling...
l10.cpp
c:\program files\c++\l10s\l10.cpp(7) : error C2143: syntax error : missing ';' before 'if'
c:\program files\c++\l10s\l10.cpp(9) : error C2143: syntax error : missing ';' before 'else'
c:\program files\c++\l10s\l10.cpp(10) : error C2143: syntax error : missing ';' before '{'
c:\program files\c++\l10s\l10.cpp(10) : error C2447: missing function header (old-style formal list?)
Error executing cl.exe.

l10s.exe - 4 error(s), 0 warning(s)
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
06.04.2014, 19:34     Записать в другой файл сначала отрицательные элементы, а затем положительные #10
Синтаксис нужно уметь и самому исправлять. В выложенном мной куске кода, ошибок нет. Свой (котрый выдаёт эти ошибки) код покажите.
STRj
0 / 0 / 0
Регистрация: 05.02.2014
Сообщений: 31
06.04.2014, 19:37  [ТС]     Записать в другой файл сначала отрицательные элементы, а затем положительные #11
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <iostream.h>
#include <fstream.h>
#include <stdio.h>
int n, i, k, m;
    int *a;
    FILE *fin, *fout;
    if ((fin = fopen("C:\\12.dat", "rb")) == NULL)
        printf("Error!\n");
    else
    {
        fout = fopen("C\\13.dat", "wb");
        while(!feof(fin))
        {   
            fread(&m, sizeof(int), 1, fin);
            if (m < 0)
                fwrite(&m, sizeof(int), 1, fout);
        }
        fclose(fin);
        
    }
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
06.04.2014, 19:48     Записать в другой файл сначала отрицательные элементы, а затем положительные #12
STRj, такой код не будет, вообще, компилироваться: main() нет.

Добавлено через 2 минуты
И где вы видели, что такой код располагают в глобальной области?
STRj
0 / 0 / 0
Регистрация: 05.02.2014
Сообщений: 31
06.04.2014, 19:53  [ТС]     Записать в другой файл сначала отрицательные элементы, а затем положительные #13
Добавил int main(), но все же 2 ошибки, в переменных. В строке
C++
1
int n, i, k, m;
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
06.04.2014, 19:55     Записать в другой файл сначала отрицательные элементы, а затем положительные #14
Цитата Сообщение от STRj Посмотреть сообщение
Добавил int main()
Код показывайте.

Не по теме:

Начинает надоедать.

STRj
0 / 0 / 0
Регистрация: 05.02.2014
Сообщений: 31
06.04.2014, 20:03  [ТС]     Записать в другой файл сначала отрицательные элементы, а затем положительные #15
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <iostream.h>
#include <fstream.h>
#include <stdio.h>
int main ()
int n, i, k, m;
    int *a;
    FILE *fin, *fout;
    if ((fin = fopen("C:\\12.dat", "rb")) == NULL)
        printf("Error!\n");
    else
    {
        fout = fopen("C\\13.dat", "wb");
        while(!feof(fin))
        {   
            fread(&m, sizeof(int), 1, fin);
            if (m < 0)
                fwrite(&m, sizeof(int), 1, fout);
        }
        fclose(fin);
        
    }
Compiling...
l10.cpp
C:\Program Files\C++\l10s\l10.cpp(5) : warning C4518: 'int ' : storage-class or type specifier(s) unexpected here; ignored
C:\Program Files\C++\l10s\l10.cpp(5) : error C2146: syntax error : missing ';' before identifier 'n'
C:\Program Files\C++\l10s\l10.cpp(5) : fatal error C1004: unexpected end of file found
Error executing cl.exe.
l10s.exe - 2 error(s), 1 warning(s)
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
06.04.2014, 20:09     Записать в другой файл сначала отрицательные элементы, а затем положительные #16
Такое впечатление, что код, в 3 посте, не вы писали. Элементарных вещей не знаете? Что код функции нужно помещать в фигурные скобки?
STRj
0 / 0 / 0
Регистрация: 05.02.2014
Сообщений: 31
06.04.2014, 20:24  [ТС]     Записать в другой файл сначала отрицательные элементы, а затем положительные #17
Извини за тупость, после работы голова вообще не хочет #include))
Теперь надеюсь верно. Ошибок нет, 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
#include <iostream.h>
#include <fstream.h>
#include <stdio.h>
int main ()
{
int i, k, m;
    int *a;
    FILE *fin, *fout;
    if ((fin = fopen("C:\\12.dat", "rb")) == NULL)
        printf("Error!\n");
    else
    {
        fout = fopen("C\\13.dat", "wb");
        while(!feof(fin))
        {   
            fread(&m, sizeof(int), 1, fin);
            if (m < 0)
                fwrite(&m, sizeof(int), 1, fout);
        }
        fclose(fin);
        
    }
}
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
06.04.2014, 20:51     Записать в другой файл сначала отрицательные элементы, а затем положительные #18
Выложите файл, который читаете.
STRj
0 / 0 / 0
Регистрация: 05.02.2014
Сообщений: 31
07.04.2014, 15:19  [ТС]     Записать в другой файл сначала отрицательные элементы, а затем положительные #19
Положил в архив, 12.dat
Вложение 385850
Вложения
Тип файла: zip 12.zip (124 байт, 5 просмотров)
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
07.04.2014, 21:13     Записать в другой файл сначала отрицательные элементы, а затем положительные
Еще ссылки по теме:

C++ Задан файл с отрицательными и положительными целыми числами. Записать в другой файл сначала отрицательные, а потом положительные числа
В массив X записать сначала все положительные элементы M1 а затем все отрицательные элементы M2 C++
C++ Расположить в массиве R сначала положительные, а затем отрицательные элементы массива Z

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

Или воспользуйтесь поиском по форуму:
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
07.04.2014, 21:13     Записать в другой файл сначала отрицательные элементы, а затем положительные #20
Данные (int), в этот файл, записывались текстовым, а не бинарным методом.
Yandex
Объявления
07.04.2014, 21:13     Записать в другой файл сначала отрицательные элементы, а затем положительные
Ответ Создать тему
Опции темы

Текущее время: 04:47. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru