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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 15, средняя оценка - 5.00
Мирзали
4 / 5 / 1
Регистрация: 20.11.2010
Сообщений: 353
#1

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

25.06.2011, 13:07. Просмотров 2049. Ответов 12
Метки нет (Все метки)

Удалить из бинарного файла, в котором записаны целые числа все четные элементы
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
25.06.2011, 13:07
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Удалить из бинарного файла, в котором записаны целые числа все четные элементы (C++):

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

В одномерном массиве, элементы которого - целые числа, удалить все четные числа - C++
В одномерном массиве, элементы которого - целые числа, удалить все четные числа именно удалить а не оставить все не четные удалить...

В одномерном массиве, элементы которого -целые числа, удалить все четные числа - C++
В одномерном массиве, элементы которого -целые числа, удалить все четные числа.

Найти сумму N первых чисел текстового файла, в котором записаны целые числа. - C++
Прошу помочь решить задачки!:(очень нужно (Билет №8) Найти сумму N первых чисел текстового файла, в котором записаны целые...

Создать двусвязный список, содержащий целые числа. Удалить все максимальные элементы - C++
Создать двусвязный список, содержащий целые числа. Удалить все максималь* ные элементы. Например, для списка 5 2 9 1 3 7 9 2 9, результат...

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

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Jupiter
Каратель
Эксперт С++
6553 / 3973 / 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
1250 / 975 / 49
Регистрация: 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
1250 / 975 / 49
Регистрация: 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
быдлокодер
1694 / 881 / 44
Регистрация: 04.06.2008
Сообщений: 5,441
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
Эксперт С++
1908 / 1440 / 111
Регистрация: 29.05.2011
Сообщений: 2,996
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
Спасибо вам. Не поленились и потратили свое время ради меня.
kravam
27.06.2011, 16:20     Удалить из бинарного файла, в котором записаны целые числа все четные элементы
  #13

Не по теме:

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

MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.06.2011, 16:20
Привет! Вот еще темы с ответами:

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

Из целочисленного массива Х все четные элементы записать в массив Y. Удалить в массивах максимальные элементы - C++
Из целочисленного массива Х(N) все четные элементы записать в массив Y(k). Удалить в массивах максимальные элементы. В программе написать...

Линейный массив содержит целые числа: определить диапазон, в котором находятся элементы массива - C++
линейный массив содержит целые числа. определить диапазон, в котором находятся элементы массива.

Удалить из массива, в котором все элементы различны, максимальный и минимальный элементы - C++
Удалить из массива, в котором все элементы различны: а) максимальный элемент б) минимальный элемент Добавлено через 4 минуты ...


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

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

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