С Новым годом! Форум программистов, компьютерный форум, киберфорум
Free Pascal
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.88/8: Рейтинг темы: голосов - 8, средняя оценка - 4.88
1 / 1 / 0
Регистрация: 03.11.2015
Сообщений: 121
1

Создать новый файл, в котором чередовались бы элементы исходных файлов

14.03.2016, 07:14. Показов 1620. Ответов 14
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Даны четыре файла целых чисел разного размера с именами SA, SB, SC, SD и строка SE. Создать новый файл с именем SE, в котором чередовались бы элементы исходных файлов с одним и тем же номером . «Лишние» элементы более длинных файлов в результирующий файл не записывать.
вот код:
Pascal
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
program File49;
var
 SA,SB,SC,SD,SE: String;
 FA,FB,FC,FD,FE :File of Integer;
 El:Integer;
 
begin
  Write('SA: ');
  Readln(SA);
 
  Write('SB: ');
  Readln(SB);
 
  Write('SC: ');
  Readln(SC);
 
  Write('SD: ');
  Readln(SD);
 
  Write('SE: ');
  Readln(SE);
 
  Assign(FA,SA);
  Reset(FA);
 
  Assign(FB,SB);
  Reset(FB);
 
  Assign(FC,SC);
  Reset(FC);
 
  Assign(FD,SD);
  Reset(FD);
 
  Assign(FE,SE);
  Rewrite(FE);
 
  while (not Eof(FA)) and (not Eof(FB)) and (not Eof(FC)) and (not Eof(FD)) do
   begin
    Read(FA,El);
    Write(FE,El);
 
    Read(FB,El);
    Write(FE,El);
 
    Read(FC,El);
    Write(FE,El);
 
    Read(FD,El);
    Write(FE,El);
   end;
 
  Close(FA);
  Close(FB);
  Close(FC);
  Close(FD);
  Close(FE);
end.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
14.03.2016, 07:14
Ответы с готовыми решениями:

Создать новый файл с именем NameD, в котором чередовались бы элементы исходных файлов
Доброе время суток друзья! Надеюсь на ваше мастерство,вот значит задачка.... Даны три файла...

Работа с файлами. Даны три файла целых чисел. Создать новый файл, в котором чередовались бы элементы исходных файлов
Даны три файла целых чисел одинакового размера с именами SA, SB, SC и строка SD. Создать новый файл...

Создать файл, в котором чередовались бы элементы исходных файлов
Даны три файла целых чисел одинакового размера с именами NameA, NameB и NameC. Создать новый файл с...

Создать новый текстовый файл, являющийся объединением содержимого исходных файлов
Смысл программы Ω Создать файл, являющийся результатом конкатенации (слияния) других файлов. Имя...

14
Модератор
10064 / 5406 / 3353
Регистрация: 17.08.2012
Сообщений: 16,547
14.03.2016, 07:46 2
Тео, работает. Успешно объединяет четыре файла в один, согласно задания. Вы забыли написать, как именно проявляется неработоспособность программы.
0
1 / 1 / 0
Регистрация: 03.11.2015
Сообщений: 121
14.03.2016, 08:09  [ТС] 3
Cyborg Drone, ошибка на 24 строке. м.б я не правильно ввожу данные? можно скрин консоли?
0
Модератор
10064 / 5406 / 3353
Регистрация: 17.08.2012
Сообщений: 16,547
14.03.2016, 08:59 4
Скрин консоли нельзя. фотографии текста запрещены. Да и что Вы там желаете увидеть? Ошибок программа не выдаёт, запускается и тут же закрывается, попутно создав пятый файл. Что за ошибка у Вас? Так и не написали. Скорее всего, Вы вводите имена несуществующих файлов, и, естественно, программа первый же файл не находит.

У меня тут возникло подозрение... А четыре файла типа file of integer Вы создали? Замечание: файлы этого типа создать блокнотом нельзя, нужно программно.
0
1 / 1 / 0
Регистрация: 03.11.2015
Сообщений: 121
14.03.2016, 09:45  [ТС] 5
Cyborg Drone, немного не понимаю
0
Модератор
10064 / 5406 / 3353
Регистрация: 17.08.2012
Сообщений: 16,547
14.03.2016, 10:06 6
А чего тут не понимать? Файлов нет, а Вы их пытаетесь прочитать. Как можно прочитать то, чего нет?

