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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 09.03.2009, 08:18   #1
D1mon
 
Регистрация: 09.03.2009
Сообщений: 5
По умолчанию Файловый тип

Задание:
Дан файл f, компоненты которого являются действительные числами.Найти наибольшее из значений компонент
с нечетными номерами.
Вот мой код, подкаректируйте что не так делаю.. )
Код:
  
program f;
uses crt;
var
f:file of integer;
a,b,max:integer;
begin
clrscr;
assign(f,'C:/laba');
rewrite(f);
writeln('Vvedite Chisla:');
readln(a);
while A>=0 do begin
write(f,a);
read(a);
end;
reset(f);
max:=0;
while not eof(f) do
begin 
read(f,a);
if (b mod 2>0) then
if b>max then max:=b;
end;
writeln('Max=',max);
End.
D1mon вне форума Ответить с цитированием
Старый 09.03.2009, 10:52   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

ну. задачка простая. Написано всё правильно... почти..
поэтому позволю себе помочь :-)

в программе НЕЛЬЗЯ использовать одинаковые идентификаторы (у Вас и программа f и файловая переменная f
измените имена, чтобы они стали разными(например, имя программы поменяйте!)

ещё ошибка - для определения максимума в какую переменную считываете значение?
Код:
read(f,a);
а какую сравниваете??
Код:
if b>max then max:=b;
кроме того, нечетность нужно проверять у порядкого НОМЕРА числа, а не у самого значения!
вот так:
Код:
  max := 0;
  b := 1;
  while not eof(f) do
  begin
    read(f, a);
    if (b mod 2 > 0) then
      if a > max then max := a;
    b := b + 1;
  end;
Цитата:
которого являются действительные числами.
действительные == вещественные.
Ошибка: - Вам нужно f: file of real;

имя файла для сохранения не очень наглядное..
рекомендую, хотя бы расширение добавить
assign(f, 'C:\laba.dat');


p.s. а почему при форматировании кода не используете отступы? Программа смотрится гораздо лучше. Да и наглядее код...
Serge_Bliznykov вне форума Ответить с цитированием
Старый 09.03.2009, 12:47   #3
D1mon
 
Регистрация: 09.03.2009
Сообщений: 5
Радость

Cпасибо, разобрался.
Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
p.s. а почему при форматировании кода не используете отступы? Программа смотрится гораздо лучше. Да и наглядее код...
учту при следующем написании программ )
D1mon вне форума Ответить с цитированием
Старый 09.03.2009, 17:23   #4
D1mon
 
Регистрация: 09.03.2009
Сообщений: 5
Печаль

опять нужна помощь....
задание:Дан текстовый файл, содержащий строки. Найти самые короткие строки.
Код:
program z;
uses crt;
var 
  f:text;
  i,min:integer;
  s:string;
begin
   assign (f, 'text.txt');
   rewrite(f);
   write('enter srtings');
   for i:=1 to 5 do
   readln(s);
   write(f,s);
   reset (f);
   Readln (f,s);
   min:=length(s);
      while not eof(f) do
 	 begin
 	    readln(f,s);   {Дальше не знаю как сделать -(}
D1mon вне форума Ответить с цитированием
Старый 09.03.2009, 17:55   #5
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

странное у Вас понятие об отступах в программе... :-)

вот. помимо длины ещё сохраняем порядковый номер найденной минимальной строки и саму строку:
Код:
program z;
var
  f: text;
  i, min, IMin: integer;
  s, SMin: string;
begin
  assign(f, 'text.txt');
  reset(f);
  min := MaxInt;
  i := 1;
  while not eof(f) do
  begin
    readln(f, s); {Дальше не знаю как сделать -(}
    if length(s) < min then begin
      SMin := s;
      min := length(s);
      IMin := i;
    end;
    i := i + 1;
  end;
  if min = MaxInt then WriteLn('Нет никаких строчек!')
  else begin
    WriteLn('Самая короткая строка - ', iMin: 1, '-я, с длиной ', min: 1, ' такая: ');
    WriteLn(SMin);
  end;
end.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 18.03.2009, 14:09   #6
D1mon
 
Регистрация: 09.03.2009
Сообщений: 5
Вопрос

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
странное у Вас понятие об отступах в программе... :-)

вот. помимо длины ещё сохраняем порядковый номер найденной минимальной строки и саму строку:
Код:
program z;
var
  f: text;
  i, min, IMin: integer;
  s, SMin: string;
begin
  assign(f, 'text.txt');
  reset(f);
  min := MaxInt;
  i := 1;
  while not eof(f) do
  begin
    readln(f, s); {Дальше не знаю как сделать -(}
    if length(s) < min then begin
      SMin := s;
      min := length(s);
      IMin := i;
    end;
    i := i + 1;
  end;
  if min = MaxInt then WriteLn('Нет никаких строчек!')
  else begin
    WriteLn('Самая короткая строка - ', iMin: 1, '-я, с длиной ', min: 1, ' такая: ');
    WriteLn(SMin);
  end;
end.
Не могли бы вы еще раз помочь, оказывается требовалось написать эту программу без использования типа STRING
D1mon вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
В Access есть тип данных "Счетчик".Есть ли подобный тип данных в MS Sql Server 2000? An_ton SQL, базы данных 5 16.01.2009 17:55
Перевести тип String в тип PChar (Delphi 7) ScorpioN_T Помощь студентам 2 28.10.2008 22:13
Файловый архив Viteef О форуме и сайтах клуба 4 28.12.2007 02:16
данные о видеосистеме: тип видеоадаптера, тип монитора, режим монитора: разрешение, частота обновления WaxeP Win Api 9 15.04.2007 18:12