Помогите с РГР

За вознаграждение или нахаляву (если повезёт)

Модераторы: Хыиуду, MOTOCoder, Medved, dr.Jekill

Ответить
Аватара пользователя
Len4ik
Сообщения: 3
Зарегистрирован: 24 сен 2007, 11:17

Уважаемые програмисты помогите плиз девушке с ргр, я очень хочу научиться программировать и я не блондинка, но эта задача поставила меня в тупик :(

Разработать программу слияния 2х текстовых файлов в один файл по принципу: нечетная строка от первого файла, четная строка от второго файла. Предусмотреть проверку существования исход. файлов и результирующего файла с выдачей диагностич. сообщений, а также разбивку результирующего файла на страницы с указанием номера страницы.

Длина стр. 50 строк

P.S. эта задача мне нужна на паскале :( на дельфи я плохо прогр. на си ниче не знаю :(
Аватара пользователя
somewhere
Сообщения: 1858
Зарегистрирован: 31 авг 2006, 17:14
Откуда: 71 RUS
Контактная информация:

Код: Выделить всё

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.
It's a long way to the top if you wanna rock'n'roll
Аватара пользователя
Len4ik
Сообщения: 3
Зарегистрирован: 24 сен 2007, 11:17

оооооооооо у меня даже слов нету...........спс большое при большое....так приятно..буду изучать программу=)
Аватара пользователя
Len4ik
Сообщения: 3
Зарегистрирован: 24 сен 2007, 11:17

Уважаемые программисты, помогите мне плиз......дело в том, что мне надо переделать эту программу при помощи процедур.......мне стыдно, что я немогу переделать готовую программу, поэтому прошу помогите вы....я могу показать, как я ее переделала, но препод говорит, что она не правильная=(
Хыиуду
Сообщения: 2442
Зарегистрирован: 06 мар 2005, 21:03
Откуда: Москва
Контактная информация:

Можно сделать втупую: разбить программу на части и запихнуть каждую часть в свою процедуру, ни на йоту не поменяв логику. Крайний случай - всю программу запихнуть в одну процедуру, но такой наглости преподы обычно не терпят.
Весь раздел описаний переменных - см выше.

Код: Выделить всё

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.
Такая программа обозначает примерно следующее: "Не знаю, зачем вы нас заставляете забивать гвозди микроскопом, но раз вы так хотите, можно и это".
Искусство программирования - заставить компьютер делать все то, что вам делать лень.
Для "спасибо" есть кнопка "Спасибо" в виде звездочки внизу под ником автора поста.
Ответить