Для того, чтобы файл можно было успешно открыть для чтения с помощью процедуры reset(f), этот самый файл должен существовать. Проще говоря, его можно успешно увидеть в проводнике windows. Причём существовать файл обязательно должен ещё до запуска программы, если, конечно, этот файл в программе не создаётся.

У Вас ни один из четырёх файлов в программе не создаётся. Итак, ещё раз: перед тем, как Вы запустили программу, Вы создали четыре типизированных файла (с помощью специально для этой цели Вами написанной отдельной программы), запомнили их имена (возможно, с полным путём к каждому файлу), затем запустили якобы ошибочную программу, выложенную Вами в этой теме, ввели имена, именно те, которые запомнили, и программа выдала ошибку? Или всё же Ваши действия не соответствовали всем указанным мною действиям?
0
1 / 1 / 0
Регистрация: 03.11.2015
Сообщений: 121
17.03.2016, 09:11  [ТС] 7
Cyborg Drone, я создал файлы FA,FB,FC,FD. т.е вот сюда Write('SA: ');
Readln(SA); я должен ввести FA?

Добавлено через 4 минуты
Cyborg Drone, просто я новичок , и прошу помочь разобраться во всём этом
0
Хитрая блондиночка $)
1472 / 988 / 399
Регистрация: 21.12.2015
Сообщений: 3,785
17.03.2016, 09:13 8
Цитата Сообщение от Тео Посмотреть сообщение
я создал файлы
Они не текстовые случайно?
0
1 / 1 / 0
Регистрация: 03.11.2015
Сообщений: 121
17.03.2016, 09:23  [ТС] 9
Hikari, а какие нужны? ну да, расширение txt
0
Хитрая блондиночка $)
1472 / 988 / 399
Регистрация: 21.12.2015
Сообщений: 3,785
17.03.2016, 09:57 10
Цитата Сообщение от Тео Посмотреть сообщение
а какие нужны?
У тебя File of Integer;
А это двоичный файл.
Если тектовый то нужно было писать Text или TextFile смотря что у тебя за паскаль.
И если файл текстовый наверное стоит заменить Read() на Readln() поместив в файл каждое число на новую строку.
0
Модератор
Эксперт Pascal/DelphiЭксперт NIX
7795 / 4618 / 2831
Регистрация: 22.11.2013
Сообщений: 13,114
Записей в блоге: 1
17.03.2016, 16:49 11
Цитата Сообщение от Hikari Посмотреть сообщение
наверное стоит заменить Read() на Readln() поместив в файл каждое число на новую строку
даже в этом случае не стоит менять Read() на Readln().

Добавлено через 3 минуты
ReadLn нужен, если остаток входной строки не нужно читать/разбирать, даже если там что-то есть. Во всех остальных случаях чтения числовых данных Read сам перейдет на новую строку.
0
Хитрая блондиночка $)
1472 / 988 / 399
Регистрация: 21.12.2015
Сообщений: 3,785
17.03.2016, 17:10 12
Цитата Сообщение от bormant Посмотреть сообщение
Во всех остальных случаях чтения числовых данных Read сам перейдет на новую строку.
Я не против, и возможно ошибаюсь, но попадались мне случаи, когда read() не делал этого именно текстовых файлах. Возможно зависит от версии паскаля. Поэтому я лично для себя четко провела грань: Для текстовиков - только Readln() для бинарников - только read()\blockread()
0
Модератор
Эксперт Pascal/DelphiЭксперт NIX
7795 / 4618 / 2831
Регистрация: 22.11.2013
Сообщений: 13,114
Записей в блоге: 1
17.03.2016, 17:58 13
Hikari,
для числовых данных там проблема несколько другого свойства, именно из-за нее введены SeekEoF и SeekEoLn.

