Создать типизированный файл

Общие вопросы программирования, алгоритмы и т.п.

Модератор: Модераторы

Создать типизированный файл

Сообщение Asel » 27.04.2011 06:28:35

Создать типизированный файл, куда записать n целых чисел. Из файла целых чисел сформировать массив, записав в него только четные компоненты, находящиеся до минимального элемента.
Помогите пожалуйста очень нужно :cry:
Asel
незнакомец
 
Сообщения: 7
Зарегистрирован: 27.04.2011 06:23:31

Re: Создать типизированный файл

Сообщение informat » 27.04.2011 09:42:56

Что должно быть результатом помощи?
Нужно сделать всю работу за Вас или что-то уже есть?
Аватара пользователя
informat
новенький
 
Сообщения: 62
Зарегистрирован: 27.10.2010 09:44:20
Откуда: http://informat.name

Re: Создать типизированный файл

Сообщение NTFS » 27.04.2011 12:12:20

Очевидно, задача для зачета.
Мое предложение - 300 руб, срок - один день. Пишите на developer@tereshenkov.ru
NTFS
постоялец
 
Сообщения: 388
Зарегистрирован: 05.11.2007 14:57:50
Откуда: Краснодар

Re: Создать типизированный файл

Сообщение RustemNur » 27.04.2011 20:37:59

NTFS писал(а):Мое предложение - 300 руб, срок - один день.

Эта... 300р. ... За еду, что ли?
RustemNur
новенький
 
Сообщения: 61
Зарегистрирован: 20.02.2011 11:21:14
Откуда: Уфа

Re: Создать типизированный файл

Сообщение Asel » 28.04.2011 09:52:35

Есть вот что помогите дальше нужно записать в массив только четные компоненты, находящиеся до минимального элемента.
Код: Выделить всё
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.
Asel
незнакомец
 
Сообщения: 7
Зарегистрирован: 27.04.2011 06:23:31

Re: Создать типизированный файл

Сообщение Padre_Mortius » 28.04.2011 10:18:18

TC, учимся пользоваться тегом code
Padre_Mortius
энтузиаст
 
Сообщения: 1265
Зарегистрирован: 29.05.2007 17:38:07
Откуда: Спб

Re: Создать типизированный файл

Сообщение Asel » 28.04.2011 10:19:56

А по подробнее можно?
Asel
незнакомец
 
Сообщения: 7
Зарегистрирован: 27.04.2011 06:23:31

Re: Создать типизированный файл

Сообщение v-t-l » 28.04.2011 11:32:50

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
Код: Выделить всё
if (p[t] mod 2)=0 ...

6. Результирующий массив можно создать отдельно, а можно использовать первоначальный с отдельным счетчиком.
v-t-l
энтузиаст
 
Сообщения: 734
Зарегистрирован: 13.05.2007 16:27:22
Откуда: Belarus

Re: Создать типизированный файл

Сообщение RustemNur » 28.04.2011 11:36:39

ТС, где вы взяли этот код?

Добавлено спустя 8 минут 3 секунды:
v-t-l писал(а):5. Число является четным, если остаток от целочисленного деления на 2 равен 0
Код: Выделить всё
if (p[t] mod 2)=0 ...

Odd()
RustemNur
новенький
 
Сообщения: 61
Зарегистрирован: 20.02.2011 11:21:14
Откуда: Уфа

Re: Создать типизированный файл

Сообщение Asel » 28.04.2011 12:15:40

А что не правильного в этом коде?
RustemNur писал(а):ТС, где вы взяли этот код?

Добавлено спустя 8 минут 3 секунды:
v-t-l писал(а):5. Число является четным, если остаток от целочисленного деления на 2 равен 0
Код: Выделить всё
if (p[t] mod 2)=0 ...

Odd()
Asel
незнакомец
 
Сообщения: 7
Зарегистрирован: 27.04.2011 06:23:31

Re: Создать типизированный файл

Сообщение Maxizar » 28.04.2011 12:47:10

Да не все правильно, просто
Код: Выделить всё
if (p[t] mod 2)=0 then
begin
Будет выполнено если p[t] четное число
end;

Тогда как:
Код: Выделить всё
if Odd(p[t]) then
begin
Будет выполнено если p[t] Не четное число
end;
Maxizar
постоялец
 
Сообщения: 385
Зарегистрирован: 20.03.2010 19:48:14

Re: Создать типизированный файл

Сообщение Asel » 28.04.2011 17:00:56

Я не понимаю как тогда лучше записать?
Asel
незнакомец
 
Сообщения: 7
Зарегистрирован: 27.04.2011 06:23:31

Re: Создать типизированный файл

Сообщение Maxizar » 28.04.2011 17:40:55

Решение в архиве. Ну блин ей богу :evil:
Как нужно допилите сами.

Использовал: lazarus-0.9.30-fpc-2.4.2-win32
Вложения
Zadanie12.zip
Решение
(77.13 КБ) Скачиваний: 442
Maxizar
постоялец
 
Сообщения: 385
Зарегистрирован: 20.03.2010 19:48:14

Re: Создать типизированный файл

Сообщение Asel » 28.04.2011 19:27:14

Помогите пожалуйста что здесь не правильно. не работает.
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.
Asel
незнакомец
 
Сообщения: 7
Зарегистрирован: 27.04.2011 06:23:31

Re: Создать типизированный файл

Сообщение v-t-l » 29.04.2011 00:33:22

Код: Выделить всё
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.
v-t-l
энтузиаст
 
Сообщения: 734
Зарегистрирован: 13.05.2007 16:27:22
Откуда: Belarus

След.

Вернуться в Общее

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1

Рейтинг@Mail.ru