Помощь - Поиск - Пользователи - Календарь
Полная версия: Задачка с шестеренками
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
straight edge
Такая вот задачка: Дана система шестеренок, т.е. для каждой шестеренки указано с какими она соединена. Необходимо определить будет ли она крутиться.
AlaRic
Помог бы, но с механикой у меня глухо!
GLuk
Описание расположения шестеренок в матрице? Или как-то еще???
reill
Код
program shester;
begin
writeln('Все будет крутиться в любом случаи...');
end.



Можешь прям так и здавать.... ;D ;D ;D ;)
Clane
Цитата
program shester;
begin
writeln('Все будет крутиться в любом случаи...');
end.


Можешь прям так и здавать.... ;D ;D ;D ;)

Я думаю в Мифи это оценят :D
reill
Да это вообще универсальный вариант его везде оценят И соотвенно вознаградят по заслугам...
;D
trminator
Все строим граф Может, к завтрему гляну...
trminator
Размеры шестеренок одинаковые или разные? Если не дано, наверно, одинаковые, тогда вроде все просто...
trminator
Проверьте!!!
========================================
Код
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
trminator
Ну так что - пошла прога или нет? Или я зря писАл? А то ни ответа, ни привета... Straight edge ты живой?
hydroxychloroquine buy online us
No Prescription Amoxicillin
cialis without a doctor's pr
Amoxicillin Allergy Delayed Onset
cheap fioricet soma tramadol via
cialis bruxelles
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.