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

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

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

Работа с файлами - C++

05.09.2012, 06:34. Просмотров 487. Ответов 6
Метки нет (Все метки)

Дан текстовый файл, содержащий целые числа. Создать динамический массив, количество элементов которого – первое число текстового файла. Предусмотреть обработку исключительных ситуаций (первое число файла не является натуральным; количество чисел в файле меньше заявленного размера). Отсортировать массив по убыванию и записать результат в бинарный файл.
Помогите решить, пожалуйста, именно с файлами не могу разобраться
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
05.09.2012, 06:34     Работа с файлами
Посмотрите здесь:

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

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

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

Работа с файлами - C++
Хотелось бы разобраться как работать с файлами. Придумал программу самую простенькую, хочу загнать ее в файл. #include <stdio.h> ...

Работа с файлами - C++
Программа полностью рабочая. Кроме одного момента. #include <conio.h> #include <stdio.h> #include <iostream> #include <clocale>...

работа с файлами - C++
мне бы надо на C........... помогите пожалуйста, а то чет не могу разобраться #include <iostream> #include <stdio.h> #include...

Работа с файлами - C++
Добрый день! Помогите, пожалуйста с задачей -- я в С++ совсем чайник. Просто хотя бы подскажите каким методом делать или пример...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
alsav22
5416 / 4812 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
05.09.2012, 07:09     Работа с файлами #2
Представьте, что числа вводятся в консоли через cin >>, выводятся через cout <<. Пишите код. Потом создаёте поток для чтения из файла: ifstream inf("name_file.dat"); и поток для бинарной записи в файл: ofstream outf("name_file2.dat", ios::out | ios::binary). Заменяете в коде cin на inf, а cout на outf.
igorrr37
1641 / 1269 / 133
Регистрация: 21.12.2010
Сообщений: 1,932
Записей в блоге: 7
05.09.2012, 11:26     Работа с файлами #3
в связи с исключениями и необходимостью освобождения ресурсов решил оформить в класс
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
73
74
75
76
77
#include <iostream>
#include <fstream>
#include <stdexcept>
 
class Processor
{
public:
    Processor() : p(0){}
    void Run()
    {
        ifs.open("in.txt");
        if(ifs.is_open())
        {
            int size(0);
            ifs >> size;
            if(size <= 0) throw std::invalid_argument("size <= 0");
            int* p = new int[size], i, j, tmp;
            for(i = 0; ifs >> p[i] && i < size; ++i)
            ;
            if(i < size) throw std::invalid_argument("i < size");
            for(i = 0; i < size; ++i) // сортировка
            {
                tmp = p[i];
                for(j = i - 1; j >= 0 && p[j] < tmp; --j)
                {
                    p[j + 1] = p[j];
                }
                p[j + 1] = tmp;
            }
            for(i = 0; i < size; ++i)
            {
                std::cout << p[i] << "  ";
 
            }
            std::cout << "\np size is: " << size * sizeof(*p) << std::endl;
            ofs.open("out.binary", std::ios::binary);
            if(ofs.is_open())
            {
                ofs.write(reinterpret_cast<const char*>(p), size * sizeof(*p));
                if(ofs.fail())
                    std::cerr << "\nwrite() failed" << std::endl;
                ofs.close();
            }
            else std::cerr << "Unable to open output file" << std::endl;
            ifs.close();
        }
        else std::cerr << "Unable to open input file" << std::endl;
    }
    ~Processor()
    {
        std::cout << "\nDestructor" << std::endl;
        delete[] p;
        p = 0;
        ifs.close();
        ofs.close();
    }
private:
    std::ifstream ifs;
    std::ofstream ofs;
    int* p;
    Processor(Processor const&);
    Processor& operator=(Processor const&);
};
 
int main()
{
    try
    {
        Processor pr;
        pr.Run();
    }
    catch(std::exception const& e)
    {
        std::cerr << "Exception: " << e.what() << std::endl;
    }
    return 0;
}
Serraya
0 / 0 / 0
Регистрация: 04.04.2012
Сообщений: 20
06.09.2012, 21:40  [ТС]     Работа с файлами #4
спасибо, и все таки, вы не могли бы комментариями объяснить как именно ответ записывается в бинарный файл, трудно разбираться в чужом коде и не до конца понятной теме)
soon
2538 / 1303 / 81
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
06.09.2012, 22:17     Работа с файлами #5
igorrr37, предрекаю утечку памяти.
igorrr37
1641 / 1269 / 133
Регистрация: 21.12.2010
Сообщений: 1,932
Записей в блоге: 7
06.09.2012, 22:33     Работа с файлами #6
вообще то да, в ф-ции Run надо освобождать память
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.09.2012, 22:39     Работа с файлами
Еще ссылки по теме:

Работа с файлами - C++
Здравствуйте! Подскажите какие нибудь сторонние библиотеки для работы с файлами. Мне нужно реализовать систему сохранения/загрузки данных,...

работа с файлами - C++
Подскажите, как в текстовом файле напечатать все строки, длина которых равна заданному числу?

Работа с файлами - C++
Открыть каталог, проверить файлы на обычность, проверить в именах файлов наличие знака $, и если он есть заменить на размер файла. ...

Работа с файлами в С++ - C++
Дан текстовый файл. Нужно напечатать все строки, длина которых равна заданному числу.

Работа с файлами - C++
Задание : напишите программу, которая объединяет возможности программ “Добавление в файл” и “Поиск по файлу”. При запуске программы на...


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

Или воспользуйтесь поиском по форуму:
soon
2538 / 1303 / 81
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
06.09.2012, 22:39     Работа с файлами #7
Вообще, смысл объявлять p как член класса и использовать локальную переменную вместо него довольно плохо усваивается.
Yandex
Объявления
06.09.2012, 22:39     Работа с файлами
Ответ Создать тему
Опции темы

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