Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/6: Рейтинг темы: голосов - 6, средняя оценка - 4.67
 Аватар для Pokemon_93
9 / 5 / 0
Регистрация: 19.01.2013
Сообщений: 74

Переписать функцию sqrt, чтобы она работала с большими числами

10.06.2013, 01:53. Показов 1418. Ответов 9
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
желательно что бы корень извлекался из строки и возвращался результат в виде строки
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
10.06.2013, 01:53
Ответы с готовыми решениями:

Переписать программу, чтобы она работала не с текстом, а числами
Постараюсь быть максимально конкретным. Прога на языке Си. Здесь (проверено) работающая нормально прога с символами. В одном документе...

Переделать программу, чтобы она работала не с числами, а с символами
пожалуйста помогите переделать прогу на работу с символами!!!!!!! сейчас прога работает только с числами!!! unit Unit1; ...

Переделать программу, чтобы она работала не только с цифрами, но и с числами
Подскажите, как сделать ,чтоб эта программа работала не только с цифрами,но и с числами? (эта программа переводит выражение в...

9
 Аватар для Olivеr
415 / 411 / 95
Регистрация: 06.10.2011
Сообщений: 832
10.06.2013, 01:59
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

А насколько большие числа? Длинная арифметика?
Если диапазона double достаточно, то можно так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <iostream>
#include <string>
#include <cmath>
 
using namespace std;
 
string sqrt(const string &str) //если str содержит некорректное число или вовсе не число, 
//то посылается исключение invalid_argument
{
    double x = stod(str);
    x = sqrt(x);
    return to_string(x);
}
 
int main()
{
    string val = "400.0";
    cout << sqrt(val);
    return 0;
}
1
 Аватар для Pokemon_93
9 / 5 / 0
Регистрация: 19.01.2013
Сообщений: 74
10.06.2013, 02:01  [ТС]
Цитата Сообщение от Olivеr Посмотреть сообщение
C++
1
2
3
4
5
6
7
string sqrt(const string &str) //если str содержит некорректное число или вовсе не число, 
//то посылается исключение invalid_argument
{
   double x = stod(str);
   x = sqrt(x);
   return to_string(x);
}
будет ли она работать на числах порядка 10^20
0
 Аватар для Olivеr
415 / 411 / 95
Регистрация: 06.10.2011
Сообщений: 832
10.06.2013, 02:11
Цитата Сообщение от Pokemon_93 Посмотреть сообщение
будет ли она работать на числах порядка 10^20
Должна работать. Сейчас гляну. double вообще может хранить число аж до 1.79769e+308

Добавлено через 7 минут
Проверил. Работает хорошо, но с экспоненциальной записью числа плохо дружит.

UPD: stod нормально работает с экспоненциальной записью, это я туплю
C++
1
2
string val = "1e20";
double x = stod(val); //ok. x == 10^20
1
 Аватар для Pokemon_93
9 / 5 / 0
Регистрация: 19.01.2013
Сообщений: 74
10.06.2013, 02:14  [ТС]
Цитата Сообщение от Olivеr Посмотреть сообщение
Проверил. Работает хорошо, но с экспоненциальной записью числа плохо дружит.
спасибо огромное, экспоненциальная форма мне не сильно нужна так что ваш вариант полностью мне подходит, еще раз огромнейшее спасибо
0
Форумчанин
Эксперт CЭксперт С++
 Аватар для MrGluck
8216 / 5047 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
10.06.2013, 02:18
В С++11 она перегружена даже для unsigned long long int, думаю диапазона должно хватать более чем.
В конце-концов, long double (даже для С++98)
0
 Аватар для Pokemon_93
9 / 5 / 0
Регистрация: 19.01.2013
Сообщений: 74
10.06.2013, 02:54  [ТС]
Olivеr,прошу прощенья, а есть что нибудь для работы с более большими числами? просто сейчас скинули тест число = 7244342986081148800977120000000000000000 0000, и он его не может обработать корректно=(
0
 Аватар для Olivеr
415 / 411 / 95
Регистрация: 06.10.2011
Сообщений: 832
10.06.2013, 09:21
Цитата Сообщение от Pokemon_93 Посмотреть сообщение
Olivеr,прошу прощенья, а есть что нибудь для работы с более большими числами? просто сейчас скинули тест число = 7244342986081148800977120000000000000000 0000, и он его не может обработать корректно=(
У меня работает и выводит 8511370621751321952256.000000. (ОС x64 и компилятор MinGW на основе GCC 4.8.1)
Наверное дело в компьютере или компиляторе.

Добавлено через 3 минуты
Напишите в чем компилируете, какая ОС. Что нибудь придумаем
0
 Аватар для Pokemon_93
9 / 5 / 0
Регистрация: 19.01.2013
Сообщений: 74
10.06.2013, 12:13  [ТС]
Olivеr, ос винда 7 х64, MS VISUAL STUDIO 2012. мною был взят другой алгоритм и получилось число 851137100999999, препод принял=) но теперь стоит вопрос какой из результатов верный?
0
 Аватар для Olivеr
415 / 411 / 95
Регистрация: 06.10.2011
Сообщений: 832
10.06.2013, 12:51
Цитата Сообщение от Pokemon_93 Посмотреть сообщение
Olivеr, ос винда 7 х64, MS VISUAL STUDIO 2012. мною был взят другой алгоритм и получилось число 851137100999999, препод принял=) но теперь стоит вопрос какой из результатов верный?
Правильный результат: 8511370621751321952256
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
#include <iostream>
#include <cmath>
#include <iomanip>
 
using namespace std;
 
int main()
{
    double x = 72443429860811488009771200000000000000000000.0;
    x = sqrt(x);
    cout << fixed << setprecision(1) << x;
    return 0;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
10.06.2013, 12:51
Помогаю со студенческими работами здесь

Работа с процедурами. Переписать программу, чтобы она работала через процедуры
Всем привет. Передо мной стоит задача написать программу используя процедуры и нет. Без процедур: var Form1: TForm1; a: array...

Выполнить перегрузку функции, чтобы она работала с числами типа int, float
1.2 Выполнить перегрузку функции, чтобы она работала с числами типа int, float. 1.3 На основе заданий 1.1 и 1.2 создайте шаблон функции.

Заменить все контейнеры на ArrayList, и переписать программу таким образом, чтобы она успешно с ним работала
package ua.lviv.lgs; import java.time.Month; import java.util.Scanner; public class Task_2 { static class Season {

Как в программу вставить функцию assign, чтобы она работала?
const Nmax = 100; { Максемальное колличество элементов множества } type T = Char; {тип элемента множества} TSet = Array...

Преобразовать код матрицы так чтобы она работала через процедуру или функцию
Добрый вечер, помогите преобразовать код матрицы так чтобы она работала через процедуру или функцию: Вот код var i, j, n, m, t:...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru