Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Задачи _ страны и континенты

Автор: Yurka 20.09.2006 15:39

Помогите задачку на множества разобрать:

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


Код

  type
     country=(...);
     continent=(...);
  var
      s:country;
      st:continent
      

Автор: lapp 20.09.2006 15:50

Цитата(Yurka @ 20.09.2006 12:39) *

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

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

Автор: Yurka 20.09.2006 16:11

Цитата(lapp @ 20.09.2006 11:50) *

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



так в том и дело, что это полное условие...
я так думаю, что смысла вводить все страны нету, просто пару стран с каждого континента
задать в множестве, а потом в программе определёным странам присвоить значения континентов и
она должна (я так думаю) по названию страны выводить континент на котором она находится.
Список стран программа должна предложить сама. Вот реализовать это я пока не могу...

Автор: lapp 20.09.2006 17:09

Может, так - континент должен представлять собой множество стран? Тогда ты тип "континент" вводи множеством стран. А потом просто проверяй каждый континент на наличие этого элемента (страны). Некоторые континенты могут содержать одну и ту же страну (например, Россия находится в Европе и Азии, а Панама - сразу в двух Америках..

Автор: Yurka 20.09.2006 17:21

lapp ты прав. Только помоги, пожалуйста, хотя бы начало программы...

Автор: volvo 20.09.2006 17:37

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 20.09.2006 17:49

volvo СПАСИБО!!! good.gif drinks.gif Ты меня уже много раз выручал smile.gif
У меня ещё вопросик сразу возник, что значит low и high?

Автор: volvo 20.09.2006 18:03

Low - наименьшее возможное значение для заданного типа, а High - наибольшее возможное значение... Т.е., чтобы не делать так:

for i_country := _england to _panama do ...
(это - нехорошее решение, мы привязываемся к конкретным значениям, а этого лучше не делать)

делаем так:

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

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