Страница 1 из 2
Создать типизированный файл
Добавлено: 27.04.2011 06:28:35
Asel
Создать типизированный файл, куда записать n целых чисел. Из файла целых чисел сформировать массив, записав в него только четные компоненты, находящиеся до минимального элемента.
Помогите пожалуйста очень нужно

Re: Создать типизированный файл
Добавлено: 27.04.2011 09:42:56
informat
Что должно быть результатом помощи?
Нужно сделать всю работу за Вас или что-то уже есть?
Re: Создать типизированный файл
Добавлено: 27.04.2011 12:12:20
NTFS
Очевидно, задача для зачета.
Мое предложение - 300 руб, срок - один день. Пишите на
developer@tereshenkov.ru
Re: Создать типизированный файл
Добавлено: 27.04.2011 20:37:59
RustemNur
NTFS писал(а):Мое предложение - 300 руб, срок - один день.
Эта... 300р. ... За еду, что ли?
Re: Создать типизированный файл
Добавлено: 28.04.2011 09:52:35
Asel
Есть вот что помогите дальше нужно записать в массив только четные компоненты, находящиеся до минимального элемента.
Код: Выделить всё
Program pr1;
{$mode objfpc}{$H+}
uses
Classes , SysUtils
{you can add units after this};
type
massiw=array [1..1000] of real;
var f : file of real;
i , n : integer;
a : real;
p :^massiw;
s , t :word;
begin
AssignFile ( f, 'text.txt');
rewrite ( f );
write ('n=');
readln (n );
for i :=1 to n do
begin
write ('a=');
readln (a);
write (f, a);
end;
CloseFile (f);
AssignFile (f, 'text.txt');
reset (f) ;
s:= filesize (f);
writeln ('v faile ' ,s , ' chisel');
getmem(p, s*sizeof (real));
for t :=1 to s do
begin
read(f, p^[t]);
write (p^[t], ' ');
end;
freemem(p ,s*sizeof (real));
closefile (f);
readln;
end.
Re: Создать типизированный файл
Добавлено: 28.04.2011 10:18:18
Padre_Mortius
TC, учимся пользоваться тегом code
Re: Создать типизированный файл
Добавлено: 28.04.2011 10:19:56
Asel
А по подробнее можно?
Re: Создать типизированный файл
Добавлено: 28.04.2011 11:32:50
v-t-l
1. Real (вещественный) не нужен, нужен Integer (целый) (см. условия задачи).
2. Использование Word (16-битное беззнаковое целое) в качестве счетчика на 32-битных системах не эффективно, лучше DWord или Integer.
3. Во FreePascal/Delphi существуют динамические массивы, и указатели в данном случае не нужны:
Код: Выделить всё
var p: array of integer;
...
s:= filesize (f);
SetLength(p,s);
...
for t:=0 to s-1 do // нумерация элементов начинается с нуля
begin
read(f, p[t]);
...
4. Для нахождения минимума результату присваивается любое значение, затем при переборе массива каждый элемент сравнивается с результатом, и если он меньше, то результату присваивается значение элемента массива.
5. Число является четным, если остаток от целочисленного деления на 2 равен 0
6. Результирующий массив можно создать отдельно, а можно использовать первоначальный с отдельным счетчиком.
Re: Создать типизированный файл
Добавлено: 28.04.2011 11:44:42
RustemNur
ТС, где вы взяли этот код?
Добавлено спустя 8 минут 3 секунды:v-t-l писал(а):5. Число является четным, если остаток от целочисленного деления на 2 равен 0
Odd()
Re: Создать типизированный файл
Добавлено: 28.04.2011 12:15:40
Asel
А что не правильного в этом коде?
RustemNur писал(а):ТС, где вы взяли этот код?
Добавлено спустя 8 минут 3 секунды:v-t-l писал(а):5. Число является четным, если остаток от целочисленного деления на 2 равен 0
Odd()
Re: Создать типизированный файл
Добавлено: 28.04.2011 12:47:10
Maxizar
Да не все правильно, просто Код: Выделить всё
if (p[t] mod 2)=0 then
begin
Будет выполнено если p[t] четное число
end;
Тогда как:Код: Выделить всё
if Odd(p[t]) then
begin
Будет выполнено если p[t] Не четное число
end;
Re: Создать типизированный файл
Добавлено: 28.04.2011 17:00:56
Asel
Я не понимаю как тогда лучше записать?
Re: Создать типизированный файл
Добавлено: 28.04.2011 17:40:55
Maxizar
Решение в архиве. Ну блин ей богу

Как нужно допилите сами.
Использовал: lazarus-0.9.30-fpc-2.4.2-win32
Re: Создать типизированный файл
Добавлено: 28.04.2011 19:27:14
Asel
Помогите пожалуйста что здесь не правильно. не работает.
Program pr1;
{$mode objfpc}{$H+}
uses
Classes , SysUtils
{you can add units after this};
type
massiw=array [1..1000] of integer;
var f : file of integer;
i, n, min, a, s, t, x: integer;
p, z: array of integer;
begin
AssignFile ( f, 'text.txt');
rewrite ( f );
write ('n=');
readln (n );
for i :=1 to n do
begin
write ('a=');
readln (a);
write (f, a);
end;
CloseFile (f);
AssignFile (f, 'text.txt');
reset (f) ;
s:= filesize (f);
SetLength(p,s);
writeln ('v faile ' ,s , ' chisel');
for t:=0 to s-1 do
begin
read(f, p[t]);
write (p[t], ' ');
end;
closefile (f);
readln;
p[min]:=0;
for i:=1 to n do begin
if p[min]>p[t] then min:=i;
end;
x:=0;
for i:=1 to min do
if (p[t] mod 2)=0 then begin
x:=x+1;
z[x]:=p[t];
end;
for i:=1 to x do
write(z[x],' ');
readln;
end.
Re: Создать типизированный файл
Добавлено: 29.04.2011 00:33:22
v-t-l
Код: Выделить всё
program pr1;
var
f: file of integer;
n, a, i, min, t: integer;
p: array of integer;
begin
AssignFile(f, 'array.dat');
Rewrite(f);
n := 0;
while n <= 0 do
begin
Write('n=');
ReadLn(n);
end;
for i := 1 to n do
begin
Write('a=');
ReadLn(a);
Write(f, a);
if (i = 1) or (a < min) then
begin
min := a;
t := i;
end;
end;
CloseFile(f);
AssignFile(f, 'array.dat');
Reset(f);
SetLength(p, t);
WriteLn('v faile ', n, ' chisel');
n := 0;
for i := 1 to t - 1 do
begin
Read(f, a);
if (a <> 0) and (a mod 2 = 0) then
begin
p[n] := a;
Write(p[n], ' ');
n := n + 1;
end;
end;
CloseFile(f);
ReadLn;
end.