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

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

Войти
Регистрация
Восстановить пароль
 
p1ka4y777
2 / 2 / 0
Регистрация: 04.10.2013
Сообщений: 155
#1

Переписать компоненты файла f в файл g так, чтобы в файле g числа шли в следующем порядке: - C++

24.10.2013, 03:01. Просмотров 1178. Ответов 4
Метки нет (Все метки)

Есть задание: Заданный файл f, компоненты которого являются целыми числами. Ни один из компонентов файла не равна нулю. Числа в файле идут в следующем порядке: 10 положительных, 10 отрицательных и т.д. Переписать компоненты файла f в файл g так, чтобы в файле g числа шли в следующем порядке: 5 положительных, 5 отрицательных, 5 положительных, 5 отрицательных и т.д.

Уважаемые, программисты, поделитесь опытом отнисительно "файлов данных", пожалуйста...
P.S. желанно с коментариями)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.10.2013, 03:01
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Переписать компоненты файла f в файл g так, чтобы в файле g числа шли в следующем порядке: (C++):

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

Переписать файл так, чтобы сначала шли положительные, потом отрицательные числа - C++
Подскажите, пожалуйста, нужно ли что-то поменять или добавить в программу? Дан файл f, компоненты которого являются целыми числами....

Переписать файл целых чисел так, чтобы сначала шли положительные, а потом - отрицательные - C++
Дан файл целых чисел F. Используя вспомогательный файл H переписать компоненты файла F файл G так, чтобы сначала были записаны все...

Требуется вычеркнуть минимально возможное количество чисел так, чтобы оставшиеся числа шли в порядке возрастания - C++
27. Дана последовательность из N целых чисел, среди которых нет двух одинаковых. Требуется вычеркнуть минимально возможное количество чисел...

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

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

4
reisal78
676 / 588 / 139
Регистрация: 28.04.2013
Сообщений: 1,675
24.10.2013, 08:23 #2
Р. Лафоре. ООП.
ЗАПИСЬ ДАННЫХ
Следующая программа демонстрирует запись символа, целого числа, числа типа double и двух объектов типа string в дисковый файл. Вывод на экран не производится. Приведем листинг программы FORMATO.

Листинг 12.2. Программа FORMATO
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
// formato.cpp
// Форматированный вывод в файл с использованием <<
#include <fstream>        // для файлового ввода/вывода
#include <iostream>
#include <string>
using namespace std;
 
int main()
{
  char ch = 'x';
  int j = 77;
  double  d = 6.02;
  string str1 = "Kafka";  // строки без
  string str2 = "Proust"; // пробелов
 
  ofstream outfile("fdata.txt"); // создать объект ofstream
 
  outfile << ch           // вставить (записать) данные
        << j
        << ' '            // пробелы между числами
        << d
        << str1
        << ' '            // пробелы между строками
        << str2;
  cout << "Файл записан\n";
  return 0;
}
Здесь мы определили объект outfile в качестве компонента класса ofstream. В то же время мы инициализировали его файлом FDATA.TXT. Инициализация резервирует для дискового файла с данным именем различные ресурсы и получает доступ (или открывает файл) к нему. Если файл не существует, он создается. Если файл уже существует, он переписывается — новые данные в нем заменяют старые. Объект outfile ведет себя подобно cout из предыдущих программ, поэтому можно использовать операцию вставки (<<) для вывода переменных любого из стандартных типов в файл. Это так замечательно работает потому, что оператор вставки перегружен в классе ostream, который является родительским для ofstream.
Когда программа завершается, объект outfile вызывает свой деструктор, который закрывает файл, так что нам не приходится делать это явным образом.
Есть несколько потенциальных проблем с форматированным выводом в дисковые файлы. Во-первых, надо разделять числа (77 и 6.02, например) нечисловыми символами. Поскольку они хранятся в виде последовательности символов, а не в виде полей фиксированной длины, это единственный шанс узнать при извлечении, где кончается одно и начинается другое число. Во-вторых, между строками должны быть разделители — по тем же причинам. Это подразумевает, что внутри строки не может быть пробелов. В этом примере для разделения данных мы использовали пробел в обоих случаях. Радует то, что символы не нуждаются в разделителях, хотя они и являются данными фиксированной длины.
Посмотреть на результаты работы программы FORMATO можно, открыв файл FDATA.TXT с помощью программы WORDPAD или команды DOS TYPE.
ЧТЕНИЕ ДАННЫХ
Прочитать файл, созданный программой FORMATO, можно с использованием объекта типа ifstream, инициализированного именем файла. Файл автоматически открывается при создании объекта. Затем данные из него можно считать с помощью оператора извлечения (>>).
Приведем листинг программы FORMATI, которая считывает данные из файла FDATA.TXT.
Листинг 12.3. Программа FORMATI
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
// formati.cpp
// форматированное чтение из файла с помощью >>
#include <fstream>              // для файлового ввода/вывода
#include <iostream>
#include <string>
using namespace std;
 
