Вычислить обратный корень числа - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Исходные данные: Входной поток содержит набор целых чисел Ai (0 ≤ Ai ≤ 1018), отделённых друг от друга произвольным количеством пробелов и переводов строк. Размер входного потока не превышает 256 КБ. Результат: Для каждого числа Ai, начиная с последнего и заканчивая первым, в отдельной строке вывести его квадратный корень не менее чем с четырьмя знаками после десятичной точки. выводит неправильный ответ если ввести 64битные числа исходные данные: 1427 0 876652098643267843 //c этим числом проблема 5276538 результат: 2297.0716 936297014.1164 0.0000 37.7757
#include <stdio.h>
#include <math.h>
#define N 4
main()
{
       long int a[N],i;
       double b[N];
       i=0;
       while (i<N){
             scanf("%lld",&a[i]);
             if (a[i]>=0 && a[i]<=pow(10,18)){
                b[i]=sqrt((double)a[i]);
                ++i;
                }
             else
                 break;
             }
       if (i==N)
          for (i=N-1;i>=0;--i)
              printf("%.4llf\n",b[i]);
       else
           printf("Error!");
}

Решение задачи: «Вычислить обратный корень числа»

textual
Листинг программы
#include <iostream>
#include <vector>
#include <algorithm>
#include <iterator>
 
using namespace std;
 
void printSqrt(__int64& _nNum)
{
    cout << "Number: " << _nNum 
         << "\tSqrt: " << sqrt(static_cast<double>(_nNum)) << endl;
}
 
int main(int argc, char* argv[])
{
    vector<__int64> vNumbers;
    
    copy(istream_iterator<__int64>(cin), istream_iterator<__int64>(), back_inserter(vNumbers));
    for_each(vNumbers.rbegin(), vNumbers.rend(), printSqrt);
 
    system("pause");
    return EXIT_SUCCESS;
}

Объяснение кода листинга программы

В данном коде реализована программа, которая вычисляет квадратный корень для каждого числа, введенного пользователем.

  1. Включаемые заголовочные файлы:
    • iostream - для работы с потоками ввода/вывода;
    • vector - для работы с векторами;
    • algorithm - для использования алгоритмов;
    • iterator - для работы с итераторами.
  2. Функция printSqrt:
    • Принимает ссылку на число типа __int64& в качестве аргумента;
    • Выводит число и его квадратный корень на экран.
  3. Функция main:
    • Создает пустой вектор типа __int64 для хранения введенных чисел;
    • Считывает числа из стандартного ввода и добавляет их в вектор с помощью copy и istream_iterator;
    • Применяет функцию printSqrt к каждому числу в векторе в обратном порядке с помощью for_each и vNumbers.rbegin(), vNumbers.rend().
  4. Команда system(pause):
    • Отображает окно командной строки, ожидая нажатия клавиши для продолжения работы программы.
  5. Возвращаемое значение EXIT_SUCCESS:
    • Обозначает успешный конец работы программы.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

6   голосов , оценка 3.667 из 5
Похожие ответы