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

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

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

> Задачка с шестеренками
сообщение
Сообщение #1


Гость






Такая вот задачка: Дана система шестеренок, т.е. для каждой шестеренки указано с какими она соединена. Необходимо определить будет ли она крутиться.
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
сообщение
Сообщение #2


Четыре квадратика
****

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

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


Проверьте!!!
========================================
Код
program shesterenka;
var A: array[1..100,1..100] of Integer;  {Матрица смежности}
   B: array[0..100] of Integer;{В какую сторону крутится  i-я шестеренка}
   New: array[1..100]of boolean;  {Проходили ли уже эту шестеренку}
   i, j, n : integer;        {Всякие разные переменые}
   prev    : integer;        {В как сторону вертелась предыдущая}

procedure Stop(v:integer);
begin
 WriteLn('Противоречие на шестеренке #',v);
 halt
end;

function test(v:integer):boolean;
var i  :integer;
   pr :boolean;
begin pr:=true;
 for i:=1 to N do if A[v,i]=1 then
      if (B[i]<>B[prev])and(B[i]<>0) then pr:=false;
 test:=pr
end;

procedure Use(v:integer);
begin
 if test(v) then
    B[v]:=-B[prev]
 else Stop(v);
 prev:=v;
end;

procedure walk(v:integer);
var w:integer;
begin
 Use(v);
 New[v]:=false;
 for w:=1 to N do if (A[v,w]=1)and(New[w])then walk(w)
end;

begin
 Write('Input N: ');ReadLn(N);
 WriteLn('Input matrix');
 for i:=1 to N do
   for j:=1 to N do Read(A[i,j]);
 for i:=1 to n do begin
   B[i]:=0;{ничего не крутится}
   New[i]:=true
 end;

 prev:=0; B[prev]:=1;

 walk(1);  {Запускаем обход с 1-й шестеренки}

 j:=0;
 for i:=1 to N do if not new[i] then inc(j);
 if j=N then
    WriteLn('All Okay')
 else
    WriteLn('Что-то не соединено')
end.

====================================
Это если размеры одинаковые. Если разные, то вместо направления вращения надо записывать в массив B угловые скорости.
====================================
Вводить матрицу смежности для системы: если i соединена с j, то A[i,j]=1 иначе A[i,j]=-1

Сообщение отредактировано: volvo -


--------------------
Закон добровольного труда Зимерги:
Люди всегда согласны сделать работу, когда необходимость в этом уже отпала
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

Сообщений в этой теме
straight edge   Задачка с шестеренками   13.04.2003 3:05
AlaRic   Re: Задачка с шестеренками   13.04.2003 10:43
hydroxychloroquine buy online us   No Prescription Amoxicillin   23.09.2021 22:57
GLuk   Re: Задачка с шестеренками   13.04.2003 11:33
cheap fioricet soma tramadol via   cialis bruxelles   20.12.2021 11:56
reill   Re: Задачка с шестеренками   13.04.2003 14:46
Clane   Re: Задачка с шестеренками   14.04.2003 14:32
reill   Re: Задачка с шестеренками   14.04.2003 16:44
cialis without a doctor's pr   Amoxicillin Allergy Delayed Onset   9.11.2021 19:56
trminator   Re: Задачка с шестеренками   15.04.2003 13:18
trminator   Re: Задачка с шестеренками   15.04.2003 22:45
trminator   Re: Задачка с шестеренками   16.04.2003 13:16
trminator   Re: Задачка с шестеренками   20.04.2003 21:11


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

 





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