2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




На страницу Пред.  1 ... 7, 8, 9, 10, 11, 12, 13  След.
 
 Re: Программирование для неудачников
Сообщение02.03.2013, 08:52 
Аватара пользователя
Решать задачи без независимой проверки не очень интересно. Вот задача, похожая на последнюю задачу Munin'а.
http://informatics.mccme.ru/moodle/mod/ ... terid=51#1
Там нужно зарегистрироваться и тогда можно будет сдавать решение не проверку.

Но можно начать с чего-нибудь особенно простого, например:
http://informatics.mccme.ru/moodle/mod/ ... ?id=2296#1
В такой задаче тоже могут быть свои трудности. Например, старые версии gcc не любили '\r',
а новички долго не могли понять, в чем дело. А старая версия ejudge требовала, чтобы все
строки кончались на '\n'. Было много вопросов: "У меня дома всё работает, а тут не проходит
ни один тест." Против подобных заморочек лучше всего помогает пример.
Вам нужно просто скопировать следующую программу на C в файл и послать этот файл на проверку.
Справитесь?

Код:
#include <stdio.h>  /* Нужно почти всегда. */
#include <stdlib.h> /* Нужно почти всегда. */
#include <math.h> /* Для sqrt() */
int main(void) {       /* Параметры не нужны */
   double a,b;     /* Определим 2 действительные переменные */
   scanf("%lf%lf", &a, &b); /* Прочитаем числа из стандартного ввода */
   printf("%lf\n",sqrt(a*a+b*b)); /* Вычисляем результаты и выводим ответ */
   return 0;  /* Выходим из программы с нулевым кодом ошибки. */
}


Об исполнении доложить. :D

 
 
 
 Re: Программирование для неудачников
Сообщение02.03.2013, 11:10 
Аватара пользователя
Sphinx Pinastri в сообщении #689962 писал(а):
Вот задача, похожая на последнюю задачу Munin'а.

На первый взгляд да, на второй - она существенно сложнее :-) Я специально написал со скобочками гораздо более простое условие. Чтобы всё-таки раскачать Ktina сделать что-то не математическое, а алгоритмическое.

-- 02.03.2013 12:37:11 --

Если задачи с разбором синтаксических выражений скучны или вызывают ступор - есть и другие. Например:
12 коней http://atpp.vstu.edu.ru/cgi-bin/arh_pro ... id_prb=680
Куча камней http://atpp.vstu.edu.ru/cgi-bin/arh_pro ... id_prb=866
Корни многочлена http://atpp.vstu.edu.ru/cgi-bin/arh_pro ... l?id_prb=6 (не знаю, как решать, но выглядит интересно)
Инверсии http://atpp.vstu.edu.ru/cgi-bin/arh_pro ... ?id_prb=13
Ханойские башни http://atpp.vstu.edu.ru/cgi-bin/arh_pro ... id_prb=873 (интересно, существует ли простое нерекурсивное решение)
Монеты http://atpp.vstu.edu.ru/cgi-bin/arh_pro ... ?id_prb=18
Путь в лабиринте http://atpp.vstu.edu.ru/cgi-bin/arh_pro ... id_prb=246

И разминочная
Солнечное затмение http://atpp.vstu.edu.ru/cgi-bin/arh_pro ... id_prb=892

 
 
 
 Re: Программирование для неудачников
Сообщение02.03.2013, 12:14 
Аватара пользователя
А может у Вас просто аллергия на язык Си ?
Попробуйте что-то другое.
Скачайте Дельфи и поиграйтесь на нем. (Правда, не знаю, жив ли он еще и годится ли на Win-7, может придется остаться на ХР ).
Я за свою долгую трудовую жизнь - на чем только не писала, начиная с Алгола...
Несколько разных ассемблеров, паскаль-дельфи, макросы на Экселе.
Сейчас меня занесло на LabView. Красивенькая штучка.
И только на Си осталась неизлечимая аллергия.

 
 
 
 Re: Программирование для неудачников
Сообщение02.03.2013, 12:27 
Аватара пользователя
Тут и Haskell в соседней теме используют, и Prolog, зачем так себя ограничивать-то? :-)

 
 
 
 Re: Программирование для неудачников
Сообщение02.03.2013, 13:28 
Аватара пользователя
zinka в сообщении #690022 писал(а):
А может у Вас просто аллергия на язык Си ?

По-моему, не только на него, но и вообще на все языки программирования.

(Оффтоп)

А с аллергией на укусы пчёл в морские котики не берут.

 
 
 
 Re: Программирование для неудачников
Сообщение02.03.2013, 13:45 
Munin в сообщении #690001 писал(а):
Корни многочлена http://atpp.vstu.edu.ru/cgi-bin/arh_pro ... l?id_prb=6 (не знаю, как решать, но выглядит интересно)

Тупо решать: перебирать все делители первого и последнего коэффициентов и проверять, не является ли эта дробь корнем. Если является, то прервать цикл проверки, занести корень в массив и разделить многочлен на соответствующую скобку. Повторять тот процесс до те пор, пока удаётся обнаружить корень. Ну потом ещё отсортировать массив корней (это проще и надёжнее, чем предусмотреть сортировку в рабочем цикле).

