• Добро пожаловать на компьютерный форум Tehnari.ru. Здесь разбираемся с проблемами ПК и ноутбуков: Windows, драйверы, «железо», сборка и апгрейд, софт и безопасность. Форум работает много лет, сейчас он переехал на новый движок, но старые темы и аккаунты мы постарались сохранить максимально аккуратно.

    Форум не связан с магазинами и сервисами – мы ничего не продаём и не даём «рекламу под видом совета». Отвечают обычные участники и модераторы, которые следят за порядком и качеством подсказок.

    Если вы у нас впервые, загляните на страницу о форуме и правила – там коротко описано, как задать вопрос так, чтобы быстро получить ответ. Чтобы создавать темы и писать сообщения, сначала зарегистрируйтесь, а затем войдите под своим логином.

    Не знаете, с чего начать? Создайте тему с описанием проблемы – подскажем и при необходимости перенесём её в подходящий раздел.
    Задать вопрос Новые сообщения Как правильно спросить
    Если пришли по старой ссылке со старого Tehnari.ru – вы на нужном месте, просто продолжайте обсуждение.

Типизированные файлы

  • Автор темы Автор темы юра 3
  • Дата начала Дата начала

юра 3

Ученик
Регистрация
30 Дек 2008
Сообщения
9
Реакции
0
Баллы
0
Типизированные файлы

Помогите исправить задачу пожалуйста:

Даны три файла целых чисел одинакового размера с именами NameA, NameB и NameC. Создать новый файл с именем NameD, в котором чередовались бы элементы исходных файлов с одним и тем же номером: A0, B0, C0, A1, B1, C1, A2, B2, C2, ... .

program laba12;
uses crt;
var a,b,c,d:file of integer;
x,p,i,q,w,e:integer;

begin
clrscr;
assign(a,'NameA.dat');
rewrite(a);
assign(b,'NameB.dat');
rewrite(b);
assign(c,'NameC.dat');
rewrite(c);
assign(d,'NameD.dat');
rewrite(d);

randomize;
for i:=1 to 10 do
begin
q:=random (10)-5;
p:=random (10)-2;
write(a,p);
end;

write(b,w);
write(c,e);
close(a);close(b);close(c);
reset(a);reset(b);reset(c);

While not eof(a) and not eof(b) and not eof (c) do
begin
read(a,p);
write(d,p);
read(b,p);
write(d,p);
read(c,p);
write(d,p)
end;
close(a);
close(b);
close(c);
close(d);
reset(d);
while not eof(d) do
begin
read(d,x);
write(x);
end;}
readln;
end.
 
Вместо
for i:=1 to 10 do
begin
q:=random (10)-5;
p:=random (10)-2;
write(a,p);
end;
write(b,w);
write(c,e);
наберите
Код:
for i:=1 to 10 do
   begin
   q:=random (10)-5;
   p:=random (10)-2;
g:=random (10)-2;
   write(a,p);
write(b,q);
      write(c,g);
   end;
и не забудьте определить типы соответствующих переменных в разделе var (можно еще упростить решение)

В первом цикле While достаточно оставить только один критерий, так как по условию задачи все исходные файлы одинакового размера.

Также стоит убрать фигурную скобку после end; в конце программы
 
Вот сделал ну все ровно что-то не так

program laba12;
uses crt;
var a,b,c,d:file of integer;
x,p,i,q,w,e,g,n:integer;

begin
clrscr;
assign(a,'NameA.dat');
rewrite(a);
assign(b,'NameB.dat');
rewrite(b);
assign(c,'NameC.dat');
rewrite(c);
assign(d,'NameD.dat');
rewrite(d);
write('vved n=');
readln(n);
randomize;
for i:=1 to 10 do
begin
q:=random (10)-5;
p:=random (10)-2;
g:=random (10)-2;
write(a,p);
write(b,q);
write(c,g);
end;

write(b,w);
write(c,e);
close(a);close(b);close(c);
reset(a);reset(b);reset(c);

While not eof(a) and not eof(b) and not eof (c) do
begin
read(a,p);
write(d,p);
read(b,p);
write(d,p);
read(c,p);
write(d,p)
end;
close(a);
close(b);
close(c);
close(d);
reset(d);
while not eof(d) do
begin
read(d,x);
write(x, ' ');
end;
readln;
end.
 
Вот сделал ну все ровно что-то не так

program laba12;
uses crt;
var a,b,c,d:file of integer;
x,p,i,q,w,e,g,n:integer;

begin
clrscr;
assign(a,'NameA.dat');
rewrite(a);
assign(b,'NameB.dat');
rewrite(b);
assign(c,'NameC.dat');
rewrite(c);
assign(d,'NameD.dat');
rewrite(d);
write('vved n=');
readln(n);

randomize;
for i:=1 to 10 do
begin
q:=random (10)-5;
p:=random (10)-2;
g:=random (10)-2;
write(a,p,' ');
write(b,q,' ');
write(c,g,' ');
end;

write(b,w);
write(c,e);

close(a);close(b);close(c);
reset(a);reset(b);reset(c);

While not eof(a) and not eof(b) and not eof (c) do
begin
read(a,p);
write(d,p,' ');
read(b,p);
write(d,p,' ');
read(c,p);
write(d,p,' ')
end;
close(a);
close(b);
close(c);
close(d);
reset(d);
while not eof(d) do
begin
read(d,x);
write(x, ' ');
end;
close(d);
readln;
end.

Это убрать (зачем оно там - непонятно; возможно, ошметки других вариантов), это добавить, чтобы числа не слеплялись.
P.S. Пожелание на будущее - более осмысленно выбирать идентификаторы. Например, насколько читабельнее была бы программа, если файлы назвать, например, f1, f2, f3, f4, а числа, соответственно, - a1, a2, a3, a4, ну или как-нибудь в этом роде. А то у Вас что файлы, что числа - a, b, c, p, q и т.п.
 
Всё равно она не правильно работает,помогите доделать плиз,уж очень срочно надо.
 
Всё равно она не правильно работает,помогите доделать плиз,уж очень срочно надо.

А, прошу прощения - не досмотрел, что файлы у Вас типа file of Integer а не Text, как я привык. В таком случае уберите все синие вставки
(,' '), кроме последней (close(d)). Всё заработает.
 
Я всё исправил,она работает,но выводит ерунду,набор цифр каких-то.
 
Даны три файла целых чисел одинакового размера с именами NameA, NameB и NameC. Создать новый файл с именем NameD, в котором чередовались бы элементы исходных файлов с одним и тем же номером
Внимательно прочитайте исходное задание и поймете, что вам дано три файла из чисел, которые вы генерируете случайным образом, а нужно получить файл из чисел, которые содержатся в сгенерированных вами трех файлах.
 
И у меня программа стала работать, но после того, как я убрала все ' '. Иначе выдавала ошибку: нельзя преобразовать тип char к типу integer.
 
И у меня программа стала работать, но после того, как я убрала все ' '. Иначе выдавала ошибку: нельзя преобразовать тип char к типу integer.

Да говорю же - мой грех. Всегда тип файлов задаю TEXT, а тут, поди ж ты - не досмотрел, что задан иной тип.
А вообще, для наглядности, стоило бы выводить также содержимое трех исходных файлов, тогда сразу стало бы нагляднее. Кому интересно - попробуйте.
 
Попробую)))
 
Назад
Сверху