|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » Delphi - Почему моя программа выдает неверный результат? |
|
Delphi - Почему моя программа выдает неверный результат?
|
![]() Новый участник Сообщения: 36 |
Почему моя программа ввыдает неверный результат?
Почему? Надо было найти НОД(найбольший общий делитель) var input,output:text; n1,n2,d:real; begin assign(input,'input.txt'); reset(input); assign(output,'output.txt'); rewrite(output); readln(input,n1,n2); if n1>=n2 then d:=n1; if n2>=n1 then d:=n2; while ((n1/d)<>trunc(n1/d)) and ((n2/d)<>trunc(n2/d)) do d:=d-1; writeln(output,trunc(d)); close(input); close(output) end. |
|
Отправлено: 20:05, 29-01-2013 |
![]() Старожил Сообщения: 165
|
Профиль | Отправить PM | Цитировать var input,output:text; n1,n2,d:real; begin assign(input,'input.txt'); reset(input); assign(output,'output.txt'); rewrite(output); readln(input,n1,n2); if n1>=n2 then d:=n1; if n2>=n1 then d:=n2; while ((n1/d)<>trunc(n1/d)) OR ((n2/d)<>trunc(n2/d)) do d:=d-1; writeln(output,trunc(d)); close(input); close(output) end. Для больших чисел он работает очень медленно. счас напишу получше алгоритм. |
Отправлено: 20:13, 29-01-2013 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
![]() Новый участник Сообщения: 36
|
Профиль | Отправить PM | Цитировать Pavluha, Но при целочисельных типах, кажется, нельзя делить
|
Отправлено: 20:22, 29-01-2013 | #3 |
![]() Старожил Сообщения: 165
|
Профиль | Отправить PM | Цитировать var n1,n2,r:longint; function nod(a,b:longint):longint; begin while (a<>0)and(b<>0) do if a>b then a:=a mod b else b:=b mod a; nod:=a+b; end; begin readln(n1,n2); r:=nod(n1,n2); writeln(r); end. Цитата paul_8:
если вдруг нужно будет найти НОК (наименьшее общее кратное, воспользуйся формулой n1*n2=НОД(n1,n2)*НОК(n1,n2).) |
|
Последний раз редактировалось Pavluha, 29-01-2013 в 20:27. Причина: исправил ошибку в алгоритме. Отправлено: 20:22, 29-01-2013 | #4 |
![]() Новый участник Сообщения: 36
|
Профиль | Отправить PM | Цитировать Отличное решение! Главное рациональное... Завтра олимпиада, мне бы этой рациональности завтра
|
|
Отправлено: 20:37, 29-01-2013 | #5 |
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Офис и Текст - Программа выдает ошибку при печати | Капитан Боян | Программное обеспечение Windows | 2 | 27-05-2011 21:13 | |
Почему моя тема оказалась в данном разделе? | Coutty | Металлолом | 0 | 22-02-2010 09:05 | |
[решено] Почему не совпадает результат: WinGetPos и WM_MOVE? | proxy | AutoIt | 2 | 03-04-2009 01:42 | |
Моя первая программа, поделитесь мнениями! | systemcrash | Программирование и базы данных | 1 | 17-12-2005 01:03 |
|