Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.97/34: Рейтинг темы: голосов - 34, средняя оценка - 4.97
 Аватар для p1ka4y777
2 / 2 / 2
Регистрация: 04.10.2013
Сообщений: 155

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

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

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

Уважаемые, программисты, поделитесь опытом отнисительно "файлов данных", пожалуйста...
P.S. желанно с коментариями)
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
24.10.2013, 03:01
Ответы с готовыми решениями:

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

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

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

4
 Аватар для reisal78
944 / 687 / 230
Регистрация: 28.04.2013
Сообщений: 1,925
24.10.2013, 08:23
Р. Лафоре. ООП.
ЗАПИСЬ ДАННЫХ
Следующая программа демонстрирует запись символа, целого числа, числа типа 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 / 2
Регистрация: 04.10.2013
Сообщений: 155
24.10.2013, 18:19  [ТС]
Спасибо, Вам, за труд и потерянное время, очень полезная информация для начинающего...
признаю, что мне все же сложно, и не стесняюсь просить помощи у вас... по этому все же хотелось бы увидеть код решение задания, пожалуйста... буду очень признателен...
0
Каратель
Эксперт С++
6610 / 4029 / 401
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
24.10.2013, 18:42
Цитата Сообщение от p1ka4y777 Посмотреть сообщение
признаю, что мне все же сложно
и будет сложно, ты же сам не начал что-то делать.
и не надо тут заливать про "поделитесь опытом", сразу бы написал "сделайте за меня"

Цитата Сообщение от p1ka4y777 Посмотреть сообщение
Для опытных и добрых программистов
время опытных программистов стоит денег, вы готовы платить? а с вашей задачей справится и новичек у которого есть желание чего-то добиться
1
 Аватар для p1ka4y777
2 / 2 / 2
Регистрация: 04.10.2013
Сообщений: 155
24.10.2013, 22:23  [ТС]
Учу 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
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
24.10.2013, 22:23
Помогаю со студенческими работами здесь

Переписать компоненты файла f в файл g так, чтобы в файле g числа шли в заданном порядке
Дан файл F, содержащий целые числа. Файл F содержит столько же отрицательных чисел, сколько положительных. Используя вспомогательный файл...

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

Переписать компоненты файла 1.txt в файл 3.txt так, чтобы в файле 3.txt числа шли в определенном порядке
Дан файл 1.txt, компоненты которого являются целыми числами.Файл 1.txt содержит столько же отрицательных чисел, сколько положительных....

Переписать компоненты файла f в файл g так, чтобы в файле g сначала шли положительные, потом отрицательные числа
Дан файл f, компоненты которого являются целыми числами. Используя вспомогательный файл h, переписать компоненты файла f в файл g так,...

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


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка. Рецензия / Мнение/ Перевод https:/ / **********/ gallery/ thinkpad-x220-tablet-porn-gzoEAjs . . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru