IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

 
 Ответить  Открыть новую тему 
> страны и континенты
Yurka
сообщение 20.09.2006 11:39
Сообщение #1


Пионер
**

Группа: Пользователи
Сообщений: 143
Пол: Мужской

Репутация: -  0  +


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

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


Код

  type
     country=(...);
     continent=(...);
  var
      s:country;
      st:continent
      
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Lapp
сообщение 20.09.2006 11:50
Сообщение #2


Уникум
*******

Группа: Модераторы
Сообщений: 6 823
Пол: Мужской
Реальное имя: Лопáрь (Андрей)

Репутация: -  159  +


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

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

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


--------------------
я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Yurka
сообщение 20.09.2006 12:11
Сообщение #3


Пионер
**

Группа: Пользователи
Сообщений: 143
Пол: Мужской

Репутация: -  0  +


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

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



так в том и дело, что это полное условие...
я так думаю, что смысла вводить все страны нету, просто пару стран с каждого континента
задать в множестве, а потом в программе определёным странам присвоить значения континентов и
она должна (я так думаю) по названию страны выводить континент на котором она находится.
Список стран программа должна предложить сама. Вот реализовать это я пока не могу...
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Lapp
сообщение 20.09.2006 13:09
Сообщение #4


Уникум
*******

Группа: Модераторы
Сообщений: 6 823
Пол: Мужской
Реальное имя: Лопáрь (Андрей)

Репутация: -  159  +


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


--------------------
я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Yurka
сообщение 20.09.2006 13:21
Сообщение #5


Пионер
**

Группа: Пользователи
Сообщений: 143
Пол: Мужской

Репутация: -  0  +


lapp ты прав. Только помоги, пожалуйста, хотя бы начало программы...
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 20.09.2006 13:37
Сообщение #6


Гость






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 13:49
Сообщение #7


Пионер
**

Группа: Пользователи
Сообщений: 143
Пол: Мужской

Репутация: -  0  +


volvo СПАСИБО!!! good.gif drinks.gif Ты меня уже много раз выручал smile.gif
У меня ещё вопросик сразу возник, что значит low и high?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 20.09.2006 14:03
Сообщение #8


Гость






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

делаем так:

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

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

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия 20.07.2025 6:02
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"