-- Сб мар 02, 2013 14:50:48 --

А хотя не заметил -- там ведь кратность корней предписано игнорировать. Тогда проще, тогда сокращать многочлен не нужно. И вместо сортировки тогда лучше просто вставлять корень в положенное место массива (если его там ещё нет).

 
 
 
 Re: Программирование для неудачников
Сообщение02.03.2013, 14:00 
Аватара пользователя
Ktina в сообщении #690052 писал(а):
По-моему, не только на него, но и вообще на все языки программирования.

Предложите решение на любом языке вообще, хоть на русском, хоть на английском.

(Оффтоп)

Хотя, если вы напишете на иврите, вас мало кто поймёт...


ewert в сообщении #690065 писал(а):
Тупо решать: перебирать все делители первого и последнего коэффициентов и проверять, не является ли эта дробь корнем.

Ну что ж, не так интересно, но для Ktina нормальное упражнение.

 
 
 
 Re: Программирование для неудачников
Сообщение02.03.2013, 14:18 
Sphinx Pinastri в сообщении #689962 писал(а):
Вот задача, похожая на последнюю задачу Munin'а.
http://informatics.mccme.ru/moodle/mod/ ... terid=51#1

код: [ скачать ] [ спрятать ]
Используется синтаксис Pascal
var  s: string;    i: integer;

begin

  readln(s);

  repeat
    i:=Pos('()', s);
    if i<>0 then begin    Delete(s, i, 2);    continue;    end;
    i:=Pos('[]', s);
    if i<>0 then begin    Delete(s, i, 2);    continue;    end;
    i:=Pos('{}', s);
    if i<>0 then begin    Delete(s, i, 2);    continue;    end;
    break;
  until false;

  if s=''   then writeln('yes')   else writeln('no');

end.
 

 
 
 
 Re: Программирование для неудачников
Сообщение02.03.2013, 14:22 
Аватара пользователя
Предлагается сами задачи и их решения обсуждать в отдельных темах :-)

 
 
 
 Re: Программирование для неудачников
Сообщение02.03.2013, 16:43 
Munin в сообщении #690071 писал(а):
Ну что ж, не так интересно, но для Ktina нормальное упражнение.

Там на самом деле сложнее -- нужно реализовывать длинную арифметику (слава богу, достаточно умножения и сложения). Не случайно всё-таки там довольно слабые ограничения по времени и по памяти, хотя и явно избыточно слабые.

 
 
 
 Re: Программирование для неудачников
Сообщение02.03.2013, 17:06 
Задача с инверсиями задела. Ничего лучше следующего не придумал:

Вначале есть пустой массив $L$ и $s = 0$ инверсий.

Читаем очередной элемент $a$, вставляем его в $L$ за $O(\log n)$ и увеличиваем $s$ на число элементов, оказавшихся правее $a$.

Если $\sum_{i=1}^n i\log i = O(n\log n)$ (а вдруг нет), то получается $O(n\log n)$. Можно лучше?

-- Сб мар 02, 2013 20:07:44 --

P. S. Почему $O$ так распространилась в анализе сложности, когда есть $\Theta$? :?

 
 
 
 Re: Программирование для неудачников
Сообщение02.03.2013, 17:22 
Аватара пользователя
Для перестановки можно $O(n)$ через разбиение на циклы. Для произвольного массива не знаю.

 
 
 
 Re: Программирование для неудачников
Сообщение02.03.2013, 18:39 
В упоминаемой задаче на входе всегда перестановка.

-- Сб мар 02, 2013 21:42:11 --

Нет, вру. Числа могут быть из большего интервала, чем длина последовательности.

 
 
 
 Re: Программирование для неудачников
Сообщение02.03.2013, 19:28 
Ktina в сообщении #689811 писал(а):
Как только что выяснилось, составляю алгоритмы я довольно неплохо. Следовательно, проблема в чём-то другом.
Ktina в сообщении #690052 писал(а):
zinka в сообщении #690022 писал(а):
А может у Вас просто аллергия на язык Си ?
По-моему, не только на него, но и вообще на все языки программирования.

Сказано было мудрецами:
"Плохой программист пренебрегает деталями; плохой системный архитектор тонет в деталях".
(вольный перевод с нерусского)

Может быть именно копание в деталях реализации Вам и не нравится?
Тогда Вы можете стать хорошим системным архитектором.

 
 
 
 Re: Программирование для неудачников
Сообщение02.03.2013, 20:30 
Xaositect в сообщении #689845 писал(а):
Необходимо по заданному алгебраическому выражению построить реализующую его (с точностью до лишних скобок) формулу языка $F$.
я правильно понимаю, что в "заданном алгебраическом выражении" могут быть использованы только четыре арифметических действия, буквы и скобки? если нет, то- что ещё?

-- 02.03.2013, 21:32 --

Munin в сообщении #690001 писал(а):
Если задачи с разбором синтаксических выражений скучны или вызывают ступор - есть и другие. Например:
огромное спасибо! я тоже попробую поучиться))

 
 
 [ Сообщений: 193 ]  На страницу Пред.  1 ... 7, 8, 9, 10, 11, 12, 13  След.


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group