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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 22.08.2020, 19:58   #1
inoasX
Новичок
Джуниор
 
Регистрация: 22.08.2020
Сообщений: 1
По умолчанию Циклы for, while

Требуется написать программу, которая будет получать на входе целые числа A և B будет печатать число цифркоторые делятся на 7 без остатка в диапазоне [A, B]
inoasX вне форума Ответить с цитированием
Старый 22.08.2020, 20:11   #2
Arigato
Высокая репутация
СуперМодератор
 
Аватар для Arigato
 
Регистрация: 27.07.2008
Сообщений: 15,551
По умолчанию

Цитата:
Сообщение от inoasX Посмотреть сообщение
число цифр
Только две цифры делятся на 7 без отстатка - это цифра 0 и цифра 7.
Arigato вне форума Ответить с цитированием
Старый 23.08.2020, 08:36   #3
newerow1989
Я самый любопытный
Участник клуба
 
Аватар для newerow1989
 
Регистрация: 24.07.2012
Сообщений: 1,949
По умолчанию

Код:
var a,b,i:integer;
begin
   Write('A = '); Readln(a);
   Write('B = '); Readln(b);
   For i:=a to b do
      If i mod 7=0 then
         Writeln(i);
   Readln;
end.
С запрограммированным приветом, Неверов Евгений!
Сайт: http://newerow1989.ru
[Паскаль] [Delphi]
newerow1989 вне форума Ответить с цитированием
Старый 23.08.2020, 09:33   #4
digitalis
Старожил
 
Аватар для digitalis
 
Регистрация: 04.02.2011
Сообщений: 4,550
По умолчанию

Не годится. По условию нужно напечатать количество чисел ( а не цифр, как по простоте написал ТС ), делящихся на 7. Так что счётчик придётся прикрутить.
Тщательнее надо

Последний раз редактировалось digitalis; 23.08.2020 в 09:38.
digitalis вне форума Ответить с цитированием
Старый 23.08.2020, 09:39   #5
newerow1989
Я самый любопытный
Участник клуба
 
Аватар для newerow1989
 
Регистрация: 24.07.2012
Сообщений: 1,949
По умолчанию

Код:
var a,b,i,c:integer;
begin
   Write('A = '); Readln(a);
   Write('B = '); Readln(b);
   c:=0;
   For i:=a to b do
      If i mod 7=0 then
         Inc(c);
   Writeln(c);
   Readln;
end.
С запрограммированным приветом, Неверов Евгений!
Сайт: http://newerow1989.ru
[Паскаль] [Delphi]
newerow1989 вне форума Ответить с цитированием
Старый 23.08.2020, 10:47   #6
ViktorR
Старожил
 
Регистрация: 23.10.2010
Сообщений: 2,309
По умолчанию

И снова newerow1989 не прав.
В заголовке написано, что нужны циклы for и while.
Да и с чего было принято решение, что это Pascal.
Вот хорошее решение на Python.
Код:
def del_7(a):
    '''Проверка делимости на 7
       Возвращает True, если делится
       иначе False'''
    m = a // 10
    ost = a % 10
    while m:
        m = 3 * m + ost
        ost = m % 10
        m = m // 10
    return False if ost - 7 else True

print('Определите диапазон чисел, в котором подсчитываем числа, делящиеся на 7.')
a, b = input('Введите два целых числа: ').split()
a = int(a); b = int(b)
a, b = (min(a, b), max(a, b))
count = 0
for i in range(a, b + 1):
    if del_7(i):
        count += 1
print('Count = ', count) # вывод количества чисел, делящихся на 7
print(del_7(1730736))  # проверка делимости числа
Тут использованы нужные циклы и даже определена функция (бонус к заданию)

PS: Так, сплошной ржачь.
Использован один из признаков делимости числа на 7, см. Вики
Как-то так, ...
ViktorR вне форума Ответить с цитированием
Старый 23.08.2020, 12:04   #7
Алексей1153
фрилансер
Форумчанин
 
Регистрация: 11.10.2019
Сообщений: 965
По умолчанию

мой вариант )

Код:
#include <iostream>

int main()
{
    int A=0;
    int B=70;
    
    //if(A%7){A+=(7-A%7);}
    while(A%7)A++;
    
    int counter=0;
    
    //counter=int((B-A)/7+1);
    for(int a=A; a<=B; a+=7){counter++;std::cout<<a<<'\n';}
    
    std::cout<<"counter="<<counter;
    
    return 0;
}
Алексей1153 вне форума Ответить с цитированием
Старый 23.08.2020, 12:42   #8
ViktorR
Старожил
 
Регистрация: 23.10.2010
Сообщений: 2,309
По умолчанию

Используем вариант Алексей1153.
Найдём делимое не только снизу, но и сверху.
Тогда в версии с for или только while:
Код:
print('Определите диапазон чисел, в котором подсчитываем числа, делящиеся на 7.')
a, b = input('Введите два целых числа: ').split()
a = int(a); b = int(b)
a, b = (min(a, b), max(a, b))
while a % 7:
    a += 1
while b % 7:  # Вариант без for
    b -= 1
# for i in range(b, 6, -1):
#     if not (b % 7):
#         break
print((b - a) // 7 + 1)
PS: Хорошее задание. Можно и повыпендриваться
Как-то так, ...
ViktorR вне форума Ответить с цитированием
Старый 23.08.2020, 13:20   #9
digitalis
Старожил
 
Аватар для digitalis
 
Регистрация: 04.02.2011
Сообщений: 4,550
По умолчанию

Хорошо бы ещё на ЛИСП'е или АЛГАМС'е
digitalis вне форума Ответить с цитированием
Старый 24.08.2020, 06:55   #10
Алексей1153
фрилансер
Форумчанин
 
Регистрация: 11.10.2019
Сообщений: 965
По умолчанию

ViktorR, раз разрешено повыпендриваться, тогда так

Код:
#include <iostream>
#include <tuple>

int main()
{
    using namespace std;
    //мне лень писать ввод, да и вводить потом тоже.
    //Поэтому я пользуюсь отладочными константами :D
    const int A_entered=100;
    const int B_entered=13;
    
    constexpr int mod_x=7;
    
    auto [A,B]=tuple{min(A_entered,B_entered),max(A_entered,B_entered)};
    while(A%mod_x)A++;
    while(B%mod_x)B--;
    
    int counter=0;
    for(int a=A; a<=B; a+=mod_x){counter++;cout<<a<<'\n';}
    cout<<"counter="<<counter;
    
    return 0;
}
Алексей1153 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Итерационные циклы, циклы с фактериалами, вообще не могу догнать( помогите плиз! Svetlana_ Помощь студентам 2 01.11.2015 18:58
1.FOR, циклы 2. While Maddy101d Помощь студентам 6 11.11.2014 13:50
синусы и ко. циклы, вроде циклы Scorch92 Паскаль, Turbo Pascal, PascalABC.NET 2 22.12.2010 19:26
Циклы - вложенны циклы? tigga Microsoft Office Excel 5 19.02.2010 23:36
Циклы For.C++ lil duffy Помощь студентам 5 14.01.2010 23:27