Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

Вернуться   Форум программистов > C++ > Общие вопросы C/C++
Регистрация

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


Донат для форума - использовать для поднятия настроения себе и модераторам

А ещё здесь можно купить рекламу за 25 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru

Ответ
 
Опции темы
Старый 12.12.2018, 23:54   #1
Blacit
 
Регистрация: 09.12.2018
Сообщений: 8
Репутация: 10
По умолчанию Вычисление кубического корня.

Здравствуйте. Моя программа может вычислять только квадратный. А нужно как-то модернизировать до кубического. Использовался Вавилонский метод, его и нужно как-то сделать, чтобы кубический корень мог вычислять.
Нельзя использовать if, do и подобное.
Если кто-то поможет/подскажет, то буду благодарен.

Код:
#include <iostream>
using std::cout;
using std::cin;
using std::endl;
 
int main()
{
// Локализация
    setlocale( LC_ALL, "Russian");
// Обязательно должен быть float, для double слишком большой разброс чисел и нужно ещё больше раз формулу писать
float num;
// Присваиваем число
cout << "Введите число, чтобы найти квардратный корень: ";
cin >> num;
// Проверка введённого числа
cout << "Ваше первоначальное число: " << num << endl;
// Формула
float result = num / 2.0f;
 
result = (result + num/result) / 2.0f;
result = (result + num/result) / 2.0f;
result = (result + num/result) / 2.0f;
result = (result + num/result) / 2.0f;
result = (result + num/result) / 2.0f;
result = (result + num/result) / 2.0f;
result = (result + num/result) / 2.0f;
result = (result + num/result) / 2.0f;
result = (result + num/result) / 2.0f;
result = (result + num/result) /2.0f;
result = (result + num/result) / 2.0f;
result = (result + num/result) / 2.0f;
result = (result + num/result) / 2.0f;
result = (result + num/result) / 2.0f;
result = (result + num/result) / 2.0f;
result = (result + num/result) / 2.0f;
// Округление числа
cout.precision(2);
// Вывод результата
cout << "Ваш конечный результат: " << result << endl;
}
Blacit вне форума   Ответить с цитированием
Старый 13.12.2018, 01:34   #2
Blacit
 
Регистрация: 09.12.2018
Сообщений: 8
Репутация: 10
По умолчанию

Готовый ответ:

Код:
#include <iostream>
using std::cout;
using std::cin;
using std::endl;
 
