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

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

Восстановить пароль Регистрация
 
lrf
0 / 0 / 0
Регистрация: 02.03.2014
Сообщений: 26
29.05.2014, 22:07     работа с файлами #1
закоментите прогу поподробнее, пожалуйста)

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
#include <iostream>
#include <fstream>
#include <cstdlib>
#include <cmath>
using namespace std; 
 
bool Prime(int const num)// проверка числа на простоту
{
    for(int i = 2; i <= static_cast<int>(sqrt(num)); ++i)
    {
        if(num % i == 0)
            return false;
    }
    return 1 != num;
}
 
int main()
{
    setlocale(LC_ALL,"Russian");
    ifstream ifs("1.txt", ios::binary);// открытие бинарного файла на чтение
    if(ifs.is_open())//проверка открыт ли файл
    {
        ifs.seekg(0, ios::end);// ставим геттер в конец файла
        int len = ifs.tellg();// узнаём длину файла в байтах
        ifs.seekg(ios::beg);// ставим геттер обратно в начало файла
        int* pos = new int[len / sizeof(int)], *neg = new int[len / sizeof(int)];// выделение памяти под динамические массивы положительных и отрицательных простых чисел
        int tmp, czero, i, ipos, ineg;
        for(i = 0, ipos = 0, ineg = 0, czero = 0; i < len / sizeof(int); ++i)// в цикле считываем числа с файла
        {
            ifs.read(reinterpret_cast<char*>(&tmp), sizeof(tmp));// считываем очередное число в tmp
            if(!tmp)
                ++czero;// если число нуль то увеличиваем счётчик
            else if(Prime(abs(tmp))) //модуль числа
            {
                (tmp > 0 ? pos[ipos++] : neg[ineg++]) = tmp;// если число простое то записываем его в соответствующий массив
            }
        }
        ofstream ofs("2.txt");// открытие текстового файла на запись
        if(ofs.is_open())
        {
            // ввод данных в файл
            ofs << "Массив положительных простых чисел: ";
            for(i = 0; i < ipos; ++i)
                ofs << pos[i] << ' ';
            ofs << "\n\nМассив отрицательных простых чисел: ";
            for(i = 0; i < ineg; ++i)
                ofs << neg[i] << ' ';
            ofs << "\n\nКоличество нулевых элементов: " << czero << '\n';
            
            ofs.close();// закрытие файла
        }
        else
            cerr << "Невозможно открыть выходной файл\n";
        // освобождение памяти из-под массивов
        delete[] pos;
        pos = 0;
        delete[] neg;
        neg = 0;
 
        ifs.close();
    }
    else
        cerr << "Невозможно открыть выходной файл\n";
    system("pause");
    return 0;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.05.2014, 22:07     работа с файлами
Посмотрите здесь:

Работа с файлами C++
C++ Работа с файлами
C++ работа с файлами
C++ РАБОТА С ФАЙЛАМИ
работа с файлами C++
C++ работа с файлами на с++
C++ Работа с файлами
C++ Работа с файлами

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать тему
Опции темы

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