Об игре
Новости
Войти
Регистрация
Рейтинг
Форум
21:52
3523
 online
Требуется авторизация
Вы не авторизованы
   Форумы-->Форум для внеигровых тем-->
1|2

АвторПомощь в Паскале
Короче, нужна помощь в этом Паскале мать его :) Сидим значит мы с девушкой, она говорит: "помоги, у тебя же в школе была информатика". О___о была, но если бы я знал, что понадобиться...
Что требуется: написать программу, которая вычисляет НОД (наибольший общий делитель), используя цикл "ДО". Вот с НОДом у мну есть кое-какие воспоминания, но что такое цикл "ДО"...ппц
Короче, кто может помочь, мне важно сейчас не протупить :)

ЗЫ дэвушка очень красивый =)
типа..
While <условие> do begin
.
.
.
end;
хз, какой там тип, говорю, у меня информатика была один год и то мимолетом, как писать программы хз :)
Надеюсь кто-то сможет полностью написать...
наибольший общий делитель
Я не помню алгоритм его нахождения, а искать лень.
ап
Гугл в помощь. Модешь выложить вычисление НОД, ибо самому считать облом? Тогда будет тебе прога. Или примерный алгоритм
Ну где-то так

program блаблабла;
uses crt;
var a,b,i,c,a1,b1,d:integer;

begin clrscr;
i:=0;
d:=0;
Writeln('Vvedite a i b');
readln(a,b);
if a>b then c:=a else c:=b;
repeat
i:=i+1;
a1:=a/i;
b1:=b/i;
if ((a1 mod 10)=0) and ((b1 mod 10)=0) then
d:=i;
until d<>0;
Writeln('NOD=',d);
readln;
end.

Надеюсь сработает. Писал без Паскаля
для Алфран:
немного не правильно потому что надо по нисходящей,Ю зачем ты тогда &куот;с&куот; вычислял)))
к тому же очень сложно и не с тем циклом я бы сделал так

вар а,б,ц:интегер;

бегин
цлрсцр;
Врителн(ьВведите а и бь);
реадлн(а,б);
иф а&гт;б тхен ц:=б елсе ц:=б;
Вхите ((а див ц)&лт;&гт;а/ц)анд((б див ц)&лт;&гт;б/ц) до ц:=ц-1;
Врителн(ьНОД=ь,ц);
реадлн;
енд.
Кто не понял, еще раз с комментами


program блаблабла; название
uses crt;
var a,b,i,c,a1,b1,d:integer; переменные

begin clrscr;
i:=0; создание нулевых переменных
d:=0;
Writeln('Vvedite a i b');
readln(a,b); Ввод начальных чисел
if a>b then c:=a else c:=b; Определение большего числа
repeat повторять
i:=i+1;
a1:=a/i; делители
b1:=b/i; делители
if ((a1 mod 10)=0) and ((b1 mod 10)=0) then если оба числа делятся нацело
d:=i; мы нашли НОД
until d<>0; пока не найдем нужное число
Writeln('NOD=',d);
readln;
end.


ВНИМАНИЕ! Ошибка в строке if a>b then c:=a else c:=b; должно быть не > а знак <

ВНИМАНИЕ! В программе мои пояснения на русском писать НЕ НУЖНО!
для AZIZE:
А по нормальному можно? меня твое
[quoteцлрсцр;
Врителн(ьВведите а и бь)] доконало
Progam NOD;
var a,b,c:integer;
begin
Writeln('Vvedite a i b');
readln(a,b);
if a>b then c:=b else c:=a;
white ((a div c)<>a/c)or((b div c)<>b/c) do c:=c-1;
Writeln('NOD=',d);
readln;
end.
для Alfran:
Случайно галочку транслитерации поставил)))
Writeln('NOD=',d);

тут Writeln('NOD=',с);
для Alfran:
Кстати твоя прога при любых данных будет всегда выдавать ответ "1"
Progam NOD;
var a,b,c:integer;
begin
Writeln('Vvedite a i b');
readln(a,b);
if a>b then c:=b else c:=a;
white ((a mod c)<>0)or((b mod c)<>0) do c:=c-1;
Writeln('NOD=',c);
readln;
end.

А так еще проще и лучше :-)
не white a while
ne a>b then a a<b then (иначе с меньшим числом деление нацело даст 0)
Это не С++. Не все версии паскаля "поймут" формулировку (a div c)<>a/c)
И не )or( а and т.к. єто ОБЩИЙ делитель. В общем, моя прога правильнее =)
для ПриМат:
То же сакмое только другим боком)))

Я просто привык div-ом пользоваться)))
для AZIZE:
Нет. Для наибольшего значения цикл остановится. Конечно можно подобрать цифры чтоб было 1 но не надо
не white a while
соглавен
ne a>b then a a<b then
посмотри внимательнее у меня берётся меньшее)))
И не )or( а and
АК вот тут ты не прав. цикл будет выполнятся до тех пор пока выполнено хоть одно условие
для Alfran:
учил видимо паскаль давно ты. Или вообще не учил. Потому как кроме опечатки в while ошибки у AZIZE'а нет
1|2
К списку тем
2007-2025, онлайн игры HeroesWM