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

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

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 27.10.2007, 17:52   #1
Sergik1977
Пользователь
 
Регистрация: 18.10.2007
Сообщений: 12
По умолчанию процедура

Не могу заставить процедуру работать, туплю, помогите господа программисты разобраться в задаче. В общем если не связываться с процедурой то эта программа работает а с процедурой у меня не клеится. Уже как только не извращался, силы меня покинули.



{Описать процедуру append(f,g,h) от трех файлов типа ряд,
которая записывает в файл F сначала все элементы файла g, a затем все элементы файла h.}

Код:
Var
I,N,S : Integer;
A,B,C: File Of integer;


Begin
Assign(A,'A.lst');                              {Связываем переменную A с файлом A.lst}
Writeln('Enter size file A');                   {запрашиваем количество элементов файла А}
Readln(N);                                      {Вводим данные}
Rewrite(A);                                     {Создаем файл A для записи в него данных}
For I:=1 To N Do
Begin
Writeln('DATA A',i);
Readln(S);
Write(A,S)                                     {Записываем данные в файл А}
End;
Close(A);
Assign(B,'B.lst');                            {Связываем переменную B с файлом B.lst}
Writeln('Enter size  file B');                {запрашиваем количество элементов файла B}
Readln(N);                                    {Вводим данные}
Rewrite(B);                                   {Создаем файл B для записи в него данных}
For I:=1 To N Do
Begin
Writeln('DATA B',i);
Readln(S);
Write(B,S)                                       {Записываем данные в файл B}
End;
Close(B);
{кончинита для ввода}
Assign(C,'C.lst');                               {Связываем переменную C с файлом C.lst}
Rewrite(C);                                      {Создаем файл C для записи в него данных }
Reset(A);                                        {Открываем файл А для чтения }
While Not(Eof(A)) Do
Begin
Read(A,S);
Write(C,S);                                       {А записываем в файл С }

end;
Close(A);
Reset(B);                                          {Открываем файл B для чтения}
While Not(Eof(B)) Do
Begin
Read(B,S);
Write(C,S);                                         {B записываем в файл С }
end;
Close(B);
Close(C);
{роды прошли успешно пуповину пора резать}
Reset(C);                                           {открываем файл С и считываем с него все данные}
Writeln; Writeln('DATA C:');
While Not(Eof(C)) Do
Begin
Read(C,S);
Writeln(S);
End;
Close(C);
Readln;
end.

Последний раз редактировалось Alex21; 27.10.2007 в 18:32. Причина: теги [/code]
Sergik1977 вне форума Ответить с цитированием
Старый 27.10.2007, 17:58   #2
BOBAH13
Android Developer
Старожил Подтвердите свой е-майл
 
Аватар для BOBAH13
 
Регистрация: 19.02.2007
Сообщений: 3,708
По умолчанию

Может перед всеми reset, еще раз assign делать ? Я просто в паскале на счет файлов уже и не помню все на Api...

Последний раз редактировалось BOBAH13; 27.10.2007 в 18:01.
BOBAH13 вне форума Ответить с цитированием
Старый 28.10.2007, 06:06   #3
Sergik1977
Пользователь
 
Регистрация: 18.10.2007
Сообщений: 12
По умолчанию

Как что не работает))) Все работает но в задании сказано что должна быть сделана процедура! Внизу тоже самое только с процедурой и не рабочей прогой. Надо заставить работать процеду!!


Описать процедуру append(f,g,h) от трех файлов типа ряд,
которая записывает в файл F сначала все элементы файла g, a затем все элементы файла h.}

Код:
type dura=File Of integer;
Var
I,N,S : Integer;
A,B,C: File Of integer;
Procedure app(Var A1,B1,C1:dura);
Var I,N,S : Integer;
Begin
Assign(C1,'C.lst');                               {Связываем переменную C1 с файлом C.lst}
Rewrite(C1);                                      {Создаем файл C для записи в него данных }
Assign(A1,'A.lst');                               {Связываем переменную A1 с файлом A.lst}
Reset(A1);                                        {Открываем файл А для чтения }
While Not(Eof(A1)) Do
Begin
Read(A1,S);
Write(C1,S);                                       {А записываем в файл С }
end;
Close(A1);
Assign(B1,'B.lst');                            {Связываем переменную B1 с файлом B.lst}
Reset(B1);                                          {Открываем файл B для чтения}
While Not(Eof(B1)) Do
Begin
Read(B1,S);
Write(C1,S);                                         {B записываем в файл С }
end;
Close(B1);
Close(C1);
end;

Begin
Assign(A,'A.lst');                              {Связываем переменную A с файлом A.lst }
Writeln('Enter size file A');                   {запрашиваем количество элементов файла А}
Readln(N);                                      {Вводим данные}
Rewrite(A);                                     {Создаем файл A для записи в него данных}
For I:=1 To N Do
Begin
Writeln('DATA A',i);
Readln(S);
Write(A,S)                                     {Записываем данные в файл А}
End;
Close(A);
Assign(B,'B.lst');                            {Связываем переменную B с файлом B.lst}
Writeln('Enter size  file B');                {запрашиваем количество элементов файла B}
Readln(N);                                    {Вводим данные}
Rewrite(B);                                   {Создаем файл B для записи в него данных}
For I:=1 To N Do
Begin
Writeln('DATA B',i);
Readln(S);
Write(B,S)                                       {Записываем данные в файл B}
End;
Close(B);
{роды прошли успешно}
app(A,B,C);
Reset(C);                                           {открываем файл С и считываем с него все данные}
Writeln; Writeln('DATA C:');
While Not(Eof(C)) Do
Begin
Read(C,S);
Writeln(S);
End;
Close(C);
Readln;
end.
Для оформления кода используй теги code

