Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 05.11.2013, 01:11   #1
Jane_Air
Пользователь
 
Регистрация: 03.11.2013
Сообщений: 40
По умолчанию Делфи.Файлы. Два текста в файлах содержат растущие последовательности целых чисел. Вывести в третий файл общие значения

Написать процедуру
Два текста в файлах содержат растущие последовательности целых чисел,разделенных пропусками. Вывести в третий файл общие значения.
Помогите,очень прошу..
Jane_Air вне форума Ответить с цитированием
Старый 05.11.2013, 05:19   #2
SaLoKiN
Форумчанин
 
Аватар для SaLoKiN
 
Регистрация: 19.09.2013
Сообщений: 597
По умолчанию

А где код? Что получилось уже?
Сделал сам, помоги другому!
Что-то работает не так? Дебаггер в помощь!!!
SaLoKiN вне форума Ответить с цитированием
Старый 05.11.2013, 12:36   #3
Jane_Air
Пользователь
 
Регистрация: 03.11.2013
Сообщений: 40
По умолчанию

Не выводит в третий файл
Код:
program Project6;

{$APPTYPE CONSOLE}

uses
  SysUtils;

const Nmax=100000;
type mass1=array[1..Nmax]of integer;
type mass2=array[1..Nmax]of integer;
type mass3=array[1..Nmax]of integer;
var f1,f2,f3:text;
    a,i,b,j,x,y,ij,z:integer;
    m1:mass1;
    m2:mass2;
    m3:mass3;
begin
i:=1;j:=1;ij:=1;

assign(f1,'f1.txt');
assign(f2,'f2.txt');
assign(f3,'f3.txt');

reset(f1);
reset(f2);
rewrite(f3);

while seekeof(f1) do
    begin
      read(f1,a);
      m1[i]:=a;
      inc(i);
    end;
x:=i-1;

while seekeof(f2) do
    begin
      read(f2,b);
      m2[j]:=b;
      inc(j);
    end;
y:=j-1;

for i:=1 to x do
    for j:=1 to y do
          begin
            if m1[i]=m2[j]
            then begin
                        m3[ij]:=m1[i];
                        inc(ij);
                        z:=ij;
                 end;
          end;
for ij:=1 to z do write (f3,m3[ij]);

close(f1);
close(f2);
close(f3);

readln;
end.

Последний раз редактировалось Jane_Air; 05.11.2013 в 12:38.
Jane_Air вне форума Ответить с цитированием
Старый 05.11.2013, 12:42   #4
SaLoKiN
Форумчанин
 
Аватар для SaLoKiN
 
Регистрация: 19.09.2013
Сообщений: 597
По умолчанию

а чего не работает та?
Сделал сам, помоги другому!
Что-то работает не так? Дебаггер в помощь!!!
SaLoKiN вне форума Ответить с цитированием
Старый 05.11.2013, 12:43   #5
Vanta11a
Lawful Evil
Участник клуба
 
Аватар для Vanta11a
 
Регистрация: 13.05.2008
Сообщений: 1,208
По умолчанию

Почему бы вместо
Код:
for i:=1 to x do
    for j:=1 to y do
          begin
            if m1[i]=m2[j]
            then begin
                        m3[ij]:=m1[i];
                        inc(ij);
                        z:=ij;
                 end;
          end;
for ij:=1 to z do write (f3,m3[ij]);
не сделать
Код:
for i:=1 to x do
    for j:=1 to y do
          begin
            if m1[i]=m2[j]
            then begin
                        write (f3,m1[i]);
                 end;
          end;
?
Алгоритм - бесплатен. Поиск багов - бесплатен. Реализация алгоритма - за отдельную плату.
На форуме помогают советами и объясняют, а не пишут на халяву программы, лабы, курсачи и т.д. (c)
Vanta11a вне форума Ответить с цитированием
Старый 05.11.2013, 12:56   #6
Jane_Air
Пользователь
 
Регистрация: 03.11.2013
Сообщений: 40
По умолчанию

Цитата:
Почему бы вместо
Код:

for i:=1 to x do
for j:=1 to y do
begin
if m1[i]=m2[j]
then begin
m3[ij]:=m1[i];
inc(ij);
z:=ij;
end;
end;
for ij:=1 to z do write (f3,m3[ij]);

не сделать
Код:

for i:=1 to x do
for j:=1 to y do
begin
if m1[i]=m2[j]
then begin
write (f3,m1[i]);
end;
end;

?
Спасибо,уже поменяла!)

Цитата:
а чего не работает та?
Как сделать что бы в конце лишний ноль не выводило?
Jane_Air вне форума Ответить с цитированием
Старый 05.11.2013, 13:03   #7
SaLoKiN
Форумчанин
 
Аватар для SaLoKiN
 
Регистрация: 19.09.2013
Сообщений: 597
По умолчанию

хм...а после исправления, все равно выводит?
Сделал сам, помоги другому!
Что-то работает не так? Дебаггер в помощь!!!
SaLoKiN вне форума Ответить с цитированием
Старый 05.11.2013, 13:06   #8
Jane_Air
Пользователь
 
Регистрация: 03.11.2013
Сообщений: 40
По умолчанию

После того,что посоветовали,все равно выводило..
Но я уже нашла ошибку!Спасибо))

Вместо seekeof написала not eof
Jane_Air вне форума Ответить с цитированием
Старый 05.11.2013, 13:13   #9
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,341
По умолчанию

А если захочу подать файл с 100001 числом?
Условие подталкивает решать без всяких дополнительных массивов.
Код:
if (not eof(f1) and not eof(f2)) then
begin
    read(f1, a);
    read(f2, b);
    while (not eof(f1) and not eof(f2)) do
    begin
        if a < b then
            read(f1, a)
        else if a > b then
            read(f1, b);
        else
        begin
            write(f3, a, ' ');
            read(f1, a);
            read(f2, b);
        end;
    end;
    if a = b then
        write(f3, a);
end;
Если ничего не перепутал, то это весь код практически.
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA вне форума Ответить с цитированием
Старый 05.11.2013, 13:26   #10
Jane_Air
Пользователь
 
Регистрация: 03.11.2013
Сообщений: 40
По умолчанию

Цитата:
А если захочу подать файл с 100001 числом?
Я просто не знаю,какое должно быть максимальное количество элементов..поэтому написала более менее большое число..)
Цитата:
Код:
if (not eof(f1) and not eof(f2)) then
begin
    read(f1, a);
    read(f2, b);
    while (not eof(f1) and not eof(f2)) do
    begin
        if a < b then
            read(f1, a)
        else if a > b then
            read(f1, b);
        else
        begin
            write(f3, a, ' ');
            read(f1, a);
            read(f2, b);
        end;
    end;
    if a = b then
        write(f3, a);
end
В третий файл вывело не все числа(
Jane_Air вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Даны два целых числа A и B (A < B). Найти произведение всех целых чисел от A до B включительно. nadyaH Помощь студентам 10 29.10.2013 09:08
Паскаль(Файлы). Два типизированных файла одинакового размера. Получить третий файл как сумму элементов. Артемdgty Помощь студентам 8 08.10.2013 20:32
дано файл целых чисел(задача на файлы) SMASHBRAIN C# (си шарп) 0 30.05.2013 17:42
Типизированные файлы - Дан файл целых чисел, найти "Сумму чисел, начинающихся с цифры 1" (Паскаль) 777pro777 Помощь студентам 1 27.03.2012 08:42
Два текстовых файла. Записать в третий те строки, которые есть и в первом, и во втором файлах (Паскаль) dark999 Паскаль, Turbo Pascal, PascalABC.NET 4 28.03.2011 21:41