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

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

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

 
 Ответить  Открыть новую тему 
> Задача на перечислимый тип, Нужна помощь
сообщение
Сообщение #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 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #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.

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


Новичок
*

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

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


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


Профи
****

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

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


Просто так НЕЛЬЗЯ вводить/выводить значения перечислимого типа. Тебе надо добавить переменную целого типа и в зависимости от ее значения с помощью case'а определить страну (если оно тебе надо)
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #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


Новичок
*

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

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


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


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



А вот как дальше то делать?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #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 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #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 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #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

 



- Текстовая версия 15.04.2025 16:29
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name