На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
Модераторы: Qraizer, Hsilgos
Страницы: (2) [1] 2  все  ( Перейти к последнему сообщению )  
> Решаем задачки... :) , типа головоломка для знающих C++
    Итак, кто хочет поломать голову? :) В оригинале звучала так:
    Цитата

    Дан набор целых чисел, найдите сумму всех положительных чисел из этого набора. Решения могут быть отосланы на любом языке который поддерживает SPOJ за исключением Whitespace!
    Входные данные
    t – количество целых чисел в наборе [t < 1000]
    На каждой из следующих t линий дано целое число N. [-1000 <= N <= 1000]
    Выходные данные
    Ровно одно число равное сумме всех положительных чисел.
    Начисление очков
    Количество очков равно размеру исходного кода программы, за исключением символов с ASCII кодами <= 32.
    Пример

    Входные данные:
    4
    5
    -5
    6
    -1
    Выходные данные:
    11

    Итак, с клавиатуры вводится кол-во чисел (не более 1000), затем сами числа (целые в диапазоне [-1000;1000]), на экран выводится сумма всех положительных из набора. Исходный код программы должен быть как можно короче.

    PS: я был на правильном пути, но, к сожалению, мое решение не было самым коротким... :(
    Сообщение отредактировано: BreakPointMAN -
      Цитата
      Входные данные
      t – количество целых чисел в наборе [t < 1000]
      На каждой из следующих t линий дано целое число N. [-1000 <= N <= 1000]
      Цитата
      Входные данные:
      -4 // t == -4 ????
      5
      -5
      6
      -1
      :huh:
        BreakPointMAN, 111 очень много?
          Цитата

          Количество очков равно размеру исходного кода программы, за исключением символов с ASCII кодами <= 32.


          тут какая-то подковырка! :)
            У меня вышло 45 :tong:
            Я правда не знаю что за SPOJ
            Что такое СПОЙ?
              amatros, покажи
                ExpandedWrap disabled
                  #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;
                  }


                если требования не жесткие, можно и еще короче
                ExpandedWrap disabled
                  #include <fstream.h>
                   
                  int r,n,t;
                  void main()
                  {
                  for( cin>>t;t--;cin>>n, r+=(n>0)*n );
                  cout << r;
                  }


                PS нафиг эти файлы
                Сообщение отредактировано: Sazabis -
                  Цитата
                  Решения могут быть отосланы на любом языке который поддерживает SPOJ

                  ExpandedWrap disabled
                    $t = <>;
                    $n>0? $s+=$n : 0 while $t-- and $n=<>;
                    print $s


                  Так что всё решает выбор языка :)
                  Сообщение отредактировано: amatros -
                    Цитата amatros @
                    так что всё решает выбор языка :)

                    В форуме "Чистый С++" такое решение можно назвать неприемлемым ;)
                      Цитата
                      В форуме "Чистый С++" такое решение можно назвать неприемлемым

                      Но зато это есть решение задачи. Ведь в уловии ясно сказано, что не надо себя ограничивать в выборе языка. Хотя соглашусь, это удар ниже пояса :lol:

                      Добавлено
                      Прочитал что такое SPOJ
                      Они поддерживают Perl
                      Кто меньше?
                      Сообщение отредактировано: amatros -
                        Цитата KAV @
                        -4 // t == -4 ????

                        Сорри, ошибся... :unsure: Потом исправил. :)

                        Цитата amatros @
                        Так что всё решает выбор языка

                        ну... на то я и тему в ветке "Чистый C/C++" создал... подразумевая решения именно на C/C++... ;)

                        Sazabis ближе всех подобрался к правильному решению... и забыл инициализацию переменной r... ;)
                        PS: c "void main" не прокатило - "compilation error", но сработало с "int main", но без "return 0"... одна-а-а-ако... %)

                        А что меня касается, я не догадался до умножения на булево значение...
                        ExpandedWrap disabled
                          r+=(n>0)*n

                        :'(
                          Ну еще Sazabis забыл using namespace std ;)
                          Это если во втором примере. В первом, соответственно, можно опустить переменные для main и return 0 (стандарт позволяет).
                          Сообщение отредактировано: J0ker -
                            Цитата J0ker @
                            Ну еще Sazabis забыл using namespace std

                            Не-а... ;) Где "#include <fstream>" у него явно задается пространство имен: "std::cin" и т.д.
                            А где "#include <fstream.h>", там все в глобальной области... так что тут вроде всё норм...
                            Сообщение отредактировано: BreakPointMAN -
                              Файл <fstream.h> страндартом не предусмотрен. За сим такую запись считаем неверной. Поэтому корректным можно считать только первое решение. К нему можно применить изменения
                              Цитата J0ker @
                              можно опустить переменные для main и return 0
                              и получится, видимо, самое удачное решение, если кто-нибудь не придумает, что еще можно убрать :)


                              ЗЫ: И все-таки, что такое SPOJ?
                                Цитата J0ker @
                                ЗЫ: И все-таки, что такое SPOJ?

                                см. пост #10. :)
                                1 пользователей читают эту тему (1 гостей и 0 скрытых пользователей)
                                0 пользователей:


                                Рейтинг@Mail.ru
                                [ Script execution time: 0,0381 ]   [ 15 queries used ]   [ Generated: 21.05.24, 21:27 GMT ]