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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
STRj
0 / 0 / 0
Регистрация: 05.02.2014
Сообщений: 32
#1

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

02.04.2014, 19:16. Просмотров 1052. Ответов 22
Метки нет (Все метки)

Здравствуйте форумчане. В общем возникают проблемы в решении программ с использованием файловых переменных. Вот сама задача:

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

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

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

Преобразовать массив, сначала записать положительные, а затем отрицательные элементы - C++
Задание: написать функцию, которая в массиве создает преобразование – сначала записывает положительные, а затем отрицательные элементы, не...

В массив X записать сначала все положительные элементы M1 а затем все отрицательные элементы M2 - C++
Из двух массивов M1(10) и M2(10) получить третийX( ) в массиве X записать вначале все положительные элементы массива M1 а затем все...

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

Расположить в массиве R сначала положительные, а затем отрицательные элементы массива Z - C++
Расположить в массиве R сначала положите ,а затем отрицательные элементы массива Z. матрица F(10,8) помогите решить пожалуйста. вообще...

Разделить исходный файл на два новых и записать положительные элементы в один файл, а отрицательные - в другой - C++
Есть файл, в котором записаны числа. Программа берёт из этого файла число. Их может быть несколько в одной строке, а может быть одно, а...

Расположить в массиве сначала отрицательные, а затем положительные элементы другого массива - C++
Расположить в массиве R сначала отрицательные, а затем положительные элементы массива Z. Массив Z(20). Нашел такое решение #include...

22
alsav22
5421 / 4816 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
03.04.2014, 01:12 #2
Цитата Сообщение от STRj Посмотреть сообщение
Первую часть я сделал, создал двоичный файл с полож. и отриц. числами.
Покажите код.
0
STRj
0 / 0 / 0
Регистрация: 05.02.2014
Сообщений: 32
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
0
alsav22
5421 / 4816 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
03.04.2014, 19:28 #4
Цитата Сообщение от STRj Посмотреть сообщение
fwrite(&m, sizeof(int), 1, f);
Т.е., как записать, бинарным методом, числа в файл, вы знаете.
Метод для бинарного чтения: fread() (если уж хотите C-шные функции использовать).
На первом проходе читаете из файла числа, отрицательные записываете в другой файл. Потом делаете rewind(). На втором проходе читаете из файла числа, положительные записываете в другой файл.
1
STRj
0 / 0 / 0
Регистрация: 05.02.2014
Сообщений: 32
03.04.2014, 19:35  [ТС] #5
alsav22, спасибо, но как-то сложно все.
0
alsav22
5421 / 4816 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
03.04.2014, 19:41 #6
Цитата Сообщение от STRj Посмотреть сообщение
но как-то сложно все
Проще трудно придумать.
0
STRj
0 / 0 / 0
Регистрация: 05.02.2014
Сообщений: 32
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;
0
alsav22
5421 / 4816 / 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);
        
    }
1
STRj
0 / 0 / 0
Регистрация: 05.02.2014
Сообщений: 32
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)
0
alsav22
5421 / 4816 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
06.04.2014, 19:34 #10
Синтаксис нужно уметь и самому исправлять. В выложенном мной куске кода, ошибок нет. Свой (котрый выдаёт эти ошибки) код покажите.
0
STRj
0 / 0 / 0
Регистрация: 05.02.2014
Сообщений: 32
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);
        
    }
0
alsav22
5421 / 4816 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
06.04.2014, 19:48 #12
STRj, такой код не будет, вообще, компилироваться: main() нет.

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

Не по теме:

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

0
STRj
0 / 0 / 0
Регистрация: 05.02.2014
Сообщений: 32
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)
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.04.2014, 20:03
Привет! Вот еще темы с ответами:

Переписать в массив B сначала отрицательные, а затем положительные элементы исходного массива - C++
Помогите пожалуйста решить эти задачки... 1. Одномерные массивы Переписать в массив B(N) сначала отрицательные, а затем...

Расположить сначала все отрицательные элементы, затем положительные и нули, сохраняя первоначальный порядок их - C++
Если организовать такой цикл и такую &quot;сортировку&quot;, то все отрицательные встают &quot;перед&quot; остальными, сохраняя свой порядок, как и надо, НО......

Расположить элементы одномерного массива в следующем порядке: сначала отрицательные, затем нули, потом положительные - C++
Расположить элементы одномерного массива в следующем порядке: сначала отрицательные, затем нули, потом положительные.

Записать в этот же массив сначала все положительные числа и нули, а затем все отрицательные - C++
Дан массив из 25 вещественных чисел. Записать в этот же массив сначала все положительные числа и нули, а затем все отрицательные, сохраняя...


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

Или воспользуйтесь поиском по форуму:
15
Yandex
Объявления
06.04.2014, 20:03
Ответ Создать тему
Опции темы

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