Страница 1 из 1
Помогите с РГР
Добавлено: 24 сен 2007, 11:39
Len4ik
Уважаемые програмисты помогите плиз девушке с ргр, я очень хочу научиться программировать и я не блондинка, но эта задача поставила меня в тупик
Разработать программу слияния 2х текстовых файлов в один файл по принципу: нечетная строка от первого файла, четная строка от второго файла. Предусмотреть проверку существования исход. файлов и результирующего файла с выдачей диагностич. сообщений, а также разбивку результирующего файла на страницы с указанием номера страницы.
Длина стр. 50 строк
P.S. эта задача мне нужна на паскале

на дельфи я плохо прогр. на си ниче не знаю

Re: Помогите с РГР
Добавлено: 24 сен 2007, 16:35
somewhere
Код: Выделить всё
uses crt;
var
fi1, fi2, fo : Text;
fi1name, fi2name, foname: String;
istr : String;
nstr, npage, lastpage : Integer;
begin
Clrscr;
Write('Input first filename to combine : ');
Readln(fi1name);
Write('Input second filename to combine : ');
Readln(fi2name);
Write('Input destination combined filename: ');
Readln(foname);
Assign(fi1, fi1name);
{$I-}Reset(fi1);{$I+}
If IOResult<>0 then
begin
Writeln('File '+fi1name+' could''nt be opened or it does''nt exist');
halt(1);
end;
Assign(fi2, fi2name);
{$I-}Reset(fi2);{$I+}
If IOResult<>0 then
begin
Writeln('File '+fi2name+' could''nt be opened or it does''nt exist');
halt(2);
end;
Assign(fo, foname);
Rewrite(fo);
nstr := 1; lastpage := 0; npage:=1;
Writeln('Combining in progress...');
repeat
If lastpage <> npage then
begin
lastpage := npage;
str(npage, istr);
Writeln(fo);
Writeln(fo, ' -= '+istr+' =- ');
Writeln(fo);
end;
If nstr mod 2 = 0 then
if eof(fi1) then Readln(fi2, istr)
else Readln(fi1, istr)
else
if eof(fi2) then Readln(fi1, istr)
else Readln(fi2, istr);
Writeln(fo, istr);
inc(nstr);
If nstr mod 50 = 0 then inc(npage);
until eof(fi1) and eof(fi2);
close(fi1);
close(fi2);
close(fo);
Writeln('Finished');
end.
Re: Помогите с РГР
Добавлено: 24 сен 2007, 18:20
Len4ik
оооооооооо у меня даже слов нету...........спс большое при большое....так приятно..буду изучать программу=)
Re: Помогите с РГР
Добавлено: 10 дек 2007, 04:17
Len4ik
Уважаемые программисты, помогите мне плиз......дело в том, что мне надо переделать эту программу при помощи процедур.......мне стыдно, что я немогу переделать готовую программу, поэтому прошу помогите вы....я могу показать, как я ее переделала, но препод говорит, что она не правильная=(
Re: Помогите с РГР
Добавлено: 10 дек 2007, 11:25
Хыиуду
Можно сделать втупую: разбить программу на части и запихнуть каждую часть в свою процедуру, ни на йоту не поменяв логику. Крайний случай - всю программу запихнуть в одну процедуру, но такой наглости преподы обычно не терпят.
Весь раздел описаний переменных - см выше.
Код: Выделить всё
procedure get_data;
begin
Clrscr;
Write('Input first filename to combine : ');
Readln(fi1name);
Write('Input second filename to combine : ');
Readln(fi2name);
Write('Input destination combined filename: ');
Readln(foname);
end;
procedure open_files;
begin
Assign(fi1, fi1name);
{$I-}Reset(fi1);{$I+}
If IOResult<>0 then
begin
Writeln('File '+fi1name+' could''nt be opened or it does''nt exist');
halt(1);
end;
Assign(fi2, fi2name);
{$I-}Reset(fi2);{$I+}
If IOResult<>0 then
begin
Writeln('File '+fi2name+' could''nt be opened or it does''nt exist');
halt(2);
end;
Assign(fo, foname);
Rewrite(fo);
end;
procedure combine;
begin
nstr := 1; lastpage := 0; npage:=1;
Writeln('Combining in progress...');
repeat
If lastpage <> npage then
begin
lastpage := npage;
str(npage, istr);
Writeln(fo);
Writeln(fo, ' -= '+istr+' =- ');
Writeln(fo);
end;
If nstr mod 2 = 0 then
if eof(fi1) then Readln(fi2, istr)
else Readln(fi1, istr)
else
if eof(fi2) then Readln(fi1, istr)
else Readln(fi2, istr);
Writeln(fo, istr);
inc(nstr);
If nstr mod 50 = 0 then inc(npage);
until eof(fi1) and eof(fi2);
end;
procedure finalize;
begin
close(fi1);
close(fi2);
close(fo);
Writeln('Finished');
end;
BEGIN {основная программа}
get_data;
open_files;
combine;
finalize;
END.
Такая программа обозначает примерно следующее: "Не знаю, зачем вы нас заставляете забивать гвозди микроскопом, но раз вы так хотите, можно и это".