Решаем разные задачки!

Статус
Закрыто для дальнейших ответов.

A-F

Well-Known Member
Регистрация
25.07.2011
Сообщения
390
Иногда на работе скучно, и я буду выкладывать сюда разного рода задачи.

Выполнять можно на любом языке программирования и желательно с комментариями. Будет интересно посмотреть и обсудить а так же новички могут найти что-то полезно для себя.

Вы так же можете высылать свои задания.

P.S. Для удобства читабельности, посты с наименованием задания пишем большими красными буквами а решение зелеными с название задания.
 

minority

generator randomly php
Регистрация
02.05.2010
Сообщения
443
Код:
class A
{
	private function action()
	{
		echo 'Я знаю ООП!';
	}  
 
   public static function callAction($a)
	{
		$a->action();
	}
}
class B extends A
{
	private function action()
	{
		echo 'Я не знаю ООП!';
	}
}
$a = new A();
$b = new B();
A::callAction($a);
A::callAction($b);
B::callAction($b);
1 задача.
Просьба думать, отвечать сюда (даже если не правельно), а после уже запускать.
 

A-F

Well-Known Member
Регистрация
25.07.2011
Сообщения
390
Сложить четные числа массива

Задать массив с произвольным количеством чисел, вывести на экран четные числа и их сумму.
 

A-F

Well-Known Member
Регистрация
25.07.2011
Сообщения
390
Задача 1
Код:
class A
{
	private function action()
	{
		echo 'Я знаю ООП!';
	}  
 
   public static function callAction($a)
	{
		$a->action();
	}
}
class B extends A
{
	private function action()
	{
		echo 'Я не знаю ООП!';
	}
}
$a = new A();
$b = new B();
A::callAction($a);
A::callAction($b);
B::callAction($b);
В class B вроде как нету никакого вызова а вот в A будет аж 3 раза, один из них через echo
 

ALEXu

в сером
Регистрация
29.12.2010
Сообщения
307
Сложить четные числа массива
Код:
foreach($m as $v)if(fmod($v,2)==0)$t+=$v;
 

A-F

Well-Known Member
Регистрация
25.07.2011
Сообщения
390
Что это? Где код с массивом?

P.S.
вывести на экран четные числа и их сумму.
 

ALEXu

в сером
Регистрация
29.12.2010
Сообщения
307
Код:
<?php
for($i=0;$i<rand(0,9);$i++)$m[]=rand(0,9); //массив
foreach($m as $v)if(fmod($v,2)==0){
    echo $v; //число
    $t+=$v;   
}
echo $t;//сумма
?>
 

tigra60

Спасатель
Регистрация
10.12.2009
Сообщения
1 990
вывести на экран четные числа и их сумму.
Так четные ключи, или четные значения?

Сразу к говнокоду приучаемся? (Это по поводу вывести на экран. Не лучше ли было бы: "Написать функцию, которая возвращает...")
 

антиКИЛЛЕР

Well-Known Member
Регистрация
28.07.2011
Сообщения
92
Сложить четные числа массива

Задать массив с произвольным количеством чисел, вывести на экран четные числа и их сумму.
A-F, Вы бы что нить посложнее и нетереснее выкладывали бы. А то такой притив это в 9-10 классе, на уроках паскаля/с++ пишут))
Код:
<?
/*************** создаём массив ***************/ //НАЧАЛО
$m=array();
$size=mt_rand(5, 1001);
$multipleOf=2;//число, которому должно быть кратнен элемент массива, чтобы мы могли его вывести
for($i=0;$i<$size;$i++)
{
  $m[]=mt_rand(1, 99999);
}
/*************** создаём массив ***************/ //КОНЕЦ

?>
<table>
  <tr>
    <th>Индекс масива</th><th>Число</th>
  </tr>
<?
/*************** определяем выводим и считаем сумму чётных чисел ***************/  //НАЧАЛО
$summ=0;
foreach ($m as $key=>$value)
{
  if ($value%$multipleOf==0)//cобственно определяем остаток от деления. Если его нет, то
  {
    $summ+=$value;
    ?>
    <tr>
	  <td><?echo $key;?></td><td><?echo $value;?></td>
    </tr>
    <?
  }
}
/*************** определяем выводим и считаем сумму чётных чисел ***************/  //КОНЕЦ
?>
</table>
Всего элементов в массиве: <b><?echo $size;?></b><br>
Cумма чётных чисел: <b><?echo $summ;?></b>
 

A-F

Well-Known Member
Регистрация
25.07.2011
Сообщения
390
Все могут писать сюда задания! Сложные и не сложные.
 

ALEXu

в сером
Регистрация
29.12.2010
Сообщения
307
вывести на экран четные числа и их сумму.
Сразу к говнокоду приучаемся? (Это по поводу вывести на экран. Не лучше ли было бы: "Написать функцию, которая возвращает...")
Задача была вывести на экран,а лучше не лучше зависит от контекста.
 

medwoodu

Злобный модер
Регистрация
22.12.2005
Сообщения
1 418
мои пять копеек:
Сделать проверку валидности e-mail не используя preg :)
 

lekzd

parse error: parse error, unexpected T_STRING...
Регистрация
17.02.2011
Сообщения
1 125
Сделать проверку валидности e-mail не используя preg

Код:
<?php
$str = strtolower('Email12@mail.ru');
$valid_symbols = 'qwertyuiopasdfghjklzxcvbnm_-@.1234567890';
$val = 0;
if (strpos($str,'@') > 1) {
  for ($i=0;$i<strlen($str);$i++) {
	if (strpos($valid_symbols,$str[$i]) !== FALSE) $val++;
  }
}
if ($val == strlen($str)) echo 'valid!';
?>
как-то так
 

medwoodu

Злобный модер
Регистрация
22.12.2005
Сообщения
1 418
Сделать проверку валидности e-mail не используя preg

Код:
<?php
$str = strtolower('Email12@mail.ru');
$valid_symbols = 'qwertyuiopasdfghjklzxcvbnm_-@.1234567890';
$val = 0;
if (strpos($str,'@') > 1) {
  for ($i=0;$i<strlen($str);$i++) {
	if (strpos($valid_symbols,$str[$i]) !== FALSE) $val++;
  }
}
if ($val == strlen($str)) echo 'valid!';
?>
как-то так
можно проще, не срабатывает если: 'Email12@.ru'
 

антиКИЛЛЕР

Well-Known Member
Регистрация
28.07.2011
Сообщения
92
Ну и собственно задание от меня:
Представить структуру БД и программу, выводящую древовидное меню (неплохо будет предусмотреть возможность сортировки меню).
Т.е. меню вида:

Пункт 1

Пункт 1.1​
Пункт 1.2​
Пункт 2
Пункт 2.1​
Пункт 2.2​
Пункт 2.2.1​
Пункт 2.2.2​
Пункт 2.3​
Пункт 3
Пункт 3.1​
Пункт 3.2​

Пы.Сы. Позже выложу своё решение. Хочется сравнить мне моё решению и решения других пользоваетелей, с целью выбрать оптимальное
 

ALEXu

в сером
Регистрация
29.12.2010
Сообщения
307
Сделать проверку валидности e-mail не используя preg

Medwoodu ты про это?

Код:
filter_var('Email12@.ru', FILTER_VALIDATE_EMAIL)
 

medwoodu

Злобный модер
Регистрация
22.12.2005
Сообщения
1 418
Сделать проверку валидности e-mail не используя preg

Medwoodu ты про это?

Код:
filter_var('Email12@.ru', FILTER_VALIDATE_EMAIL)
молодца :)

Ну и собственно задание от меня:
Представить структуру БД и программу, выводящую древовидное меню (неплохо будет предусмотреть возможность сортировки меню).
Т.е. меню вида:

Пункт 1

Пункт 1.1​
Пункт 1.2​

Пункт 2
Пункт 2.1​
Пункт 2.2​
Пункт 2.2.1​
Пункт 2.2.2​
Пункт 2.3​

Пункт 3
Пункт 3.1​
Пункт 3.2​

Пы.Сы. Позже выложу своё решение. Хочется сравнить мне моё решению и решения других пользоваетелей, с целью выбрать оптимальное
есть чуть более чем дофига вариантов. зависит от задач, т.к. обычно использую хлебные крошки то обычно делаю:
id(int) name(string) sort(int) level(int), parent_id(int). Уровень вложенности позволяет создать запрос, заджойнив паренты стоьлко раз, какая вложенность. А от родителя мало знаю задач, когда нужно выбирать всю ветку, так что обычно хватает. Полностью дерево строится проходом while и построением ассоциативного массива типа id=>array('name','childes'=>array(id_childe1,id_childe))
 

lekzd

parse error: parse error, unexpected T_STRING...
Регистрация
17.02.2011
Сообщения
1 125
[member=motek], Это прикольно, но просветите пожалуйста, как происходит валидация, всмысле на какое действие, при каких параметрах, а то потестил - не вышло?
 
Статус
Закрыто для дальнейших ответов.
Верх Низ