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

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

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 15, средняя оценка - 5.00
Мирзали
 Аватар для Мирзали
4 / 5 / 1
Регистрация: 20.11.2010
Сообщений: 353
25.06.2011, 13:07     Удалить из бинарного файла, в котором записаны целые числа все четные элементы #1
Удалить из бинарного файла, в котором записаны целые числа все четные элементы
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
25.06.2011, 13:07     Удалить из бинарного файла, в котором записаны целые числа все четные элементы
Посмотрите здесь:

Удалить из бинарного файла, в котором записаны целые числа все четные элементы. C++
Найти сумму N первых чисел текстового файла, в котором записаны целые числа. C++
C++ Компоненты бинарного файла – целые числа
C++ линейный массив содержит целые числа. определить диапазон, в котором находятся элементы массива
В одномерном массиве, элементы которого -целые числа, удалить все четные числа C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Jupiter
Каратель
Эксперт C++
6542 / 3962 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
25.06.2011, 14:17     Удалить из бинарного файла, в котором записаны целые числа все четные элементы #2
И в чем проблема?
Мирзали
 Аватар для Мирзали
4 / 5 / 1
Регистрация: 20.11.2010
Сообщений: 353
25.06.2011, 19:57  [ТС]     Удалить из бинарного файла, в котором записаны целые числа все четные элементы #3
не работали с файлами. не имею понятия о бинарном файле. слово бинарный означает, вроде, двойной, а причем тут файл??
iama
 Аватар для iama
1249 / 974 / 48
Регистрация: 30.07.2010
Сообщений: 5,297
25.06.2011, 19:59     Удалить из бинарного файла, в котором записаны целые числа все четные элементы #4
Мирзали, не двойной, а двоичный
Мирзали
 Аватар для Мирзали
4 / 5 / 1
Регистрация: 20.11.2010
Сообщений: 353
25.06.2011, 20:05  [ТС]     Удалить из бинарного файла, в котором записаны целые числа все четные элементы #5
iama, ))) ага....

Добавлено через 1 минуту
не подскажете где скачать стандартный компилятор С++? после переустановки потерял все
iama
 Аватар для iama
1249 / 974 / 48
Регистрация: 30.07.2010
Сообщений: 5,297
25.06.2011, 20:13     Удалить из бинарного файла, в котором записаны целые числа все четные элементы #6
Мирзали, коль вы уж не поддались на откровенно толстый троллинг, держите
Мирзали
 Аватар для Мирзали
4 / 5 / 1
Регистрация: 20.11.2010
Сообщений: 353
25.06.2011, 21:30  [ТС]     Удалить из бинарного файла, в котором записаны целые числа все четные элементы #7
iama, за сайт спасибо. с программой поможете?
kravam
быдлокодер
 Аватар для kravam
1512 / 872 / 44
Регистрация: 04.06.2008
Сообщений: 5,270
26.06.2011, 14:45     Удалить из бинарного файла, в котором записаны целые числа все четные элементы #8
Тут отсутствуют проверки на правильность открытия файла, сам добавляй.
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
#include <fstream>
#include <vector>
#include <algorithm>
using namespace std;
 
int main () {
 
 //открываем файл на чтение
 ifstream is ("bi_", ios::binary);
 
 //ПРедполагаем, что число занимает 4 байта, что в файле именно такие числа и ничё больше;
 //считываем их и сохранаем в ветор только нечётные
 vector<int> vec;
 char* temp= new char [sizeof(int)]; 
 
 while (is.read (temp, sizeof(int))) {
  reverse (temp, temp+ sizeof(int));
  if (abs(*(int*)temp)%2){
   vec.push_back(*(int*)temp);
  }
 }; 
 
 //Теперь перегоняем всю эту муть назад в файл
 is.close();
 ofstream is_ ("bi_", ios::binary| ios::out);
 int i= 0;
 while (i< vec.size()) {
  *(int*)temp= vec[i++];
  reverse (temp, temp+ sizeof(int));
  is_.write (temp, sizeof(int));
 }
 is_.close();
 
 getchar ();
 return 0;
}
Мирзали
 Аватар для Мирзали
4 / 5 / 1
Регистрация: 20.11.2010
Сообщений: 353
27.06.2011, 08:42  [ТС]     Удалить из бинарного файла, в котором записаны целые числа все четные элементы #9
Я же говорю вам. Мы на С+ не прошли про файлы. В паскаль знаю эти операции. А про бинарный файл понятия не имею.
Мирзали
 Аватар для Мирзали
4 / 5 / 1
Регистрация: 20.11.2010
Сообщений: 353
27.06.2011, 08:43  [ТС]     Удалить из бинарного файла, в котором записаны целые числа все четные элементы #10
За программу спасибо. Большое спасибо
grizlik78
Эксперт C++
 Аватар для grizlik78
1882 / 1414 / 101
Регистрация: 29.05.2011
Сообщений: 2,958
27.06.2011, 10:53     Удалить из бинарного файла, в котором записаны целые числа все четные элементы #11
С проверками и без изменения порядка байтов.
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>
#include <vector>
#include <algorithm>
 
struct IsOdd
{
    bool operator() (int const& a) const { return a&1; }
};
 
using namespace std;
 
int main()
{
    int const BUF_SIZE = 4096;
    vector<int> data;
    int buf[BUF_SIZE];
 
    fstream fstrm("file.dat", ios::binary|ios::in);
    if (!fstrm)
    {
        cerr << "Can't open file for reading" << endl;
        return -1;
    }
 
    // читаем поблочно и сохраняем в векторе только нечётные
    while (fstrm.read((char*)&buf[0], sizeof(buf)), fstrm.gcount())
        remove_copy_if(buf, buf+fstrm.gcount()/4, back_inserter(data), IsOdd());
 
    fstrm.close();
 
    fstrm.open("file.dat", ios::binary|ios::out);
    if (!fstrm)
    {
        cerr << "Can't open file for writing" << endl;
        return -1;
    }
    
    // сохраняем вектор обратно в файл
    fstrm.write((char*)&data[0], data.size()*sizeof(data[0]));
    if (!fstrm)
    {
        cerr << "Writing error" << endl;
        return -1;
    }
 
    return 0;
}
Мирзали
 Аватар для Мирзали
4 / 5 / 1
Регистрация: 20.11.2010
Сообщений: 353
27.06.2011, 14:21  [ТС]     Удалить из бинарного файла, в котором записаны целые числа все четные элементы #12
Спасибо вам. Не поленились и потратили свое время ради меня.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.06.2011, 16:20     Удалить из бинарного файла, в котором записаны целые числа все четные элементы
Еще ссылки по теме:

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

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

Или воспользуйтесь поиском по форуму:
kravam
27.06.2011, 16:20     Удалить из бинарного файла, в котором записаны целые числа все четные элементы
  #13

Не по теме:

Цитата Сообщение от Мирзали Посмотреть сообщение
Я же говорю вам. Мы на С+ не прошли про файлы. В паскаль знаю эти операции. А про бинарный файл понятия не имею.
Да вот тебе не по фиг. Сажешь преподу что сам прочёл, он тебе пятёрку поставит.

Yandex
Объявления
27.06.2011, 16:20     Удалить из бинарного файла, в котором записаны целые числа все четные элементы
Ответ Создать тему
Опции темы

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