Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 31.01.2009, 23:12   #1
BbIPJIo
 
Регистрация: 30.01.2009
Сообщений: 5
По умолчанию Помогите с паскалём)

Дан файл f1, элементами которого являются целые числа. Переписать в файл f2 только отрицательные числа файла f1. Выдать на экран содержимое файла f2.
BbIPJIo вне форума Ответить с цитированием
Старый 31.01.2009, 23:42   #2
pomoshnic
Форумчанин
 
Аватар для pomoshnic
 
Регистрация: 16.11.2008
Сообщений: 192
По умолчанию

Текстовый файл:
Код:
var f1,f2:text;
i:integer;
c:char;
s:string;
function exist(stri:string):boolean;
begin
  assign(f1,stri);
  {$i-}reset(f1);{$i+}
  if ioresult=0 then exist:=true else exist:=false;
end;

Procedure zapoln;
begin
  randomize;
  rewrite(f1);
  for i:=1 to 50 do
  begin
    i:=random(200)-100;
    write(f1,i,' ');
  end;
  close(f1);
end;
Procedure ruchnoi;
begin
{ручной ввод имени файла}
Writeln('Vvedite ima faila');
readln(s);
end;
begin
{Ввод имени файла через параметры(перетащить файл на *.exe)}
if paramcount=1 {если на *.exe перетащили файл}
then s:=paramstr(1){s:=путь к файлу f1}
else ruchnoi;
{eng-vvod...}  
assign(f1,s);
assign(f2,'out.txt');
if not exist(s) then zapoln;
reset(f1);
rewrite(f2);
while not eof(f1) do
begin
read(f1,i);
if i<0 then write(f2,i,' ');
end;
close(f1);
close(f2);
writeln('Sodergimoe faila f2:');
reset(f2);
while not eof(f2) do
begin
read(f2,c);
write(c);
end;
readln
end.
Типизированный файл:
Код:
var f1,f2:file of integer;
i:integer;
s:string;
function exist(stri:string):boolean;
begin
  assign(f1,stri);
  {$i-}reset(f1);{$i+}
  if ioresult=0 then exist:=true else exist:=false;
end;
Procedure zapoln;
begin
  randomize;
  rewrite(f1);
  for i:=1 to 50 do
  begin
    i:=random(200)-100;
    write(f1,i);
  end;
  close(f1);
end;
Procedure ruchnoi;
begin
{ручной ввод имени файла}
Writeln('Vvedite ima faila');
readln(s);
end;
begin
{Ввод имени файла через параметры(перетащить файл на *.exe)}
if paramcount=1 {если на *.exe перетащили файл}
then s:=paramstr(1){s:=путь к файлу f1}
else ruchnoi;
{eng-vvod...}  
assign(f1,s);
assign(f2,'out.bin');
if not exist(s) then zapoln;
reset(f1);
rewrite(f2);
while not eof(f1) do
begin
read(f1,i);
if i<0 then write(f2,i);
end;
close(f1);
close(f2);
writeln('Sodergimoe faila f2:');
reset(f2);
while not eof(f2) do
begin
read(f2,i);
write(i,' ');
end;
readln
end.
и плиз, если можешь оставь мне отзыв (нажми на весы под моей аватаркой)

Последний раз редактировалось pomoshnic; 01.02.2009 в 00:34. Причина: Опять добавил
pomoshnic вне форума Ответить с цитированием
Старый 31.01.2009, 23:42   #3
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Как я понял, файл типизированный?
Если исходного файла (file1.fl) нет, то он создается. Если есть - открывается.
Код:
uses crt;
const f1name = 'file1.fl';
f2name = 'file2.fl';
n = 10;
var
f1,f2 : file of integer;
i,k : integer;
begin
clrscr;
randomize;
assign(f1,f1name);
assign(f2,f2name);
{$I-}
reset(f1);
{$I+}
if IOResult <> 0 then
  begin
  rewrite(f1);
  for i:=1 to n do
   begin
   k := random(20)-7;
   write(f1,k);
   end;
  close(f1);
  reset(f1);
  end;
{---------}
rewrite(f2);
while not eof(f1) do
  begin
  read(f1,k);
  write(k:4);
  if k<0 then write(f2,k);
  end;
close(f1);
seek(f2,0);
writeln;
writeln('File 2:');
while not eof(f2) do
 begin
 read(f2,k);
 write(k:4);
 end;
close(f2);
readln;
end.
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Старый 01.02.2009, 00:15   #4
BbIPJIo
 
Регистрация: 30.01.2009
Сообщений: 5
По умолчанию

О спасибки!!
BbIPJIo вне форума Ответить с цитированием
Старый 01.02.2009, 11:44   #5
BbIPJIo
 
Регистрация: 30.01.2009
Сообщений: 5
По умолчанию

Народ помогите есчё с одной пожалуйста
Нужно создать программу

Номер школы (3)
Адрес школы (30)
Профиль (10)
Кол-во учащихся (4)
BbIPJIo вне форума Ответить с цитированием
Старый 01.02.2009, 11:58   #6
pomoshnic
Форумчанин
 
Аватар для pomoshnic
 
Регистрация: 16.11.2008
Сообщений: 192
По умолчанию

Нужно сделать базу данных, или что?
pomoshnic вне форума Ответить с цитированием
Старый 01.02.2009, 14:25   #7
BbIPJIo
 
Регистрация: 30.01.2009
Сообщений: 5
По умолчанию

Составить программу с процедурами ввода, расширения и обработки файла на языке Паскаль, выполняющую в зависимости от номера режима любую из указанных функций.
BbIPJIo вне форума Ответить с цитированием
Старый 01.02.2009, 14:42   #8
pomoshnic
Форумчанин
 
Аватар для pomoshnic
 
Регистрация: 16.11.2008
Сообщений: 192
По умолчанию

Код:
обработки файла на языке Паскаль, выполняющую в зависимости от номера режима любую из указанных функций
С тебя тозыв
Код:
uses crt;
const fn='file.bin';
type
n=1..999;
k=1..9999;
rec=record
num:n;
adr:string[30];
prof:string[10];
kol:k;
end;
var f,e:file of rec;
r,s:rec;
act:byte;
procedure wri;
begin
writeln('Nomer: ',r.num);
writeln('Adres: ',r.adr);
writeln('Profil: ',r.prof);
writeln('Kolichestvo: ',r.kol);
readln
end;
procedure se;
var flag1:boolean;
begin
 repeat
  clrscr;
  Writeln('1 Po nomeru');
  Writeln('2 Po adresy');
  Writeln('3 Po profilu');
  writeln('4 Po kolichestvy');
  Writeln('0 Vixod v glavnoe menu');
  readln(act);
 until act in[0..4];
 flag1:=false;
 reset(f);
 case act of
 0:begin close(f); exit end;
 1:begin
  writeln('Vvedite nomer');
  readln(s.num);
  while not eof(f) do
  begin
   read(f,r); if r.num = s.num then begin flag1:=true; break end;
  end;
  if flag1 then wri;
 end;
 2:begin
  writeln('Vvedite adres');
  readln(s.adr);
  while not eof(f) do
  begin
   read(f,r); if r.adr = s.adr then begin flag1:=true; break end;
  end;
  if flag1 then wri;
 end;
 3:begin
  writeln('Vvedite profil');
  readln(s.prof);
  while not eof(f) do
  begin
   read(f,r); if r.prof = s.prof then begin flag1:=true; break end;
  end;
  if flag1 then wri;
 end;
 4:begin
  writeln('Vvedite kolicestvo');
  readln(s.kol);
  while not eof(f) do
  begin
   read(f,r); if r.kol = s.kol then begin flag1:=true; break end;
  end;
  if flag1 then wri;
 end;
end;
close(f);
end;
procedure newr;
begin
clrscr;
  Write('Nnomer = ');readln(r.num);
  Write('Adres = ');readln(r.adr);
  Write('Profil = ');readln(r.prof);
  write('Kolichestvo = ');readln(r.kol);
  {$i-}reset(f);{i+} if ioresult<>0 then rewrite(f)
  else while not eof(f) do read(f,s);
  write(f,r);
end;
procedure del;
begin
clrscr;
  Write('Nnomer = ');readln(r.num);
  Write('Adres = ');readln(r.adr);
  Write('Profil = ');readln(r.prof);
  write('Kolichestvo = ');readln(r.kol);
  rename(f,'temp.tmp');
  assign(f,'temp.tmp');
  reset(f);
  assign(e,fn);
  rewrite(e);
  while not eof(f)do
  begin
    read(f,s);
    if (r.num<>s.num)and(r.adr<>s.adr)and(r.prof<>s.prof)and(r.kol<>s.kol) then write(e,s);
  end;
  close(f);
  close(e);
  erase(f);
  assign(f,fn);
end;

begin
assign(f,fn);
repeat
repeat
clrscr;
writeln('1 Poisk');
writeln('2 Novaya');
writeln('3 Ydalenie');
writeln('0 Vyxod');
readln(act);
until act in [0..3];
case act of
0:halt;
1:se;
2:newr;
3:del;
end;
until false;
end.

Последний раз редактировалось pomoshnic; 01.02.2009 в 15:27.
pomoshnic вне форума Ответить с цитированием
Старый 01.02.2009, 17:25   #9
BbIPJIo
 
Регистрация: 30.01.2009
Сообщений: 5
По умолчанию

Благодарю сегодня сделаю)
BbIPJIo вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц