Страница 1 из 1

Помогите решить задачу, плиз!!!

Добавлено: 18 мар 2008, 20:25
Света7
Очень прошу, кто-нибудь! Помогите решить задачку, вроде не сложная, но я-чайник в этой области и мне обратится не к кому. Заранее всем откликнувшимся большое спасибо!!!
При работе над этим заданием создать 3 программы, которые позволят:
а) сформировать исходный файл;
в) открыть, обработать исходный массив данных файла или добавить информацию к имеющимся;
с) вывести на экран результаты обработки.
Задача. На основе исходного файла целых чисел создать массив утроенных четных чисел. перезаписать массив в файл, добавив в конец сумму и среднее значение новых чисел.
речь идет о турбоПаскале.
Ответьте, пожалуйста в течении 2 дней на сообщение, или когда сможете(в конце недели мне сдавать работу).

Re: Помогите решить задачу, плиз!!!

Добавлено: 18 мар 2008, 20:57
MOTOCoder
Если я правильно понял условие, то решение такое:

#1
[syntax='Delphi']
program prg11;

var
F:File of Integer;
Cnt:integer;
I:integer;
N:integer;

begin
Assign(F,'Data.bin');
Rewrite(F);
writeln('Введите количество чисел');
readln(Cnt);
writeln('Введите ',cnt,' чисел через пробел');
for I:=1 to Cnt do
begin
read(N);
write(F,N);
end;
Close(F);
readln;
writeln;
writeln('Данные записаны в файл "Data.bin"');
readln;
end.
[/syntax]

#2
[syntax='Delphi']
program prg12;

Const
N=255;

var
F:File of Integer;
A:array[0..N]of integer;
Cnt:integer;
I:integer;
Sum:integer;
NewCnt:integer;

begin
Assign(F,'Data.bin');
Reset(F);
while not EoF(F) do
begin
Inc(Cnt);
Read(F,A[Cnt]);
end;
Close(F);
writeln('Прочитано из файла');

for I:=1 to Cnt do
write(A,' ');
writeln;
Assign(F,'Data.bin');
Rewrite(F);
NewCnt:=0;
Sum:=0;
for I:=1 to Cnt do
if not Odd(A) then
begin
A:=A*3;
Write(F,A);
Inc(NewCnt);
Inc(Sum,A);
end;
write(F,Sum);
Sum:=Round(Sum/NewCnt);
write(F,Sum);
Close(F);
writeln('Данные изменены');
readln;
end.
[/syntax]

#3

[syntax='Delphi']
program prg13;

var
F:File of Integer;
Cnt:integer;
I:integer;
N:integer;

begin
Assign(F,'Data.bin');
Reset(F);
while not EoF(F) do
begin
Read(F,N);
write(N,' ');
end;
Close(F);
readln;
end.
[/syntax]

Re: Помогите решить задачу, плиз!!!

Добавлено: 18 мар 2008, 21:14
Света7
ну и скорость, я ошарашена(!!!!) даже не ожидала, спасибо огромное! Я смею вас ещё об одном попросить. Преподаватель требует чтобы это была одна программа, состоящая из трех частей, кроме того он требует, чтобы в доказательство того, что она работает нужно показать окно работающей программы с результатом. Можете мне в этом помочь?
Мда...мир не без добрых людей.

Re: Помогите решить задачу, плиз!!!

Добавлено: 18 мар 2008, 21:29
MOTOCoder
Тогда примерно так:
[syntax='Delphi']
program prg11;

uses
Crt;

Const
NN=255;

var
N:integer;
F:File of Integer;
A:array[0..NN]of integer;
Cnt:integer;
I:integer;
Sum:integer;
NewCnt:integer;

Procedure WriteData;
begin
Assign(F,'Data.bin');
Rewrite(F);
writeln('Введите количество чисел');
readln(Cnt);
writeln('Введите ',cnt,' чисел через пробел');
for I:=1 to Cnt do
begin
read(N);
write(F,N);
end;
Close(F);
readln;
writeln('Данные записаны в файл "Data.bin"');
Writeln('Нажмите <Enter>');
Readln;
Writeln;
end;

procedure ChangeData;
begin
Cnt:=0;
Assign(F,'Data.bin');
Reset(F);
while not EoF(F) do
begin
Inc(Cnt);
Read(F,A[Cnt]);
end;
Close(F);
writeln('Прочитано из файла');
for I:=1 to Cnt do
write(A,' ');
writeln;
Assign(F,'Data.bin');
Rewrite(F);
NewCnt:=0;
Sum:=0;
for I:=1 to Cnt do
if not Odd(A) then
begin
A:=A*3;
Write(F,A);
Inc(NewCnt);
Inc(Sum,A);
end;
write(F,Sum);
Sum:=Round(Sum/NewCnt);
write(F,Sum);
Close(F);
writeln('Данные изменены');
Writeln('Нажмите <Enter>');
Readln;
Writeln;
end;

Procedure DisplayResult;
begin
writeln('Результат');
Assign(F,'Data.bin');
Reset(F);
while not EoF(F) do
begin
Read(F,N);
write(N,' ');
end;
Close(F);
writeln;
Writeln('Нажмите <Enter>');
Readln;
end;

begin
ClrScr;
WriteData;
ChangeData;
DisplayResult;

end.
[/syntax]

Re: Помогите решить задачу, плиз!!!

Добавлено: 18 мар 2008, 21:38
Света7
Впервые встречаюсь с такой людской сознательностью. Неужели такое бывает? Простите за наглость, но мне нужны снимки окон всех 4 программ в работе по результату. Спасибо ещё раз, вы не представляете, как вы мне помогли.

Re: Помогите решить задачу, плиз!!!

Добавлено: 18 мар 2008, 21:51
MOTOCoder
Вот скрины, правда так, на будущее-прогнать рабочую прогу и сделать скриншот-много мозгов не надо :)