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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 27.08.2007, 00:15   #1
Anna_fors
Пользователь
 
Регистрация: 14.08.2007
Сообщений: 80
Стрелка TP7: Срочная помощь нужна по отладке прогарммы на Паскале!

Привет всем форумчанам!
Я обращаюсь еще с одной просьбой. Очень надо. И быстро надо.
Помогите отладить в Турбо Паскале прогарамму. Выводить ошибку о несоответствии типов, только не могу сама устранить ее.
Вложения
Тип файла: rar ALIS.rar (6.8 Кб, 20 просмотров)
Anna_fors вне форума Ответить с цитированием
Старый 27.08.2007, 01:37   #2
Iceman
Форумчанин
 
Регистрация: 08.07.2007
Сообщений: 154
По умолчанию

ошибку процитируй. ну напиши как зуб ошибка звучит и оба етих типа.
Iceman вне форума Ответить с цитированием
Старый 27.08.2007, 08:51   #3
Anna_fors
Пользователь
 
Регистрация: 14.08.2007
Сообщений: 80
По умолчанию

Код:
 
{--------------Процедура ввода (с клав-ры) данных о номере------------------}
 
procedure numb_info_read(var item : numb_info); {}
var
  tword : word;
begin
  with item do
    begin
    number_read(gost_nomer);{в этом месте выводит ошибку о несоответсвии типов}
    word_read('кол-во комнат', rooms,  1, 5);
    word_read('кол-во мест  ', places, 1, 50);
    word_read('санузел (0/1)', tword,  0, 1);
    wc := (tword = 1);
    writeln('Перечень оборудования (разделяйте запятыми)');
    readln(equipment)
    end
end;
ниже я вставлю код процедуры number_read(item):
Код:
 
procedure number_read(var item:string{[4]}); {В этой процедуре испол-ся item типа string}
{ }
var
 
  tstr : string;
  i : byte;
  good : boolean;
