Алгоритмирование
| |
zmear | Дата: Пятница, 24 Августа 2012, 19:41 | Сообщение # 1 |
почетный гость
Сейчас нет на сайте
| Не знал где начинать тему тут, или в общих обсуждениях программистов, вот смысл: Задается задача, и нужно составить алгоритм её решения: Например(из задачника):
Программист: Code Есть три переменных А, Б, В, после ввода значений переменных, нужно Б присвоить значение А, В присвоить значение Б, А присвоить значение В. Чувачек: Code решение(на php): <?php var $a, $b, $v, $in; $in = $a; $a = $v; $v = $b; $b = $in; ?> Я день третий Пхп изучаю мог накосячить) Значит задача: напишите программу, определяющую по числу месяца день недели, 1-ое число = суббота. Сначала ответ, потом ваша задача. ответы пишем на любом япе, задачи задаем в пределах разумной сложности) Объясню разумную сложность, то что можешь решить сам за... минут 60)))
Сообщение отредактировал zmear - Пятница, 24 Августа 2012, 20:57 |
|
| |
404notfound | Дата: Пятница, 24 Августа 2012, 20:21 | Сообщение # 2 |
участник
Сейчас нет на сайте
| zmear, сложность у твоих "задач" зашкаливает, смысл в них? Они решаются в 3.5 строчки кода.
|
|
| |
zmear | Дата: Пятница, 24 Августа 2012, 20:29 | Сообщение # 3 |
почетный гость
Сейчас нет на сайте
| так решай и предлагай свою, мы подумаем, я просто побоялся что-то серьезное писать)))
|
|
| |
BigPen | Дата: Пятница, 24 Августа 2012, 20:35 | Сообщение # 4 |
почетный гость
Сейчас нет на сайте
| не то
Сообщение отредактировал BigPen - Пятница, 24 Августа 2012, 20:35 |
|
| |
TimKruz | Дата: Пятница, 24 Августа 2012, 20:47 | Сообщение # 5 |
старожил
Сейчас нет на сайте
| Quote (zmear) после ввода значений переменных Quote (zmear) решение(на php): Ты в своём решении переменные местами меняешь, а откуда ты значения взял? И в PHP никаких var не нужно, интерпретатор сам создаёт новые переменные... По крайней мере, это при использовании на сервере... А значения считывать из массивов get или post... Quote (zmear) напишите программу, определяющую по числу месяца день недели, 1-ое число = суббота. Проще на калькуляторе посчитать. Code var m:byte; begin write('Число месяца: '); readln(m); //Считываем число месяца while m>7 do m:=m-7; //Уменьшаем до интервала 1..7 case m of 1: writeln('Суббота'); 2: writeln('Воскресенье'); 3: writeln('Понедельник'); 4: writeln('Вторник'); 5: writeln('Среда'); 6: writeln('Четверг'); 7: writeln('Пятница'); end; end;
Quote (zmear) и предлагай свою, мы подумаем Задача: используя квантовый компьютер, рассчитать расстояния от Земли до каждого из ближайших трёх пульсаров по не более 6 фотографиям в формате B2MP ("вот вам мегапиксель") участка неба, полученных с разных приборов телескопа на орбите Плутона через ретранслятор на орбите Солнца, используя протокол 0Т-э (транспортировка электронов через гипертоннель) и передавая пакеты не более 1 ПБ (петабайт), с минимальными затратами энергии. Пока будете думать, как раз ретранслятор и всё остальное построят - будет практическое применение, как раз протестируем. Ведь никаких ограничений на задачи не было, я не ошибся?
Сообщение отредактировал TimKruz - Пятница, 24 Августа 2012, 20:52 |
|
| |
JeromKid | Дата: Пятница, 24 Августа 2012, 20:51 | Сообщение # 6 |
Permanent PM$
Сейчас нет на сайте
| Quote (TimKruz) Ведь никаких ограничений на задачи не было, я не ошибся? Quote (zmear) задачи задаем в пределах разумной сложности) Плосковата щюточка получилась таки.
I can't draw, I can't code I'm dumb, I'm hillbilly But I can twerk So, whatever
|
|
| |
zmear | Дата: Пятница, 24 Августа 2012, 20:54 | Сообщение # 7 |
почетный гость
Сейчас нет на сайте
| Quote (TimKruz) Задача: используя квантовый компьютер, рассчитать расстояния от Земли до каждого из ближайших трёх пульсаров по не более 6 фотографиям (так уж и быть, в формате BMP) участка неба, полученных с разных приборов телескопа на орбите Плутона через ретранслятор на орбите Солнца, используя протокол 0Т-э и передавая пакеты не более 1 ПБ, с минимальными затратами энергии. Пока будете думать, как раз ретранслятор и всё остальное построят - будет практическое применение, как раз протестируем. но Quote (zmear) задачи задаем в пределах разумной сложности) Объясню разумную сложность, то что можешь решить сам за... минут 60)))
Сообщение отредактировал zmear - Пятница, 24 Августа 2012, 20:56 |
|
| |
TimKruz | Дата: Пятница, 24 Августа 2012, 20:55 | Сообщение # 8 |
старожил
Сейчас нет на сайте
| Quote (JeromKid) Плосковата щюточка получилась таки. А что, слишком сложно?.. Ладно. Тогда написать программу для расчёта квадратных уравнений, но чтобы не было просто - с вычислением иррациональных корней и округлением строго до пятого знака. И обязательно - "защита от дурака" (проверка корректности ввода), без неё в наше время программы писать нельзя.
|
|
| |
BigPen | Дата: Пятница, 24 Августа 2012, 20:55 | Сообщение # 9 |
почетный гость
Сейчас нет на сайте
| Quote (TimKruz) Задача: используя квантовый компьютер, рассчитать расстояния от Земли до каждого из ближайших трёх пульсаров по не более 6 фотографиям в формате B2MP ("вот вам мегапиксель") участка неба, полученных с разных приборов телескопа на орбите Плутона через ретранслятор на орбите Солнца, используя протокол 0Т-э (транспортировка электронов через гипертоннель) и передавая пакеты не более 1 ПБ (петабайт), с минимальными затратами энергии. echo 'Hello World';
Задача: вычислите стоймость вашего трупа
|
|
| |
zmear | Дата: Пятница, 24 Августа 2012, 20:59 | Сообщение # 10 |
почетный гость
Сейчас нет на сайте
| BigPen, ты реши задачу потом выдавай свою сейчас очередь тима, а то что у меня под спойлером в 7 посту, я думал он ничего не задаст. TimKruz, решаю)))
|
|
| |
TimKruz | Дата: Пятница, 24 Августа 2012, 21:01 | Сообщение # 11 |
старожил
Сейчас нет на сайте
| Quote (BigPen) Задача: вычислите стоймость вашего трупа А в качестве входных данных что, труп? Тогда тут всё просто: Code var data:TCorpse; r:extended; begin r:=analyse_corpse(data); writeln('Этот труп стоит примерно ',r:0:2,' у.е.'); delete_corpse(data); end.
|
|
| |
zmear | Дата: Пятница, 24 Августа 2012, 21:32 | Сообщение # 12 |
почетный гость
Сейчас нет на сайте
| Quote (TimKruz) Тогда написать программу для расчёта квадратных уравнений, но чтобы не было просто - с вычислением иррациональных корней и округлением строго до пятого знака. И обязательно - "защита от дурака" (проверка корректности ввода), без неё в наше время программы писать нельзя. для меня это слишком мощно(( Code var x1,x2,x,a,b,c,d:real; begin readln(a); \\значит 1 коэффициент readln(b); \\значит 2 коэффициент readln(c); \\значит 3 коэффициент if a=0 then \\защита от балбесов begin x:=-c/b; writeln('x = ',x:6:3); end; else begin d:=b*b-4*a*c; \\дискриминан if d=0 then begin x:=-b/(2*a); writeln(x:6:3); end; if d<0 then writeln('d<0'); if d>0 then begin x1:=(-b+sqrt(d))/2*a; x2:=(-b-sqrt(d))/2*a; writeln('x1 = ',x1:6:3); writeln('x2 = ',x2:6:3); end; end; end. если правильно то иначе ждем способного написать такую программу. е мае если то иначе меня уже плющит
Сообщение отредактировал zmear - Пятница, 24 Августа 2012, 21:34 |
|
| |
TimKruz | Дата: Пятница, 24 Августа 2012, 22:19 | Сообщение # 13 |
старожил
Сейчас нет на сайте
| Quote (zmear) if a=0 then \\защита от балбесов Нет, а если пользователь введёт даже не число, а какой-то недопустимый символ? У тебя будет ошибка ввода/вывода. Правильно будет сначала читать в строку, потом делать val(), и проверять возвращаемый этой процедурой код ошибки - в случае успеха должен быть ноль, в случае провала, если не ошибаюсь, номер ошибочного символа. Либо другой вариант - выключить проверку ввода/вывода (директива {$I-} в Паскале/Делфи, или через настройки среды), и после считывания числа (тут строку использовать не нужно) проверять результат функции ioresult (возвращает код ошибки последней операции ввода/вывода или ноль) - если ноль, данные введены верно. Вот тогда будет настоящая защита. Кстати, там у тебя перед else точка с запятой - ошибка. И почему ты пишешь :6:3? Ты получишь шесть знаков до запятой (пустые закрываются пробелами) и три после... Quote (zmear) Нужно сделать задачу: пользователь вводит число А (100000>А>0), компьютер должен написать число словами ввел я 553 он пишет "пятьсот пятьдесят три" Хм... Вообще, конечно, можно написать, но что-то многовато получается... Это надо рассмотреть десятки отдельных случаев, типа "один", "одна", "одиннадцать" и так далее.
|
|
| |
zmear | Дата: Суббота, 25 Августа 2012, 07:50 | Сообщение # 14 |
почетный гость
Сейчас нет на сайте
| Quote (TimKruz) Хм... Вообще, конечно, можно написать, но что-то многовато получается... Это надо рассмотреть десятки отдельных случаев, типа "один", "одна", "одиннадцать" и так далее. почему? можно много сокращать: 11 "один" + "над" + "цать" это для 11 -19 20 "два" + "д" + "цать" это для 20 30 ну и так далее, структура станет сложнее, зато меньше констант. но в любом случае:
|
|
| |
RUNGOGET2THECHOPAH | Дата: Суббота, 25 Августа 2012, 15:14 | Сообщение # 15 |
участник
Сейчас нет на сайте
| Quote (zmear) Определить наибольший общий делитель двух заданных чисел, используя алгоритм Евклида Code int ar[2]; printf("A = "); scanf("%i", &ar[0]); printf("B = "); scanf("%i", &ar[1]); while (int r = ar[0]%ar[1]) { ar[0]=ar[1]; ar[1]=r; } printf("NOD(A,B) = %i \n", ar[1]);
|
|
| |
|