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

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

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

> Задача на перечислимый тип, Нужна помощь
TORETO
сообщение 6.12.2007 11:32
Сообщение #1


Новичок
*

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

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


Часть кода программы:

type rep=(Russia,Ukraina,Gruzia,Belorussia,Azerbaijan);
var
 NBH:array[rep,rep] of boolean;
 r:rep;



Элемент NBH[a,b] равен true, если страны a и b имеют общую границу, и равен false иначе.Определить r-страну, имеющую наибольшее число соседей среди перечисленных стран.

Буду благодарен любой помощи!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов(1 - 8)
volvo
сообщение 6.12.2007 12:20
Сообщение #2


Гость






Что-то вот такого типа:

type
  rep = (
    Russia, Ukraina, Gruzia, Belorussia, Azerbaijan
  );
var
  NBH: array[rep, rep] of boolean;
  i, j, r: rep;
  max, count: integer;

begin

  { Здесь - добавить заполнение матрицы  }

  max := 0;
  r := low(rep);
  for i := low(rep) to high(rep) do begin
    count := 0;
    for j := low(rep) to high(rep) do
      if NBH[i, j] then inc(count);

    if max < count then begin
      r := i; max := count;
    end;
  end
  { в R содержится искомая страна }
end.

 К началу страницы 
+ Ответить 
TORETO
сообщение 6.12.2007 20:31
Сообщение #3


Новичок
*

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

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


Как заполнить матрицу,через case как-то или другим способом? Никак не пойму.Объясните!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Client
сообщение 6.12.2007 20:37
Сообщение #4


Профи
****

Группа: Пользователи
Сообщений: 865
Пол: Мужской
Реальное имя: Вячеслав

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


Просто так НЕЛЬЗЯ вводить/выводить значения перечислимого типа. Тебе надо добавить переменную целого типа и в зависимости от ее значения с помощью case'а определить страну (если оно тебе надо)
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 6.12.2007 20:49
Сообщение #5


Гость






Можно вообще задать матрицу типизированной константой, кстати...

const
  NBH: array[rep, rep] of boolean = (
    {ru}    {ua}   {gr}   {by}   {md}
    (false, false, false, false, false), { Россия граничит с ... }
    (false, false, false, false, false), { Украина граничит с ... }
    (false, false, false, false, false), { Грузия граничит с ... }
    (false, false, false, false, false), { Белоруссия граничит с ... }
    (false, false, false, false, false)  { Молдова граничит с ... }
  );

Поменяй где есть границы false на true, и все...

Сообщение отредактировано: volvo - 6.12.2007 20:50
 К началу страницы 
+ Ответить 
TORETO
сообщение 6.12.2007 21:21
Сообщение #6


Новичок
*

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

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


Нет.Так нельзя должно быть что-то наподобие:


case x of
0: r:=Russia;
1: r:=Gruzia;
......
end;



А вот как дальше то делать?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
TORETO
сообщение 11.12.2007 17:19
Сообщение #7


Новичок
*

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

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


Вот, что неправильно? Не могу найти нужную страну и вывести ее


program Lab7;
uses crt;
type
 rep=(Russia,Ukraina,Gruzia,Belorussia,Azerbaijan);
var
 NBH:array[rep,rep] of boolean;
 r:rep;
 max,count,i,j,k:integer;
begin
 clrscr;
 max:=0;
 for i:=0 to 4 do begin
 case i of
 0: writeln('Russia granichit s');
 1: writeln('Ukraina granichit s');
 2: writeln('Gruzia granichit s');
 3: writeln('Belorussia granichit s');
 4: writeln('Azerbaijan granichit s');
 end;
 for j:=0 to 4 do begin
  case j of
  0:writeln('Russia:');
  1:writeln('Ukraina:');
  2:writeln('Gruzia:');
  3:writeln('Belorussia:');
  4:writeln('Azerbaijan:');
  end;
  readln(k);
  if k=1 then
  NBH[rep(i),rep(j)]:=true else
  NBH[rep(i),rep(j)]:=false;
  writeln(NBH[rep(i),rep(j)]);
 r:=rep(0);
 max:=0;
 for i:=0 to 4 do begin
  count:=0;
   for j:=0 to 4 do
    if NBH[rep(i),rep(j)] then inc(count);
   if max<count then begin
    r:=rep(i);
    max:=count;
    end;
 end;
 end;
 end;
 writeln(NBH[rep(i),rep(j)]);
 readln;
end.


 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
TORETO
сообщение 12.12.2007 20:14
Сообщение #8


Новичок
*

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

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





program Lab7;
uses crt;
type
 rep=(Russia,Ukraina,Gruzia,Belorussia,Azerbaijan);
var
 NBH:array[rep,rep] of boolean;
 r:rep;
 max,count,i,j,k:integer;
begin
 clrscr;
 max:=0;
 for i:=0 to 4 do begin
 case i of
 0: writeln('Russia granichit s');
 1: writeln('Ukraina granichit s');
 2: writeln('Gruzia granichit s');
 3: writeln('Belorussia granichit s');
 4: writeln('Azerbaijan granichit s');
 end;
 for j:=0 to 4 do begin
  case j of
  0:writeln('Russia:');
  1:writeln('Ukraina:');
  2:writeln('Gruzia:');
  3:writeln('Belorussia:');
  4:writeln('Azerbaijan:');
  end;
  readln(k);
  case k of
  0:NBH[rep(i),rep(j)]:=false;
  1:NBH[rep(i),rep(j)]:=true;
  end;
  writeln(NBH[rep(i),rep(j)]);
 end;
 end;
 readln;
end.



Вот.Массив вроде заполняется.Как теперь найти нужную страну?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
TORETO
сообщение 13.12.2007 21:11
Сообщение #9


Новичок
*

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

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


Вот чут-чуть осталось доделать.Нужно еще найти максимальное значение счетчика count.Помогите это сделать и еще как вывести страну.Я знаю что это несложно, но не получается у меня.Вот код:

program Lab7;
uses crt;
type
 rep=(Russia,Ukraina,Gruzia,Belorussia,Azerbaijan);
var
 NBH:array[rep,rep] of boolean;
 r:rep;
 max,count,i,j,k,a:integer;
begin
 clrscr;
 for i:=0 to 4 do begin
 case i of
 0: writeln('Russia granichit s');
 1: writeln('Ukraina granichit s');
 2: writeln('Gruzia granichit s');
 3: writeln('Belorussia granichit s');
 4: writeln('Azerbaijan granichit s');
 end;
 for j:=0 to 4 do begin
  case j of
  0:writeln('Russia:');
  1:writeln('Ukraina:');
  2:writeln('Gruzia:');
  3:writeln('Belorussia:');
  4:writeln('Azerbaijan:');
  end;
  readln(k);
  case k of
  0:NBH[rep(i),rep(j)]:=false;
  1:NBH[rep(i),rep(j)]:=true;
  end;
  if NBH[rep(i),rep(j)] then
  count:=count+1;
end;
writeln('Kol-vo sosedei ',count);
if count>0 then
count:=0;
end;
 readln;
end.


 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

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

 

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