Модераторы: volvo877, Snowy, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Массивы, Небольшая программка, помогите доделать 
:(
    Опции темы
SL1CK
Дата 17.3.2009, 22:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 4
Регистрация: 17.3.2009

Репутация: нет
Всего: нет



Помогите с задачкой пожалусто!
Мне надо ввести в масив, используя записи название рейса, номер рейса и тип рейса,
а потом чтоб после ввода в массив данных, можно ввести название рейса, и если такое название рейса существует в массиве то вывести номер и тип рейса из массива...

Вот что я сделал:

Код

Program Air;
const n=7;
type aeroflot=record
reis:string[30];
reis2:string[30];
nreis:integer;
tip:string[30];
end;
var aa:array[1..n] of aeroflot;
i:integer;
Begin
for i:=1 to n do begin
writeln('Vvod nazvaniya reisa v masiv');
readln(aa[i].reis); {Название рейса}
writeln('Vvod nomer reisa');
readln(aa[i].nreis); {Номер рейса}
writeln('Vvod v massiv tip reisa');
readln(aa[i].tip); {Тип рейса}
end;
writeln('Informacia vvedena');
writeln('Vvesti reis');
readln(aa[i].reis);
for i:=1 to n do begin
begin
if aa[i].reis='mayami' then
writeln(aa[i].nreis,' ',aa[i].tip);
end;
end;
readln;
end.


но я немогу никак сделать чтобы после ввода данных в массив, при вводе названия рейса у меня не получаетсья вывести номер и тип совпадающего рейса...
Подскажите как сделать smile 
PM MAIL   Вверх
Kbl4AH
Дата 18.3.2009, 08:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 741
Регистрация: 1.4.2008
Где: Вятка

Репутация: нет
Всего: 15



Код

writeln('Vvesti reis');
readln(aa[i].reis);

ты заново вводишь название рейса в n+1 элемент массива... тут по идее программа должна заругаться на ошибку... не знаю почему этого не происходит smile 
Код

if aa[i].reis='mayami' then ...

и сравниваешь рейс i-го элемента с константой, которая никак не зависит от введенного тобой значения...
нужно контрольное название рейса присвоить переменной
Код

var
  ReisInfo: string[30];
...
  writeln('Vvesti reis');
  readln(ReisInfo);

и уже с ней сравнивать названия рейсов в массиве
Код

if aa[i].reis=ReisInfo then ...


Это сообщение отредактировал(а) Kbl4AH - 18.3.2009, 08:16
PM MAIL ICQ   Вверх
volvo877
Дата 18.3.2009, 10:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2073
Регистрация: 15.11.2004

Репутация: 2
Всего: 116



Цитата(Kbl4AH @  18.3.2009,  07:09 Найти цитируемый пост)
ты заново вводишь название рейса в n+1 элемент массива... 
Откуда такая информация? В смысле, почему именно N+1? Или ты все еще считаешь, что по окончании цикла For значение переменной - счетчика на 1 больше (или меньше, если DownTo) конечного значения? Тогда тебе самое время читать доки: Операторы цикла с параметром (for)
Цитата
После выполнения оператора for значение управляющей переменной становится неопределенным, если только выполнение оператора for не было прервано с помощью оператора перехода.
Перехода не было, поэтому теоретически там может быть и любое значение в интервале 1 .. N, тогда ошибку вообще нельзя поймать. Если i будет НЕ в этих интервалах - то ошибка ловится (при включенной опции Range Checking, разумеется. Которая у большинства начинающих программистов отключена. Они, видите ли, считают себя умнее компилятора)

PM MAIL   Вверх
Kbl4AH
Дата 18.3.2009, 10:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 741
Регистрация: 1.4.2008
Где: Вятка

Репутация: нет
Всего: 15



Цитата(volvo877 @  18.3.2009,  10:12 Найти цитируемый пост)
Откуда такая информация? В смысле, почему именно N+1? Или ты все еще считаешь, что по окончании цикла For значение переменной - счетчика на 1 больше (или меньше, если DownTo) конечного значения? 

Я ничего не считаю (такой ситуации не допускал),а просто добавил строку к исходному коду:
Код

writeln('Informacia vvedena');
writeln('Vvesti reis');
readln(aa[i].reis);
writeln(aa[i].reis, '; i= ', i);

И мне вывело: Введеное значение; i = 8
Вот мне и интересно, почему это противоречит нижестоящему?
Цитата(volvo877 @  18.3.2009,  10:12 Найти цитируемый пост)
Перехода не было, поэтому теоретически там может быть и любое значение в интервале 1 .. N


PS. Первый раз делал в Делфи... Там значение счетчика все-таки увеличивается на 1... (а в ТП значение счетчика у меня осталось N)

Для ТП извинияюсь... Нужно было вместо
Цитата

ты заново вводишь название рейса в n+1 элемент массива...

написать - ты заново вводишь (переписываешь) название рейса в существующий элемент массива...

Это сообщение отредактировал(а) Kbl4AH - 18.3.2009, 10:53
PM MAIL ICQ   Вверх
SL1CK
Дата 19.3.2009, 00:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 4
Регистрация: 17.3.2009

Репутация: нет
Всего: нет



спасибо за помощь! smile 
PM MAIL   Вверх
SL1CK
Дата 22.3.2009, 23:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 4
Регистрация: 17.3.2009

Репутация: нет
Всего: нет



Еще раз спасибо! все получилось! smile  smile  smile  smile 
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi"
THandle
Rrader
volvo877

Запрещается!

1. Обсуждать и делится взломанными компонентами или программным обеспечением

2. Публиковать ссылки на варез

3. Оффтопить

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, THandle, Rrader, volvo877.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Object Pascal: кроссплатформенные технологии | Следующая тема »


 




[ Время генерации скрипта: 0.0741 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.