Помогите пожалуйста очень нужно
Создать типизированный файл
Модератор: Модераторы
Создать типизированный файл
Создать типизированный файл, куда записать n целых чисел. Из файла целых чисел сформировать массив, записав в него только четные компоненты, находящиеся до минимального элемента.
Помогите пожалуйста очень нужно
Помогите пожалуйста очень нужно
- informat
- новенький
- Сообщения: 62
- Зарегистрирован: 27.10.2010 09:44:20
- Откуда: http://informat.name
- Контактная информация:
Что должно быть результатом помощи?
Нужно сделать всю работу за Вас или что-то уже есть?
Нужно сделать всю работу за Вас или что-то уже есть?
-
NTFS
- постоялец
- Сообщения: 388
- Зарегистрирован: 05.11.2007 13:57:50
- Откуда: Краснодар
- Контактная информация:
Очевидно, задача для зачета.
Мое предложение - 300 руб, срок - один день. Пишите на developer@tereshenkov.ru
Мое предложение - 300 руб, срок - один день. Пишите на developer@tereshenkov.ru
NTFS писал(а):Мое предложение - 300 руб, срок - один день.
Эта... 300р. ... За еду, что ли?
Есть вот что помогите дальше нужно записать в массив только четные компоненты, находящиеся до минимального элемента.
Код: Выделить всё
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.-
Padre_Mortius
- энтузиаст
- Сообщения: 1265
- Зарегистрирован: 29.05.2007 17:38:07
- Откуда: Спб
TC, учимся пользоваться тегом code
А по подробнее можно?
1. Real (вещественный) не нужен, нужен Integer (целый) (см. условия задачи).
2. Использование Word (16-битное беззнаковое целое) в качестве счетчика на 32-битных системах не эффективно, лучше DWord или Integer.
3. Во FreePascal/Delphi существуют динамические массивы, и указатели в данном случае не нужны:
4. Для нахождения минимума результату присваивается любое значение, затем при переборе массива каждый элемент сравнивается с результатом, и если он меньше, то результату присваивается значение элемента массива.
5. Число является четным, если остаток от целочисленного деления на 2 равен 0
6. Результирующий массив можно создать отдельно, а можно использовать первоначальный с отдельным счетчиком.
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
Код: Выделить всё
if (p[t] mod 2)=0 ...6. Результирующий массив можно создать отдельно, а можно использовать первоначальный с отдельным счетчиком.
ТС, где вы взяли этот код?
Добавлено спустя 8 минут 3 секунды:
Odd()
Добавлено спустя 8 минут 3 секунды:
v-t-l писал(а):5. Число является четным, если остаток от целочисленного деления на 2 равен 0Код: Выделить всё
if (p[t] mod 2)=0 ...
Odd()
А что не правильного в этом коде?
RustemNur писал(а):ТС, где вы взяли этот код?
Добавлено спустя 8 минут 3 секунды:v-t-l писал(а):5. Число является четным, если остаток от целочисленного деления на 2 равен 0Код: Выделить всё
if (p[t] mod 2)=0 ...
Odd()
Да не все правильно, просто
Тогда как:
Код: Выделить всё
if (p[t] mod 2)=0 then
begin
Будет выполнено если p[t] четное число
end;Тогда как:
Код: Выделить всё
if Odd(p[t]) then
begin
Будет выполнено если p[t] Не четное число
end;Я не понимаю как тогда лучше записать?
Решение в архиве. Ну блин ей богу 
Как нужно допилите сами.
Использовал: lazarus-0.9.30-fpc-2.4.2-win32
Как нужно допилите сами.
Использовал: lazarus-0.9.30-fpc-2.4.2-win32
- Вложения
-
- Zadanie12.zip
- Решение
- (77.13 КБ) 522 скачивания
Помогите пожалуйста что здесь не правильно. не работает.
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.
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.
Код: Выделить всё
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.