int main()
{
// Локализация
    setlocale( LC_ALL, "Russian");
// Обязательно должен быть float, для double слишком большой разброс чисел и нужно ещё больше раз формулу писать
double num;
// Присваиваем число
cout << "Введите число, чтобы найти кубический корень: ";
cin >> num;
// Проверка введённого числа
cout << "Ваше первоначальное число: " << num << endl;
// Формула
double result = num / 3.0;
 
result = (2. * result + num/ (result * result)) / 3.0;
result = (2. * result + num/ (result * result)) / 3.0;
result = (2. * result + num/ (result * result)) / 3.0;
result = (2. * result + num/ (result * result)) / 3.0;
result = (2. * result + num/ (result * result)) / 3.0;
result = (2. * result + num/ (result * result)) / 3.0;
result = (2. * result + num/ (result * result)) / 3.0;
result = (2. * result + num/ (result * result)) / 3.0;
result = (2. * result + num/ (result * result)) / 3.0;
result = (2. * result + num/ (result * result)) / 3.0;
result = (2. * result + num/ (result * result)) / 3.0;
result = (2. * result + num/ (result * result)) / 3.0;
result = (2. * result + num/ (result * result)) / 3.0;
result = (2. * result + num/ (result * result)) / 3.0;
result = (2. * result + num/ (result * result)) / 3.0;
result = (2. * result + num/ (result * result)) / 3.0;
result = (2. * result + num/ (result * result)) / 3.0;
result = (2. * result + num/ (result * result)) / 3.0;
result = (2. * result + num/ (result * result)) / 3.0;
result = (2. * result + num/ (result * result)) / 3.0;
result = (2. * result + num/ (result * result)) / 3.0;
result = (2. * result + num/ (result * result)) / 3.0;
result = (2. * result + num/ (result * result)) / 3.0;
result = (2. * result + num/ (result * result)) / 3.0;
result = (2. * result + num/ (result * result)) / 3.0;
result = (2. * result + num/ (result * result)) / 3.0;
result = (2. * result + num/ (result * result)) / 3.0;
result = (2. * result + num/ (result * result)) / 3.0;
result = (2. * result + num/ (result * result)) / 3.0;
result = (2. * result + num/ (result * result)) / 3.0;
result = (2. * result + num/ (result * result)) / 3.0;
result = (2. * result + num/ (result * result)) / 3.0;
result = (2. * result + num/ (result * result)) / 3.0;
result = (2. * result + num/ (result * result)) / 3.0;
result = (2. * result + num/ (result * result)) / 3.0;
result = (2. * result + num/ (result * result)) / 3.0;
result = (2. * result + num/ (result * result)) / 3.0;
result = (2. * result + num/ (result * result)) / 3.0;
result = (2. * result + num/ (result * result)) / 3.0;
result = (2. * result + num/ (result * result)) / 3.0;
result = (2. * result + num/ (result * result)) / 3.0;
result = (2. * result + num/ (result * result)) / 3.0;
result = (2. * result + num/ (result * result)) / 3.0;
result = (2. * result + num/ (result * result)) / 3.0;
result = (2. * result + num/ (result * result)) / 3.0;
result = (2. * result + num/ (result * result)) / 3.0;
result = (2. * result + num/ (result * result)) / 3.0;
result = (2. * result + num/ (result * result)) / 3.0;
result = (2. * result + num/ (result * result)) / 3.0;
result = (2. * result + num/ (result * result)) / 3.0;
result = (2. * result + num/ (result * result)) / 3.0;
result = (2. * result + num/ (result * result)) / 3.0;
result = (2. * result + num/ (result * result)) / 3.0;
result = (2. * result + num/ (result * result)) / 3.0;
result = (2. * result + num/ (result * result)) / 3.0;
result = (2. * result + num/ (result * result)) / 3.0;
result = (2. * result + num/ (result * result)) / 3.0;
result = (2. * result + num/ (result * result)) / 3.0;
result = (2. * result + num/ (result * result)) / 3.0;
result = (2. * result + num/ (result * result)) / 3.0;
result = (2. * result + num/ (result * result)) / 3.0;
result = (2. * result + num/ (result * result)) / 3.0;
result = (2. * result + num/ (result * result)) / 3.0;
result = (2. * result + num/ (result * result)) / 3.0;

// Округление числа
cout.precision(4);
// Вывод результата
cout << "Ваш конечный результат: " << result << endl;
}
Blacit вне форума   Ответить с цитированием
Старый 13.12.2018, 09:42   #3
p51x
Профессионал
 
Регистрация: 15.02.2010
Сообщений: 14,690
Репутация: 2631
По умолчанию

Т.е. про циклы вы не в курсе...
__________________
Запомните раз и навсегда: помочь != "решите за меня"!
p51x на форуме   Ответить с цитированием
Старый 13.12.2018, 09:49   #4
WorldMaster
Профессионал
 
Аватар для WorldMaster
 
Регистрация: 25.08.2011
Адрес: Россия, Мурманск
Сообщений: 2,280
Репутация: 683

icq: 359393755
По умолчанию

Ааа... Как это развидеть?
Изображения
 
__________________
Skype - wmaster_s E-Mail - WorldMasters@gmail.com
Работаем по 3 критериям - быстро, качественно, недорого. Заказчик выбирает любые два.
Если помог - нажми на весы
WorldMaster вне форума   Ответить с цитированием
Старый 13.12.2018, 09:53   #5
Аватар
Модератор
Заслуженный модератор
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Адрес: Северодонецк.ua
Сообщений: 18,911
Репутация: 6688
По умолчанию

Цитата:
Нельзя использовать if, do и подобное.
А чего это оператор присваивания можно? Непорядок )
__________________
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума   Ответить с цитированием
Старый 13.12.2018, 09:58   #6
WorldMaster
Профессионал
 
Аватар для WorldMaster
 
Регистрация: 25.08.2011
Адрес: Россия, Мурманск
Сообщений: 2,280
Репутация: 683