Последний раз редактировалось Alex21; 28.10.2007 в 10:21.
Sergik1977 вне форума Ответить с цитированием
Старый 28.10.2007, 12:48   #4
Maslan
Форумчанин
 
Регистрация: 15.10.2007
Сообщений: 147
По умолчанию

Тогда использование такое:
Код:
Program test;
Uses crt;
Type intfile=File of integer;
Procedure append(f,g,h:intfile);
Begin
// тут то же самое, что в первом посте с минимальными поправками
End;

Var x,y,z:intfile;
Begin
 append(x,y,z)
End.

Но я так и не понял - проблема-то в ЧЁМ?
Maslan вне форума Ответить с цитированием
Старый 28.10.2007, 13:15   #5
Sergik1977
Пользователь
 
Регистрация: 18.10.2007
Сообщений: 12
По умолчанию

У меня было задание:
Описать процедуру append(f,g,h) от трех файлов типа ряд,
которая записывает в файл F сначала все элементы файла g, a затем все элементы файла h.}

Я его сделал как показал в 1 своем посте и она работает эта прога, немного другие переменные отличные от задания, но на урожай это не влияет. Но потом я понял что от меня требуется сделать это все через процедуру, то бишь чтоб был оператор «PROCEDURE», и во втором своем посте я показал как я делал тоже самое но пытаясь использовать процедуру и у меня ни хрена не вышло. Так вот сделайте эту программу с процедурой! В общем, я даже не знаю как уже объяснить. Не силен я в Паскале да и вообще в этих языках программирования. Вообще можете не читать этот весь бред, а просто сделайте вот это задание с нуля:

Описать процедуру append(f,g,h) от трех файлов типа ряд,
которая записывает в файл F сначала все элементы файла g, a затем все элементы файла h.}
Sergik1977 вне форума Ответить с цитированием
Старый 28.10.2007, 13:29   #6
Maslan
Форумчанин
 
Регистрация: 15.10.2007
Сообщений: 147
По умолчанию

Понятно.... ЩА перепишу =)

Код:
Program Filer;
Uses CRT;
Type FileInteger=File of integer;
Var
I,N,S : Integer;
A,B,C: Fileinteger;

Procedure Append (var F,G,H:FileInteger);
Begin
Rewrite(F);                                      {Создаем файл C для записи в него данных }
Reset(G);                                        {Открываем файл А для чтения }
While Not(Eof(G)) Do
Begin
Read(G,S);
Write(F,S);                                       {А записываем в файл С }
end;
Reset(H);                                          {Открываем файл G для чтения}
While Not(Eof(H)) Do
Begin
Read(H,S);
Write(F,S);                                         {G записываем в файл С }
end;
end;


Begin
Assign(A,'G.lst');                              {Связываем переменную F с файлом F.lst}
Writeln('Enter size file G');                   {запрашиваем количество элементов файла А}
Readln(N);                                      {Вводим данные}
Rewrite(A);                                     {Создаем файл F для записи в него данных}
For I:=1 To N Do
Begin
Writeln('DATA G',i);
Readln(S);
Write(A,S)                                     {Записываем данные в файл А}
End;
Assign(B,'H.lst');                            {Связываем переменную G с файлом G.lst}
Writeln('Enter size  file H');                {запрашиваем количество элементов файла G}
Readln(N);                                    {Вводим данные}
Rewrite(B);                                   {Создаем файл G для записи в него данных}
For I:=1 To N Do
Begin
Writeln('DATA H',i);
Readln(S);
Write(B,S)                                       {Записываем данные в файл G}
End;
Assign(C,'F.lst');                               {Связываем переменную C с файлом C.lst}

Append(C,A,B);  {<<<< вызов процедуры, записывающий в C сначала А, а потом В}

Close(A);
Close(B);

Reset(C);                                           {открываем файл С и считываем с него все данные}
Writeln; Writeln('DATA C:');
While Not(Eof(C)) Do
Begin
Read(C,S);
Writeln(S);
End;
Close(C);
Readln;
End.

Последний раз редактировалось Maslan; 28.10.2007 в 13:43.
Maslan вне форума Ответить с цитированием
Старый 28.10.2007, 16:14   #7
Sergik1977
Пользователь
 
Регистрация: 18.10.2007
Сообщений: 12
По умолчанию

Вот я точно тормоз, но теперь знаю как делать процеДУРУ))))) Огромное спасибо Maslan.
Sergik1977 вне форума Ответить с цитированием
Старый 28.10.2007, 16:36   #8
Maslan
Форумчанин
 
Регистрация: 15.10.2007
Сообщений: 147
По умолчанию

Не за что =)
Maslan вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Оконная процедура HunterMan Win Api 5 04.06.2008 12:10
Процедура не работает Михаил Юрьевич Общие вопросы Delphi 4 03.06.2008 07:22
Процедура () GAGARIN-NEW Помощь студентам 3 17.12.2007 21:42
процедура sееk Snake_ua Паскаль, Turbo Pascal, PascalABC.NET 1 02.11.2007 16:22
Процедура, вычисляющая Y=a*cos(G) и X=a*sin(G) Vishez Помощь студентам 4 25.04.2007 17:41