Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

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

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

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

Задание:
Дан файл 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, 11:52   #2
Serge_Bliznykov
МегаМодератор
СуперМодератор
 
Регистрация: 09.01.2008
Сообщений: 24,495
Репутация: 5308
По умолчанию

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

в программе НЕЛЬЗЯ использовать одинаковые идентификаторы (у Вас и программа 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, 13:47   #3
D1mon
 
Регистрация: 09.03.2009
Сообщений: 5
Репутация: 10
Радость

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

опять нужна помощь....
задание:Дан текстовый файл, содержащий строки. Найти самые короткие строки.
Код:

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, 18:55   #5
Serge_Bliznykov
МегаМодератор
СуперМодератор
 
Регистрация: 09.01.2008
Сообщений: 24,495
Репутация: 5308
По умолчанию

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

вот. помимо длины ещё сохраняем порядковый номер найденной минимальной строки и саму строку:
Код:

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, 15:09   #6
D1mon
 
Регистрация: 09.03.2009
Сообщений: 5
Репутация: 10
Вопрос

Цитата:
Сообщение от 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 вне форума   Ответить с цитированием
Ответ

Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

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


01:24.


Powered by vBulletin® Version 3.8.8 Beta 2
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.

RusProfile.ru


Справочник российских юридических лиц и организаций.
Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru