|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
13.06.2021, 19:03 | #1 |
Пользователь
Регистрация: 07.03.2021
Сообщений: 34
|
Поиск наибольшего общего делителя, C++ (желательно использовать циклы, условие)
Поиск наибольшего общего делителя (DBD) двух натуральных чисел a и b, называемый
Евклидово, словесное описание алгоритма. Напишите программу для решения этой проблемы. Евклидов алгоритм: 1. Исходные данные - натуральные числа a и b. 2. Если числа равны, то любой из них является DBD, и никаких дальнейших действий не предпринимается, в противном случае предпринимаются дальнейшие действия. действия. 3. Определите, какое число больше. 4. Разница между большим и меньшим числами становится значением большего числа. 5. Шаги алгоритма повторяются с шага 2. Проверять. Когда a = 14, b = 4, ответ DBD = 2. |
13.06.2021, 20:14 | #2 |
Старожил
Регистрация: 04.02.2011
Сообщений: 4,550
|
Дык осталось только словесное описание шагов алгоритма заменить операторами языка. Делов-то...
Вперёд и с песней! |
13.06.2021, 20:15 | #3 |
МегаМодератор
СуперМодератор
Регистрация: 09.11.2010
Сообщений: 7,291
|
Что не получается? Один while с if.
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
|
13.06.2021, 20:19 | #4 |
Пользователь
Регистрация: 07.03.2021
Сообщений: 34
|
BDA, код
|
13.06.2021, 20:30 | #5 |
Старожил
Регистрация: 04.02.2011
Сообщений: 4,550
|
Стесняюсь спросить: а хоть одну строчку кода в жизни написать довелось?
|
13.06.2021, 20:38 | #6 |
Пользователь
Регистрация: 07.03.2021
Сообщений: 34
|
digitalis, Довелось
|
13.06.2021, 22:16 | #7 |
МегаМодератор
СуперМодератор
Регистрация: 09.11.2010
Сообщений: 7,291
|
На основе 2 пункта напишите цикл while, на основе пунктов 3-4 напишите if.
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
|
14.06.2021, 08:31 | #8 |
Пользователь
Регистрация: 07.03.2021
Сообщений: 34
|
#include <iostream>
#include <cmath> #include <iomanip> using namespace std; int main() { int a,b,DBD; cout << "a: "; cin >> a; cout << "b: "; cin >> b; DBD = 0; if (a==b) { DBD = b; } else if (a>b) { while (a>b) { a = a - b; DBD = a; } } else if (a<b) { while (a<b) { b = b - a; DBD = b; } } cout << "DBD =" << DBD << endl; return 0; } Код близок к правде, но есть ошибки: например если ввести 14 и 10 ответ 4, вроде должен быть 2. |
14.06.2021, 09:37 | #9 |
Старожил
Регистрация: 04.02.2011
Сообщений: 4,550
|
Хоть давно не писал на С, но вроде так:
Код:
DBD никогда не бывает нулём, бо на 0 делить ниизя. И Код:
Вот как мааленькая задачка наводит на большие размышления. А ещё в древней Месопотамии было принято форматировать исходник для удобства чтения и обрамлять его тегами CODE, если постишь их в форум. Кстати, задумался об вопрос: if...;else... считаются одним оператором и без {} в данном случае ничего страшного не произошло бы? Вопрос к знатокам, проверить не на чем, С++ у меня на компе отродясь не было. Последний раз редактировалось digitalis; 14.06.2021 в 15:13. |
15.06.2021, 08:04 | #10 |
фрилансер
Форумчанин
Регистрация: 11.10.2019
Сообщений: 960
|
digitalis,
в данном случае нормально, так как в ветках стоят одиночные выражения. Но лучше всегда ставить скобки, это читабельнее и безошибочнее Код:
кстати, к слову об одном операторе, вот такой неприятный момент тоже нужно помнить (не понимаю, как разрабы его допустили и почему всё ещё не исправили) Код:
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
VBA. Напишите процедуру на языке VBA, которая определяет сократимость дроби a/b (b≠0) . Вычисление наибольшего общего делителя (НОД) чисел a и b оформить в виде функции. | Lizka | Microsoft Office Excel | 2 | 23.04.2017 11:07 |
Нахождения наибольшего общего делителя в виде подпрограммы | Тина37 | Паскаль, Turbo Pascal, PascalABC.NET | 1 | 04.03.2013 16:48 |
Нахождение наибольшего общего делителяНахождение наибольшего общего делителя | A_Orlov | Паскаль, Turbo Pascal, PascalABC.NET | 1 | 27.04.2010 16:53 |
Нахождение наибольшего общего делителя | fs444 | Общие вопросы C/C++ | 4 | 29.03.2010 19:07 |
нахождение наибольшего общего делителя и наименьшего общего кратного | made in russia | Помощь студентам | 2 | 21.12.2008 23:36 |