int main()
{
  char ch;
  int j;
  double  d;
  string str1;
  string str2;
 
  ifstream infile("fdata.txt"); // создать объект ifstream 
                                // извлечь (прочесть) из него данные
  infile >> ch >> j >> d >> str1 >> str2;
 
  cout << ch << endl            // вывести данные
      << j << endl
      << d << endl
      << str1 << endl
      << str2 << endl;
  return 0;
}
Объект типа ifstream, который мы назвали infile, действует примерно так же, как cin в предыдущих программах. Если мы корректно вставляли данные в файл, то извлечь их не составит никаких проблем. Мы просто сохраняем их в соответствующих переменных и выводим на экран.
Раз вы дошли до изучения файлов, полагаю проблем "перетасовать" данные проблем не возникнет?

Кстати файлы могут быть еще бинарные. Чтение и запись в них производится немного по иначе.
1
p1ka4y777
2 / 2 / 0
Регистрация: 04.10.2013
Сообщений: 155
24.10.2013, 18:19  [ТС] #3
Спасибо, Вам, за труд и потерянное время, очень полезная информация для начинающего...
признаю, что мне все же сложно, и не стесняюсь просить помощи у вас... по этому все же хотелось бы увидеть код решение задания, пожалуйста... буду очень признателен...
0
Jupiter
Каратель
Эксперт С++
6559 / 3980 / 227
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
24.10.2013, 18:42 #4
Цитата Сообщение от p1ka4y777 Посмотреть сообщение
признаю, что мне все же сложно
и будет сложно, ты же сам не начал что-то делать.
и не надо тут заливать про "поделитесь опытом", сразу бы написал "сделайте за меня"

Цитата Сообщение от p1ka4y777 Посмотреть сообщение
Для опытных и добрых программистов
время опытных программистов стоит денег, вы готовы платить? а с вашей задачей справится и новичек у которого есть желание чего-то добиться
1
p1ka4y777
2 / 2 / 0
Регистрация: 04.10.2013
Сообщений: 155
24.10.2013, 22:23  [ТС] #5
Учу c++ не очень много времени, но что-то получилось, прошу проверьте, пожалуйста
может что-то не так или заменить нужно?
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
#include "stdafx.h"
#include <fstream>
#include <iostream>
#include <iomanip>
 
using namespace std;
 
const int offsets[] = { 0, 2, 1, 3 }, plus = 1, minus=-1;
 
fstream f, g;
int i, j, k, X;   
int main()
{
    int curr = 1;
    f.open("f", ios::in | ios::out | ios::trunc | ios::binary);
    for (k = 1; k <= 2; ++k)
    {
        for (i = 1; i <= 10; ++i)
        {
            int value = plus*curr++;
            f.write(reinterpret_cast<char*>(&value), sizeof(value));
        }
        for (j = 1; j <= 10; ++j)
        {
            int value = minus*curr++;
            f.write(reinterpret_cast<char*>(&value), sizeof(value));
        }
    }
    g.open("g", ios::in | ios::out | std::ios::trunc | std::ios::binary);
    f.seekp(0);
    for (i = 0; !f.eof(); ++i)
        for (j = 0; j < 4 && f.good(); ++j)
        {
            f.seekg((5 * (4*i + offsets[j])) * sizeof(X));
            for (k = 1; k <= 5 && f.good(); ++k)
            {
                f.read (reinterpret_cast<char*>(&X), sizeof(X));
                if (f.gcount() == sizeof(X))
                    g.write(reinterpret_cast<char*>(&X), sizeof(X));
            }
        }
    f.close();
    
    g.seekg(0);
    while (!g.eof())
    {
        g.read(reinterpret_cast<char*>(&X), sizeof(X));
        if (g.gcount() == sizeof(X)) cout << setw(4) << X;
    }
    g.close();
    system("pause");
}
P.S. отдельное спасибо Jupiter за мотивацию)
0
24.10.2013, 22:23
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.10.2013, 22:23
Привет! Вот еще темы с ответами:

Отсортировать массив целых так, чтобы сначала шли отрицательные, затем положительные числа - C++
если можно, то еще поменять порядок положительных

Переписать числа в другой массив в следующем порядке: 5 положительных, 5 отрицательных, 5 положительных, 5 - C++
Дано одномерный массив из n (n&lt;=100) действительных чисел, данные в котором записаны в таком порядке: 10 положительных, 10 отрицательных,...

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

Переписать компоненты чтобы они располагались в порядке: пять отрицательных, пять положительных - C++
Дан текстовый файл, компонентами которого являются целые числа, не равные нулю. Числа в файле идут в следующем порядке: десять...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

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