Суть проблемы: если после последнего числа во входном потоке есть пробельные символы (разделитель строк -- он же возврат каретки+перевод строки либо по отдельности -- входит в их число), то из потока будет прочитан лишний 0. Если для проверки на конец файла используется EoF, то в этом случае указатель стоит не в конце файла, EoF=False; но стоит попытаться прочитать очередное число, Read пропустит все пробельные символы, упрется в конец файла, закончит чтение, считываемая числовая переменная будет равна 0.
Комбинация EoF/ReadLn способна помочь в этой ситуации только в одном случае, когда после последнего числа стоит перевод строки и конец файла, именно в этой ситуации Read даст отсутствующий в данных 0. Если же перед концом файла есть хоть один пробельный символ, ошибочное поведение будет точно такое же, как и у Read.

SeekEoF полностью избавляет от подобной ошибки, сдвигая указатель до первого непробельного символа перед проверкой на EoF.

Цитата Сообщение от Hikari Посмотреть сообщение
попадались мне случаи, когда read() не делал этого именно текстовых файлах.
Здесь речь про чтение строковой переменной (string) -- в этом случае, в отличие от числовых переменных, Read сам не перейдет на новую строку без ReadLn. Но мы же сейчас про числа, не про строки?

То есть, для TP/FPC вполне годится:
Pascal
1
2
3
4
5
6
7
8
var
  fa, fb, fc, fd, fe: Text;
  a, b, c, d: Integer;
...
while not SeekEoF(fa) and not SeekEoF(fb) and not SeekEoF(fc) and not SeekEoF(fd) do begin
  Read(fa,a); Read(fb,b); Read(fc,c); Read(fd,d); WriteLn(fe, a, b, c, d);
end;
...
Добавлено через 17 минут
В сухом остатке:
Pascal
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
const W=4;
var
 f: array [1..5] of file of Integer;
 i, j, e: Integer;
 b: Boolean;
 s: String;
begin
  Randomize;
  for i:=1 to 5 do begin
    Write('S',Chr(Ord('A')+i-1),': '); ReadLn(s); 
    Assign(f[i],s); Rewrite(f[i]);
  end;
  for i:=1 to 4 do begin
    Write('F',Chr(Ord('A')+i-1),':');
    for j:=1 to 5+Random(6) do begin
      e:=Random(1000); Write(f[i],e); Write(e:W);
    end; WriteLn;
  end;
  for i:=1 to 4 do Seek(f[i],0);
  WriteLn('FE:');
  repeat
    b:=False; for i:=1 to 4 do b:=b or EoF(f[i]);
    if b then Break;
    for i:=1 to 4 do begin
      Read(f[i],e); Write(f[5],e); Write(e:W);
    end; WriteLn;
  until False;
  for i:=1 to 5 do Close(f[i]);
end.
0
Хитрая блондиночка $)
1472 / 988 / 399
Регистрация: 21.12.2015
Сообщений: 3,785
17.03.2016, 18:56 14
Цитата Сообщение от bormant Посмотреть сообщение
Но мы же сейчас про числа, не про строки?
Как я понимаю - про строковое представление чисел. Причем в виде нескольких в одной строке.
0
Модератор
Эксперт Pascal/DelphiЭксперт NIX
7795 / 4618 / 2831
Регистрация: 22.11.2013
Сообщений: 13,114
Записей в блоге: 1
17.03.2016, 19:01 15
Цитата Сообщение от Hikari Посмотреть сообщение
про строковое представление чисел. Причем в виде нескольких в одной строке
В данном контексте это не важно. Имеет значение только тип считываемой переменной:
Pascal
1
2
3
4
5
6
var
  s: String;
  n: Integer;
...
  Read(s); {не перейдет на другую строку без отдельного ReadLn}
  Read(n); {пропустит пробельные символы, включая разделители строк, до первого непробельного}
0
17.03.2016, 19:01
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
17.03.2016, 19:01
Помогаю со студенческими работами здесь

Файлы. Создать новый текстовый файл, являющийся объединением содержимого исходных файлов
Помогите пожалуйсто с программой 1.Даны два текстовых файла с именами Name1 и Name2. Создать новый...

Используя стек, создать другой текстовый файл, в котором бы числа и слова чередовались
Помогите пожалуйста решить задачу,Создать текстовые файлы, содержащие один текстовую, а другой...