begin
  repeat
  write('Номер: ');
  readln(tstr);
  tstr := upper(trim(tstr));
  good := false;
  if tstr[0]<>#4 then writeln('Неверная длина ', ord(tstr[0]), '(', tstr, '), должна быть строка фор-та "ANNN"')
  else begin
     if tstr[1] in ['Л', 'П', 'О', 'М'] then
      begin
      good := true;
      for i:=2 to 4 do good:=good and (tstr[i] in ['0'..'9']);
      if not good then writeln('Некорректные цифры ''', copy(tstr,2,3), '''')
      end
     else writeln('Неверный первый знак ''', tstr[1], '''');
     write('Допустимые значения Л-люкс, П - полулюкс, О-одноместный, М-многомест.')
  end
  until good;
  item := tstr
end;
Подскажите, в чем ошибка, срочно надо.
Anna_fors вне форума Ответить с цитированием
Старый 27.08.2007, 10:14   #4
А. Долматов
Форумчанин
 
Аватар для А. Долматов
 
Регистрация: 15.02.2007
Сообщений: 183
По умолчанию

Цитата:
number_read(gost_nomer);{
что означает в этой процедуре параметр и какой у него тип.
Знать все невозможно, в силу того, что жить бы стало неинтересно.
А. Долматов вне форума Ответить с цитированием
Старый 27.08.2007, 10:15   #5
Net
;-)
Пользователь
 
Регистрация: 18.07.2007
Сообщений: 69
По умолчанию

Дык... тут даже и не отладка, а элементарнейшая ошибка компиляции. Type mismatch.

В прицепленном файле вы делаете number_read(item);, ошибка вылазит, а тут уже привели кусок кода, где number_read(gost_nomer);. Здесь все верно абсолютно. Ну не компилится, но уже из-за других ошибок.
Net вне форума Ответить с цитированием
Старый 27.08.2007, 10:18   #6
Anna_fors
Пользователь
 
Регистрация: 14.08.2007
Сообщений: 80
По умолчанию

Слушай, я же скинула заархивируемую папку с файлом, в котором есть код полной программы. Там все хорошо расписано. Залезь, пожалуйста, туда, ты же сам понимаешь, что бесполезно отдельными фрагментами искать ошибки в программе.
Anna_fors вне форума Ответить с цитированием
Старый 27.08.2007, 10:26   #7
А. Долматов
Форумчанин
 
Аватар для А. Долматов
 
Регистрация: 15.02.2007
Сообщений: 183
По умолчанию

На работе нет ТР7 и за трафик убют. (звиняйте). Поэтому и спрашиваю какой тип и что за переменная. а лучше выложите плиз список всех переменных с пояснениями. нужно ведь обработать часть кода, а не всю программу переписать.
Знать все невозможно, в силу того, что жить бы стало неинтересно.
А. Долматов вне форума Ответить с цитированием
Старый 27.08.2007, 11:07   #8
Anna_fors
Пользователь
 
Регистрация: 14.08.2007
Сообщений: 80
По умолчанию

Цитата:
какой тип и что за переменная. а лучше выложите плиз список всех переменных с пояснениями. нужно ведь обработать часть кода, а не всю программу переписать.
Хорошо.
Код:
 
{---тип данных для хранения, описания номера, с соответ-щими процедурами
    для работы с этим типом данных ------ }
type
{а) Данные о каж. гостинич. номере: }
  numb_info = record
    gost_nomer : string[4]; {№ гостинич. номера - строка формата "ANNN", где  }
                      { А - буква, обоз-щая  тип номера (Л-люкс,
                      П-полулюкс, О-одномес., М-многоместный}
                      { NNN – порядковый номер (цифры) }
    rooms,                  { кол-во комнат }
    places : word;          { кол-во мест   }
    wc : boolean;           { Наличие санузла }
    equipment : string      { Перечент оборудования – перечислять через запятые }
  end;
Код:
 
{ тип данныхдля хранения, описания (паспорт. данных) постояльца), с
  соответс. процедурамидля работы с этим типом данных }
type
  person_info = record
    gost_nomer : string[4];  { № гостинич. номера - строка формата "ANNN", где
                        А - буква, обоз-щая тип номера( Л-люкс, П-
                        полулюкс, О- одномест.,
                        М - многомест.; NNN - порядковый номер}
    passport   : string[11]; { № паспорта - строка формата "NNNN-NNNNNN, где
                        N - цифры }
    settle,                  { Дата заселения  }
    evict      : string[10]  {ДАта выселения }
  end;
Код:
 
{----------------Процедура ввода с клав-ры № гостинич. номера---------------}
            {с одноврем. проверкой на корректность--}
 
procedure number_read(var item:string{[4]});
var
 
  tstr : string;
  i : byte;
  good : boolean;
begin
  repeat
  write('Номер: ');
  readln(tstr);
  tstr := upper(trim(tstr));
  good := false;
  if tstr[0]<>#4 then writeln('Неверная длина ', ord(tstr[0]), '(', tstr, '), должна быть строка фор-та "ANNN"')
  else begin
     if tstr[1] in ['Л', 'П', 'О', 'М'] then
      begin
      good := true;
      for i:=2 to 4 do good:=good and (tstr[i] in ['0'..'9']);
      if not good then writeln('Некорректные цифры ''', copy(tstr,2,3), '''')
      end
     else writeln('Неверный первый знак ''', tstr[1], '''');
     write('Допустимые значения Л-люкс, П - полулюкс, О-одноместный, М-многомест.')
  end
  until good;
  item := tstr
end;
Anna_fors вне форума Ответить с цитированием
Старый 27.08.2007, 14:38   #9
Virtson
Владимир М.
Участник клуба
 
Аватар для Virtson
 
Регистрация: 30.10.2006
Сообщений: 1,289
Подмигивание

хех ))
вспомнил школьные годы ..

[ основная ошибка была в попытке передавать конструкцию типа 'string[N]' в качестве параметра подпрограммы ]

держите, Анна :
Вложения
Тип файла: rar ALIS_Virtson.rar (5.9 Кб, 10 просмотров)
Берегите друг друга!
Virtson вне форума Ответить с цитированием
Старый 28.08.2007, 10:18   #10
Anna_fors
Пользователь
 
Регистрация: 14.08.2007
Сообщений: 80
По умолчанию

Virtson, огромное спасибо за помощь, но до меня тоже дошло, в чем была ошибка.
Anna_fors вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Нужна срочная помощь немогу найти свои ошибки delphin100 Общие вопросы Delphi 3 03.06.2008 08:38
SOS! Нужна срочная помощь Паскаль! ЯншинаВера Помощь студентам 2 02.06.2008 21:25
Нужна срочная помощь!!! Михей Фриланс 5 26.04.2008 17:19
Нужна срочная помощь Рената Помощь студентам 9 04.06.2007 22:42
Нужна срочная помощь с ListView Игнат Помощь студентам 2 04.06.2007 01:14