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

 





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