написать функцию которая на основе двух списков формирует новый список в котором чередуются элементы исходных
написать функцию которая на основе двух списков формирует новый список в котором чередуются...

Файлы: В новый файл записать все латинские буквы исходных файлов
3. Даны символьные файлы F и G. В файл H записать все латинские буквы (большие и маленькие) файлов...

Cравнить два файла, создать новый файл, в котором одинаковые данные сравниваемых файлов должны быть заполнены "нулями"
есть код using System; using System.IO; using System.Text; using System.Windows.Forms; ...

Файл: Создать новый файл, в котором будут содержаться фамилии с итоговой оценкой
Дан файл со списком класса и несколькими оценками на каждого в виде: Иванов 3 4 5 5 4 Петров 4 4...


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

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Новые блоги и статьи
Счётчик на базе сумматоров + регистров и генератора сигналов согласования.
Hrethgir 07.01.2025
Создан с целью проверки скорости асинхронной логики: ранее описанного сумматора и предополагаемых fast регистров. Регистры созданы на базе ранее описанного, предполагаемого fast триггера. То-есть. . .
Как перейти с Options API на Composition API в Vue.js
BasicMan 06.01.2025
Почему переход на Composition API актуален В мире современной веб-разработки фреймворк Vue. js продолжает эволюционировать, предлагая разработчикам все более совершенные инструменты для создания. . .
Архитектура современных процессоров
inter-admin 06.01.2025
Процессор (центральный процессор, ЦП) является основным вычислительным устройством компьютера, которое выполняет обработку данных и управляет работой всех остальных компонентов системы. Архитектура. . .
История создания реляционной модели баз данных, правила Кодда
Programming 06.01.2025
Предпосылки создания реляционной модели В конце 1960-х годов компьютерная индустрия столкнулась с серьезными проблемами в области управления данными. Существовавшие на тот момент модели данных -. . .
Полезные поделки на Arduino, которые можно сделать самому
raxper 06.01.2025
Arduino как платформа для творчества Arduino представляет собой удивительную платформу для технического творчества, которая открывает безграничные возможности для создания уникальных проектов. Эта. . .
Подборка решений задач на Python
IT_Exp 06.01.2025
Целью данной подборки является предоставление возможности ознакомиться с различными задачами и их решениями на Python, что может быть полезно как для начинающих, так и для опытных программистов. . . .
С чего начать программировать микроконтроллер­­ы
raxper 06.01.2025
Введение в мир микроконтроллеров Микроконтроллеры стали неотъемлемой частью современного мира, окружая нас повсюду: от простых бытовых приборов до сложных промышленных систем. Эти маленькие. . .
Из чего собрать игровой компьютер
inter-admin 06.01.2025
Сборка игрового компьютера требует особого внимания к выбору комплектующих и их совместимости. Правильно собранный игровой ПК не только обеспечивает комфортный геймплей в современных играх, но и. . .
Обновление сайта www.historian.b­y
Reglage 05.01.2025
Обещал подвести итоги 2024 года для сайта. Однако начну с того, что изменилось за неделю. Добавил краткий урок по последовательности действий при анализе вредоносных файлов и значительно улучшил урок. . .
Как использовать GraphQL в C# с HotChocolate
Programming 05.01.2025
GraphQL — это современный подход к разработке API, который позволяет клиентам запрашивать только те данные, которые им необходимы. Это делает взаимодействие с API более гибким и эффективным по. . .
Модель полного двоичного сумматора с помощью логических операций (python)
AlexSky-coder 04.01.2025
def binSum(x:list, y:list): s=^y] p=x and y for i in range(1,len(x)): s. append((x^y)^p) p=(x and y)or(p and (x or y)) return s x=list() y=list()
Это мы не проходили, это нам не задавали...(аси­­­­­­­­­­­­­­­­­­­­­­­­­­х­р­о­н­­н­­­ы­­й счётчик с управляющим сигналом зад
Hrethgir 04.01.2025
Асинхронный счётчик на сумматорах (шестиразрядный по числу диодов на плате, но наверное разрядов будет больше - восемь или шестнадцать, а диоды на старшие), так как триггеры прошли тестирование и. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru