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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 29.06.2009, 10:01   #1
Оксаночка:)
Пользователь
 
Аватар для Оксаночка:)
 
Регистрация: 01.04.2009
Сообщений: 49
По умолчанию задание по Паскаль

привет...не могу сделать задачу...кому не сложно....помогите...
Заполнить файл f целыми числами, полученными с помощью генератора случайных чисел. Из файла f получить файл d, исключив повторные вхождения чисел. Порядок следования чисел сохранить....ВоТ..
Оксаночка:) вне форума Ответить с цитированием
Старый 29.06.2009, 11:00   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

пользуйтесь, пока я добрый...
Код:
const N = 40; {количество чисел в файле f}
var
   f, d : file of Integer;
   M : array[1..N] of integer;
   i, cntMas, A : integer;
begin
   Randomize;

   {создаём файл F.DAT и заполняем
      его N  случайными числами от -10 до 10 }
   Assign(f,'F.dat');
   Rewrite(f);
   for i:=1 to N do begin
      A := (Random(21)-10);
      Write(f, A);
   end;
   Close(f);

   {выведем содержимое файла на экран}
   Reset(f);
   WriteLn('содержимое файла F:');
   while Not Eof(f) do begin
     Read(f, A);
     Write(A:4);
   end;
   WriteLn;
   Close(f);

   {читаем числа в массив, каждый раз проверяя,
       что такого числа ещё не было,
     если такое число было раньше, то ничего не делаем,
     если же такого числа не было, то:
         добавляем его в массив, наращивая счётчик чисел в массиве.
         пишем полученное число в выходно файл D.DAT
                              }
   Reset(f);
   Assign(d, 'D.DAT');
   Rewrite(d);
   cntMas := 0;
   while Not Eof(f) do begin
     Read(f, A);
     i := 1;
     while (i<=cntMas) and (M[i] <> A) do inc(i);
     if i>cntMas {значит не нашли число} then begin
        inc(cntMas);
        M[cntMas] := A;
        Write(d, A);
     end;
   end;
   Close(d);
   Close(f);


   {выведем содержимое полученного файл на экран}
   Reset(d);
   WriteLn('содержимое файла D:');
   while Not Eof(d) do begin
     Read(d, A);
     Write(A:4);
   end;
   WriteLn;
   Close(d);
    
end.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 29.06.2009, 13:07   #3
Оксаночка:)
Пользователь
 
Аватар для Оксаночка:)
 
Регистрация: 01.04.2009
Сообщений: 49
По умолчанию

спасибо...а ты еще долгу будешь добрый....ато у мну еще пару задачек есть...:-[

1.Дан файл, содержащий различные даты. Каждая дата — это число, месяц и год. Найти :
а) год с наименьшим номером;
б) все весенние даты;
в) самую позднюю дату.


2.Имеется типизированный файл с числами. Найти (во всех случаях считать, что размер файла неизвестен) сумму всех чисел файла.


3.Имеется типизированный файл, элементами которого являются отдельные слова. Найти (во всех случаях считать, что размер файла неизвестен) самое длинное слово...вот так вот...помогите...кому не сложно...

Последний раз редактировалось Stilet; 30.06.2009 в 09:16.
Оксаночка:) вне форума Ответить с цитированием
Старый 29.06.2009, 13:54   #4
profi
Участник клуба Подтвердите свой е-майл
 
Регистрация: 19.11.2007
Сообщений: 1,022
По умолчанию

Вот вторая задача:

Код:
uses crt;
var
f:file of integer;
i,rand,sum,x:integer;
begin clrscr; randomize;
sum:=0;
Assign(f,'D:\ddd.dat');
Rewrite(f);
for i:=1 to 5 do
begin
rand:=random(10);
Write(rand,'  ');
Write(f,rand);
end;
Close(f);
Assign(f,'D:\ddd.dat');
Reset(f);
while not eof(f) do
begin
Read(f,x);
sum:=sum+x;
end;
Writeln;
Write('Suma: ',sum);
Close(f);
end.
По остальным задачам выложите наработки.
profi вне форума Ответить с цитированием
Старый 29.06.2009, 17:22   #5
Оксаночка:)
Пользователь
 
Аватар для Оксаночка:)
 
Регистрация: 01.04.2009
Сообщений: 49
По умолчанию

вот наработка к 3 задаче...
Код:
var f:file of string;l:integer;s,e:string;
begin
 assign(f,'f.txt');
 rewrite(f);
 while not eof(f) do begin
  read(f,s);
  if length(s)>l then begin l:=length(s); e:=s;end;
 end;
 write('самое длинное это - ',e);
end.
Оксаночка:) вне форума Ответить с цитированием
Старый 29.06.2009, 18:01   #6
profi
Участник клуба Подтвердите свой е-майл
 
Регистрация: 19.11.2007
Сообщений: 1,022
По умолчанию

Цитата:
Сообщение от Оксаночка:) Посмотреть сообщение
вот наработка к 3 задаче...
Код:
var f:file of string;l:integer;s,e:string;
begin
 assign(f,'f.txt');
 rewrite(f);
 while not eof(f) do begin
  read(f,s);
  if length(s)>l then begin l:=length(s); e:=s;end;
 end;
 write('самое длинное это - ',e);
end.
Переменную l инициализируй 0, вот так l:=0; и файл закрой Close(f) и еще одно лучше файл Reset, а не Rewrite открывай и последнее нужно строку на слова разбивать.

Последний раз редактировалось profi; 29.06.2009 в 18:08.
profi вне форума Ответить с цитированием
Старый 29.06.2009, 18:34   #7
Оксаночка:)
Пользователь
 
Аватар для Оксаночка:)
 
Регистрация: 01.04.2009
Сообщений: 49
По умолчанию

Код:
var f:file of string;l:integer;s,e:string;
begin
 assign(f,'f.txt');
 reset(f);
 while not eof(f) do begin
  read(f,s);
  if length(s)>l then begin l:=0; e:=s;end;
 end;
 write('самое длинное это - ',e);
close (f);
end.
Вот так ?...но она не работает....disk read error !!!
Оксаночка:) вне форума Ответить с цитированием
Старый 29.06.2009, 18:35   #8
profi
Участник клуба Подтвердите свой е-майл
 
Регистрация: 19.11.2007
Сообщений: 1,022
По умолчанию

Использовал PascalABC, так что на других Pascal'ях наверное правильно работать будет
Код:
uses crt;
var
f:file of string;
max,n,i,k:integer;
s,e,tmp:string;
begin clrscr;
 assign(f,'D:\f.txt');
 rewrite(f);
 write(f,'Hello World ! I like summer !');
 close(f);
 assign(f,'D:\f.txt');
 reset(f);
 while not eof(f)do
 read(f,s);
 close(f);
 n:=Length(s);
 max:=0;
 i:=1;
 e:='';
while i<=n do
begin
k:=0;
while(s[i]<>' ')and(i<=n)do
begin
inc(k);
inc(i);
end;
tmp:=copy(s,i-k,k);
writeln(tmp);
if Length(tmp)>max then
begin
         e:=tmp;
         max:=Length(tmp);
end;
inc(i);
end;
 write('самое длинное это - ',e);
end.
P.S. Если работать не будет в компиляторе Turbo Pascal напиши вместо f:file of string; вот это f:text;

Последний раз редактировалось profi; 29.06.2009 в 18:43.
profi вне форума Ответить с цитированием
Старый 29.06.2009, 18:51   #9
Оксаночка:)
Пользователь
 
Аватар для Оксаночка:)
 
Регистрация: 01.04.2009
Сообщений: 49
По умолчанию

спасибо...огромное...последнюю не поможешь ??? просто я реально не понимаю ка ёё делать...
Цитата:
Дан файл, содержащий различные даты. Каждая дата — это число, месяц и год. Найти :
а) год с наименьшим номером;
б) все весенние даты;
в) самую позднюю дату.
Оксаночка:) вне форума Ответить с цитированием
Старый 29.06.2009, 20:56   #10
profi
Участник клуба Подтвердите свой е-майл
 
Регистрация: 19.11.2007
Сообщений: 1,022
По умолчанию

Код:
uses crt;

type
    date=record
    den,mes,god:integer;
    end;

var
f:file of date;
i,ming,ind:integer;
mas:array[1..3] of date;

begin clrscr;
assign(f,'D:\f.txt');
rewrite(f);

for i:=1 to 3 do
    begin
         writeln('=========');
         write('Den= ');
         readln(mas[i].den);
         write('Mes= ');
         readln(mas[i].mes);
         write('God= ');
         readln(mas[i].god);
         writeln('=========');
    end;

for i:=1 to 3 do
 write(f,mas[i]);
close(f);

assign(f,'D:\f.txt');
reset(f);

i:=1;
while not eof(f)do
      begin
       read(f,mas[i]);
       inc(i);
      end;

close(f);

writeln;

for i:=1 to 3 do
    writeln(i,': Den:',mas[i].den,', Mes:',mas[i].mes,', God:',mas[i].god);

ming:=mas[1].god;
for i:=1 to 3 do
    if mas[i].god<ming then
       ming:=mas[i].god;

writeln;
writeln('God s naimenshim nomerom: ',ming);
writeln;
writeln('Vse vesennie daty: ');

for i:=1 to 3 do
    if (mas[i].mes>=3)and(mas[i].mes<=5) then
        writeln('   Den: ',mas[i].den,', Mes: ',mas[i].mes,', God: ',mas[i].god);

ind:=1;
ming:=mas[1].god;
for i:=1 to 3 do
    if mas[i].god<ming then
       begin
              ming:=mas[i].god;
              ind:=i;
       end;

writeln;
writeln('Pozdnaya data: Den: ',mas[ind].den,', Mes: ',mas[ind].mes,', God: ',mas[ind].god);

readln;

end.
profi вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Задание ворд dr.Chas Microsoft Office Word 2 16.12.2008 00:51
задание на Visual C++ Caps Фриланс 7 30.06.2008 09:07
Задание $ user570 Фриланс 3 15.06.2008 22:11
завалил задание ben95 Помощь студентам 1 29.02.2008 13:21