Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 05.10.2012, 16:04   #1
Иварунька
Пользователь
 
Регистрация: 30.09.2012
Сообщений: 12
По умолчанию Не понятка с програмкой

По сути программа очень простая, даже нету смысла описывать что она должна делать, но всё равно выдаёт не правильный результат.
Спасибо)

Код:
program divider;
uses crt;
var N: integer;
begin
clrscr;
writeln('введите любое целое число= ');
readln(N);

while ((N mod 5)<>0) and ((N mod 7)<>0)
do

N:=N+1;
writeln('Ближаёшее число которое делиться на 5 и 7 без остатка= ',N);
readln;

end.
Иварунька вне форума Ответить с цитированием
Старый 05.10.2012, 16:10   #2
DiemonStar
Старожил
 
Регистрация: 08.02.2012
Сообщений: 2,173
По умолчанию

Цитата:
Код:
while ((N mod 5)<>0) and ((N mod 7)<>0)
do

N:=N+1;
поменяйте на
Код:
while ((N mod 5)<>0) or ((N mod 7)<>0) do
  N:=N+1;
но, с учётом того, что 5 и 7 - простые числа, то проще находить N mod 35

или вообще так:
Код:
N := Round(N / 35) * 35;
и не нужны никакие циклы...
Правильно поставленная задача - три четверти решения.
DiemonStar вне форума Ответить с цитированием
Старый 05.10.2012, 16:33   #3
Иварунька
Пользователь
 
Регистрация: 30.09.2012
Сообщений: 12
По умолчанию

Пасибо, ответ совпал, но мне не доходит почему, должны же 2 условия совпадать(то есть число должно поделиться на 5 и 7 ) а оператор or предусматривает завершение цикла если одно условие выполняется(или одно или другое)??
Иварунька вне форума Ответить с цитированием
Старый 05.10.2012, 16:46   #4
DiemonStar
Старожил
 
Регистрация: 08.02.2012
Сообщений: 2,173
По умолчанию

Цитата:
а оператор or предусматривает завершение цикла если одно условие выполняется(или одно или другое)??
Изучайте операторы. Конструкция While ... do предусматривает работу цикла пока условие выполняется.

т.е. в вашем случае, если одно из условий не выполнилось, то цикл заканчивал работу - считать будет до ближайшего числа делящегося на 5 или 7 без остатка.

и, кстати, условие задачи было бы не лишним: ваше решение подразумевает ближайшее число, большее того, которое было введено

Например: ввели 36; по-логике, ближайшее число = 35, а ваш алгоритм выдаст 70.

И какое из решений правильное без условия абсолютно непонятно...
Правильно поставленная задача - три четверти решения.

Последний раз редактировалось DiemonStar; 05.10.2012 в 16:53.
DiemonStar вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите с Паскаль -програмкой Ctaniclav Помощь студентам 2 07.01.2010 23:38
Помогите с програмкой LuBuMaster Общие вопросы C/C++ 4 05.11.2009 16:56
Помогите с програмкой на C++ LuBuMaster Помощь студентам 5 01.11.2009 10:38
помогите с програмкой Lehanidze Помощь студентам 4 23.07.2009 18:24
Помогите с програмкой sergiksergik Помощь студентам 6 10.04.2009 22:52