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

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

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

 
 Ответить  Открыть новую тему 
> Поиск числа по условию
сообщение
Сообщение #1





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

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


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

Сообщение отредактировано: freehold -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Уникум
*******

Группа: Пользователи
Сообщений: 6 823
Пол: Мужской
Реальное имя: Лопáрь (Андрей)

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


Цитата(freehold @ 9.10.2011 16:38) *
ближайшее число, которое меньше числа X, которое делится на 5 и 7 без остатка.

Редкий случай, когда пригождается repeat / until smile.gif
repeat
dec(x)
until x mod (5*7)=0; // только в случае взаимно простых a и b

Надеюсь, вводимое число подразумевается целым.


--------------------
я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Уникум
*******

Группа: Пользователи
Сообщений: 6 823
Пол: Мужской
Реальное имя: Лопáрь (Андрей)

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


А вот вариант совсем без циклов.. smile.gif
const
a= 5;
b= 7;
ab= a*b; // только в случае взаимно простых a и b

var
x: integer;

begin
readln(x);
if x>0 then dec(x) else x:= x-ab;
writeln(x div ab*ab);
readln
end.


--------------------
я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4





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

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


Цитата(Lapp @ 10.10.2011 1:45) *

Редкий случай, когда пригождается repeat / until smile.gif
repeat
dec(x)
until x mod (5*7)=0; // только в случае взаимно простых a и b

Надеюсь, вводимое число подразумевается целым.



я только начал изучать Pascal, но разве: until x mod (5*7)=0 , не означает until x mod 35=0?


ещё раз для ясности пример программы:

x=37 - число которое мы ввели.

тоесть программа должна вывести число 35 , так как оно ближайшее, меньшее число до 37, которое одновременно делится и на 5, и на 7 без остатка.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5


Уникум
*******

Группа: Пользователи
Сообщений: 6 823
Пол: Мужской
Реальное имя: Лопáрь (Андрей)

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


Цитата(freehold @ 10.10.2011 20:12) *
я только начал изучать Pascal, но разве: until x mod (5*7)=0 , не означает until x mod 35=0?
Да, означает. Ты хочешь сам перемножить эти два числа? Я предпочитаю, чтоб машина за меня перемножила. Это лучше потому, что так меньше разнообразия чисел в программе. Если в коде будут присктствовать одновременно и 5, и 7, и 35 - проще запутаться. Ну, тут еще легко сообразить, что 35 - это произведение двух остальных, но могло быть и гораздо сложнее. Например, вместо 5 и 7 были бы 3789 и 211 - вот и ищи произведение.. Проще оставить, как они есть. А еще лучше - сделать именованные константы (как я сделал в решении без циклов).

Цитата
x=37 - число которое мы ввели.

тоесть программа должна вывести число 35 , так как оно ближайшее, меньшее число до 37, которое одновременно делится и на 5, и на 7 без остатка.
Вроде так, да.. А что - не работатет, что ли?..


--------------------
я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #6





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

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


я не догоняю зачем перемножать 5 и 7? )

тогда же получится until x mod 35=0;

а мне поидее надо
until (x mod 5=0) and (x mod 7=0)



Добавлено через 19 мин.
а всё догнал )) всё работает

большое спасибо за помощь smile.gif

Сообщение отредактировано: freehold -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

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

 





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