A + B
Этот |A|, |B| < 10^9 означает что числа типа int или же что длина строки меньше 10^9 и надо использовать длинную арифметику?
Как в С++ читать scanf'ом, пока не закончатся входные данные, если не использовать файлы для ввода/вывода? Или нельзя такие вопросы задавать? :)
А ни в каком разделе сайта не обсуждаются "технические" вопросы?
Должно работать while(scanf("%s %s", s1, s2) != EOF) ;
steppenwolf, scanf возвращает колличество считаных переменных, так что корректней будет while(scanf("%s %s", s1, s2) == 2);
С вашей же ссылки
On success, the function returns the number of items successfully read
Вариант while(scanf("%s %s", s1, s2) != EOF); запустит лишнюю итерацию при нечетном колличестве строк
Вариант while (scanf("%s", str) != EOF) с последующим считыванием второго числа избыточен, т. к. имеем два условных переходов
То iama: По этому поводу не поленился специально отправил такой вариант - см. статистика отправка 410581.
Причина: В упоминаемом варианте while (scanf("%s", str) != EOF) до того переменная str объявлена как char str[MAX]; Поэтому условие scanf("%s", str) != EOF читается до первого пробела и никакой избыточности (т.е. Вашими словами два условных перехода) нет.
awpris, я имел в виду, что нужно отдельно считывать первую и вторую строку, когда это можно сделать за один вызов функции, что, впрочем, в этой задаче несущественно. Просто я хотел сказать, что scanf вернет EOF только, когда поток будет пуст, а из него (scanf'а) можно извлечь *намного* больше полезной информации.
Извините за оффтоп :)
Не спорю, что во многих задачах удобнее проверять возвращаемое значение функции scanf() на количество считанных элементов. В данной же задаче возможен вариант ввода, приведенный мной выше. Причем никакой избыточности там не наблюдается вследствие условий задачи и гарантии корректности входных данных.
Здесь получился некий полезный оффтоп, поэтому думаю было бы уместно переместить его в тему обсуждения ввода-вывода. Или отразить эти факты в разделе Помощь.
awpris, а это все компиляторы поддерживают? А то, помнится, вроде у Керинигана и Ричи, говорилось, что некоторые компиляторы С++ могут иметь значение EOF, отличное от -1, тогда эта запись не сработала бы.
UPD: нашел, ст. 31
EOF - целая константа, определенная в <stdio.h>. Какое значение имеет эта константа - неважно, лишь бы оно отличалось от любого из возможных значений типа char. Использование именованной константы с унифицированным именем гарантирует, что программа не будет зависеть от конкретного числового значения, которое, возможно, в других Си-системах будет иным.
Но запись, конечно, красивая :)
Не совсем понимаю вашу иронию насчет полезности. Ведь изначально здесь приводились не столь вычурные методы ввода. Замечу также, что они не отражены в разделе Помощь. Именно поэтому оффтоп и родился, в ответ на безобидный вопрос о вводе.