Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[18.219.58.33] |
|
Страницы: (2) [1] 2 все ( Перейти к последнему сообщению ) |
Сообщ.
#1
,
|
|
|
Итак, кто хочет поломать голову? В оригинале звучала так:
Цитата Дан набор целых чисел, найдите сумму всех положительных чисел из этого набора. Решения могут быть отосланы на любом языке который поддерживает SPOJ за исключением Whitespace! Входные данные t – количество целых чисел в наборе [t < 1000] На каждой из следующих t линий дано целое число N. [-1000 <= N <= 1000] Выходные данные Ровно одно число равное сумме всех положительных чисел. Начисление очков Количество очков равно размеру исходного кода программы, за исключением символов с ASCII кодами <= 32. Пример Входные данные: 4 5 -5 6 -1 Выходные данные: 11 Итак, с клавиатуры вводится кол-во чисел (не более 1000), затем сами числа (целые в диапазоне [-1000;1000]), на экран выводится сумма всех положительных из набора. Исходный код программы должен быть как можно короче. PS: я был на правильном пути, но, к сожалению, мое решение не было самым коротким... |
Сообщ.
#2
,
|
|
|
Цитата Входные данные t – количество целых чисел в наборе [t < 1000] На каждой из следующих t линий дано целое число N. [-1000 <= N <= 1000] Цитата Входные данные: -4 // t == -4 ???? 5 -5 6 -1 |
Сообщ.
#3
,
|
|
|
BreakPointMAN, 111 очень много?
|
Сообщ.
#4
,
|
|
|
Цитата Количество очков равно размеру исходного кода программы, за исключением символов с ASCII кодами <= 32. тут какая-то подковырка! |
Сообщ.
#5
,
|
|
|
У меня вышло 45
Я правда не знаю что за SPOJ Что такое СПОЙ? |
Сообщ.
#6
,
|
|
|
amatros, покажи
|
Сообщ.
#7
,
|
|
|
#include <fstream> int r,n; int main( int t, char * v[] ) { for( std::cin>>t;t--;std::cin>>n, r+=(n>0)*n ); std::cout << r; return 0; } если требования не жесткие, можно и еще короче #include <fstream.h> int r,n,t; void main() { for( cin>>t;t--;cin>>n, r+=(n>0)*n ); cout << r; } PS нафиг эти файлы |
Сообщ.
#8
,
|
|
|
Цитата Решения могут быть отосланы на любом языке который поддерживает SPOJ $t = <>; $n>0? $s+=$n : 0 while $t-- and $n=<>; print $s Так что всё решает выбор языка |
Сообщ.
#9
,
|
|
|
Цитата amatros @ так что всё решает выбор языка В форуме "Чистый С++" такое решение можно назвать неприемлемым |
Сообщ.
#10
,
|
|
|
Цитата В форуме "Чистый С++" такое решение можно назвать неприемлемым Но зато это есть решение задачи. Ведь в уловии ясно сказано, что не надо себя ограничивать в выборе языка. Хотя соглашусь, это удар ниже пояса Добавлено Прочитал что такое SPOJ Они поддерживают Perl Кто меньше? |
Сообщ.
#11
,
|
|
|
Цитата KAV @ -4 // t == -4 ???? Сорри, ошибся... Потом исправил. Цитата amatros @ Так что всё решает выбор языка ну... на то я и тему в ветке "Чистый C/C++" создал... подразумевая решения именно на C/C++... Sazabis ближе всех подобрался к правильному решению... и забыл инициализацию переменной r... PS: c "void main" не прокатило - "compilation error", но сработало с "int main", но без "return 0"... одна-а-а-ако... %) А что меня касается, я не догадался до умножения на булево значение... r+=(n>0)*n |
Сообщ.
#12
,
|
|
|
Ну еще Sazabis забыл using namespace std
Это если во втором примере. В первом, соответственно, можно опустить переменные для main и return 0 (стандарт позволяет). |
Сообщ.
#13
,
|
|
|
Цитата J0ker @ Ну еще Sazabis забыл using namespace std Не-а... Где "#include <fstream>" у него явно задается пространство имен: "std::cin" и т.д. А где "#include <fstream.h>", там все в глобальной области... так что тут вроде всё норм... |
Сообщ.
#14
,
|
|
|
Файл <fstream.h> страндартом не предусмотрен. За сим такую запись считаем неверной. Поэтому корректным можно считать только первое решение. К нему можно применить изменения
Цитата J0ker @ и получится, видимо, самое удачное решение, если кто-нибудь не придумает, что еще можно убрать можно опустить переменные для main и return 0 ЗЫ: И все-таки, что такое SPOJ? |
Сообщ.
#15
,
|
|
|
Цитата J0ker @ ЗЫ: И все-таки, что такое SPOJ? см. пост #10. |