icq: 359393755
По умолчанию

Цитата:
Сообщение от Blacit Посмотреть сообщение
Нельзя использовать if, do и подобное.
Рекурсию используйте.
__________________
Skype - wmaster_s E-Mail - WorldMasters@gmail.com
Работаем по 3 критериям - быстро, качественно, недорого. Заказчик выбирает любые два.
Если помог - нажми на весы
WorldMaster вне форума   Ответить с цитированием
Старый 13.12.2018, 10:07   #7
Аватар
Модератор
Заслуженный модератор
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Адрес: Северодонецк.ua
Сообщений: 18,911
Репутация: 6688
По умолчанию

if же низзя, а потребуется даже с рекурсией
__________________
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума   Ответить с цитированием
Старый 13.12.2018, 10:11   #8
WorldMaster
Профессионал
 
Аватар для WorldMaster
 
Регистрация: 25.08.2011
Адрес: Россия, Мурманск
Сообщений: 2,280
Репутация: 683

icq: 359393755
По умолчанию

Цитата:
Сообщение от Аватар Посмотреть сообщение
if же низзя, а потребуется даже с рекурсией
Чтото ни разу в жизни ни при каких преподах такой постановки не встречал. Может тут ошибка где то?? Как можно запретить базовый элемент структуры.
И какой навык должно развивать данное ограничение.
__________________
Skype - wmaster_s E-Mail - WorldMasters@gmail.com
Работаем по 3 критериям - быстро, качественно, недорого. Заказчик выбирает любые два.
Если помог - нажми на весы
WorldMaster вне форума   Ответить с цитированием
Старый 13.12.2018, 12:15   #9
_Bers
Профессионал
 
Регистрация: 16.12.2011
Адрес: Москва
Сообщений: 2,317
Репутация: 1138
По умолчанию

Цитата:
Сообщение от Blacit Посмотреть сообщение
Здравствуйте. Моя программа может вычислять только квадратный. А нужно как-то модернизировать до кубического. Использовался Вавилонский метод, его и нужно как-то сделать, чтобы кубический корень мог вычислять.
сначала с квадратом разберись.
твой вавилон зафейлил квадратный корень числа 1048576.

Цитата:
Сообщение от Blacit Посмотреть сообщение
Нельзя использовать if, do и подобное.
if можно реализовать через арифметику.
(можно нагуглить)

do можно эмулировать через массивы и конструкторы.

пример:

Код:
#include <iostream>
struct some
{
    some() { std::cout <<"тут могла бы быть ваша реклама\n"; }
};

int main()
{
    some arr[5];  //<--- запустит 5 раз конструктор. 
        // соответственно, 5 раз отработает вывод в консоль.
}
по такому принципу можно протолкнуть любые свои вычисления,
не только консольный вывод.
_Bers вне форума   Ответить с цитированием
Старый 13.12.2018, 12:55   #10
WorldMaster
Профессионал
 
Аватар для WorldMaster
 
Регистрация: 25.08.2011
Адрес: Россия, Мурманск
Сообщений: 2,280
Репутация: 683

icq: 359393755
По умолчанию

Цитата:
Сообщение от _Bers Посмотреть сообщение
по такому принципу можно протолкнуть любые свои вычисления,
не только консольный вывод.
Это какое то извращение.
__________________
Skype - wmaster_s E-Mail - WorldMasters@gmail.com
Работаем по 3 критериям - быстро, качественно, недорого. Заказчик выбирает любые два.
Если помог - нажми на весы
WorldMaster вне форума   Ответить с цитированием
Ответ

Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Арифметическое вычисление квадратного корня manowar111 Assembler 0 01.12.2012 13:56
Вычисление квадратного корня вручную 6AZblJlb Assembler 8 16.11.2011 04:02
Вычисление квадратного корня Wera Visual C++ 7 09.07.2010 19:23
Вычисление квадратного корня в Delphi TaYgA Помощь студентам 17 08.11.2009 19:16
Pascal, метод Ньютона, вычисление корня ф-ии. Qousio Помощь студентам 2 02.05.2009 19:47


19:52.


Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2019, Jelsoft Enterprises Ltd.