Помощь - Поиск - Пользователи - Календарь
Полная версия: страны и континенты
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
Yurka
Помогите задачку на множества разобрать:

По значению s (страна) присвоить переменной st континент, на котором она находиться


Код

  type
     country=(...);
     continent=(...);
  var
      s:country;
      st:continent
      
Lapp
Цитата(Yurka @ 20.09.2006 12:39) *

По значению s (страна) присвоить переменной st континент, на котором она находиться

Несколько раз перечитал, но не могу врубиться..
Можно условие чуть подробнее?
Yurka
Цитата(lapp @ 20.09.2006 11:50) *

Несколько раз перечитал, но не могу врубиться..
Можно условие чуть подробнее?



так в том и дело, что это полное условие...
я так думаю, что смысла вводить все страны нету, просто пару стран с каждого континента
задать в множестве, а потом в программе определёным странам присвоить значения континентов и
она должна (я так думаю) по названию страны выводить континент на котором она находится.
Список стран программа должна предложить сама. Вот реализовать это я пока не могу...
Lapp
Может, так - континент должен представлять собой множество стран? Тогда ты тип "континент" вводи множеством стран. А потом просто проверяй каждый континент на наличие этого элемента (страны). Некоторые континенты могут содержать одну и ту же страну (например, Россия находится в Европе и Азии, а Панама - сразу в двух Америках..
Yurka
lapp ты прав. Только помоги, пожалуйста, хотя бы начало программы...
volvo
Yurka, а может, вот так:
type
country = (_england, _france, _japan, _usa, _canada, _panama);
continent = (_europe, _asia, _n_america, _s_america, _australia);
set_continent = set of continent;

const
countries: array[country] of string =
('england', 'france', 'japan', 'usa', 'canada', 'panama');
continents: array[continent] of string =
('europe', 'asia', 'north america', 'south america', 'australia');

world: array[country] of set_continent =
([_europe], [_europe], [_asia], [_n_america], [_n_america], [_n_america, _s_america]);

var
s: country;
st: continent;

T: string;
i_country: country;
i_continent: continent;

begin

write('country = '); readln(T);
for i_country := low(country) to high(country) do
if countries[i_country] = T then s := i_country;

for i_continent := low(continent) to high(continent) do
if i_continent in world[s] then writeln(continents[i_continent]);

end.

?
(обработку ошибок не делал, т.е. если ты введешь название страны НЕ так, как оно определено в массиве, результаты будут непредсказуемые...)
Yurka
volvo СПАСИБО!!! good.gif drinks.gif Ты меня уже много раз выручал smile.gif
У меня ещё вопросик сразу возник, что значит low и high?
volvo
Low - наименьшее возможное значение для заданного типа, а High - наибольшее возможное значение... Т.е., чтобы не делать так:
for i_country := _england to _panama do ...
(это - нехорошее решение, мы привязываемся к конкретным значениям, а этого лучше не делать)

делаем так:

for i_country := low(country) to high(country) do ...

и этот цикл будет корректно работать, и переберет ВСЕ значения от начала до конца, даже если перед _england добавится еще десяток стран...
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.