Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Object Pascal: кроссплатформенные технологии > множество стран


Автор: provod 20.9.2006, 13:01
Помогите задачку на множества разобрать:

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

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

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

Автор: Alexeis 20.9.2006, 13:27
Ну думаю проще всего сделать 7 переменных-множествадля каждого континента и хранить в них названия стран ввиде множества;
Чтобы узнать на каком континенте достаточно оператором in проверить по очереди не входит ли страна в данный континент.

Автор: provod 20.9.2006, 13:31
можна и так конечно только вот названия типов и переменых 
 type
     country=(...);
     continent=(...);
  var
      s:country;
      st:continent

это всё уже есть в самом условии...

Автор: Alexeis 20.9.2006, 13:45
provod, чет я не понял где тут множества
Код

  type
     country=(...);
     continent=(...);
 - это объявление перечисляемого типа, может вообще не использовать множества, или это требуется по условию задачи?

Автор: Rodman 20.9.2006, 14:00
кажется enum используют для описания множества

Автор: Alexeis 20.9.2006, 14:06
Цитата(Rodman @  20.9.2006,  14:00 Найти цитируемый пост)
кажется enum используют для описания множества 

Да множество описывается легко
Код

type 
  Tcountry = (Aljir, livia, Egipet);
var
  Country : set of  Tcountry;

Begin
  Country := [Aljir, livia, Egipet];
end;

Но что с ним делать?

Автор: volvo877 20.9.2006, 16:01
alexeis1, вот такой набросок вроде устроил автора:

Код
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.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)