PphantomОк, я наверное не могу объяснить нормально, что мне нужно конкретно. 0 не может останавливать ввод. 
Вот оригинальное условие задачи. 
Цитата:
Исходные данные
Входной поток содержит набор целых чисел A_i (0 ≤ A_i ≤ 10^18), отделённых друг от друга произвольным количеством пробелов и переводов строк. Размер входного потока не превышает 256 КБ.
Результат
Для каждого числа Ai, начиная с последнего и заканчивая первым, в отдельной строке вывести его квадратный корень не менее чем с четырьмя знаками после десятичной точки.
Исходные данные
 1427  0   
   876652098643267843 
5276538
Результат
2297.0716
936297014.1164
0.0000
37.7757
Уже как бы разобрался с проблемой. Тестирующая система принимает задание как правильное если использовать код с таким считыванием:
#include <iostream>
#include <iomanip>
using namespace std;
struct stack
{
        double value;
        stack *next;
} *head;
stack *add(double);
stack *output();
int main()
{
        double value;
        while (cin >> value)
                head = add(value);
        output();
        system("pause");
        return 0;
}
stack *add(double value)
{
        stack *str = new stack;
        str->value = value;
        str->next = head;
        return str;
}
stack *output()
{
        stack *str;
        double value;
        while (head != 0)
        {
                str = head;
                value = sqrt(head->value);
                cout << fixed << setprecision(4) << value << endl;
                head = head->next;
                delete str;
        }
        return NULL;
}
 
  -- 12.04.2015, 22:27 --P.S. Не обижайтесь, но, вообще говоря, при наличии проблем такого уровня заниматься олимпиадным программированием несколько рано.
Не думаю. Просто я только начал знакомится с олимпиадным программированием и такой ввод данных для меня необычен. Я не совсем понимаю, как тестирующая система останавливает ввод данных. Это такие особенности олимпиадного программирования с которыми нужно один раз разобраться и все.