Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Задача по php

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
Elena0303
Отправлено: 08 Января, 2016 - 00:50:23
Post Id



Новичок


Покинул форум
Сообщений всего: 4
Дата рег-ции: Янв. 2016  


Помог: 0 раз(а)




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

"Пользователь вводит свой рост и рост своих пяти друзей через запятую.
Надо найти какое количество человек выше, чем пользователь."

Уже второй день ее кручу... все ни как. Аж до слез (
 
 Top
Viper
Отправлено: 08 Января, 2016 - 01:22:20
Post Id



Активный участник


Покинул форум
Сообщений всего: 4555
Дата рег-ции: Февр. 2007  
Откуда: Симферополь


Помог: 98 раз(а)




В самой детской реализации как-то так:
PHP:
скопировать код в буфер обмена
  1. // Первым в списке должен быть юзер
  2. $str = '100,120,130,140';
  3. // Удаляем педопробелы
  4. $str = str_replace(' ', '', $str);
  5. // Разбиваем на массив
  6. $arr = explode(',', $str);
  7. // Кол-во друзей выше ростом
  8. $i = 0;
  9.  
  10. foreach ($arr as $key => $height) {
  11.         if ($key > 0) { // Если не юзер
  12.                 if ($height > $arr[0]) { // и рост его друзей выше его собственного
  13.                         $i++; // добавили друга
  14.                 }
  15.         }
  16. }
  17.  
  18. echo $i;

(Отредактировано автором: 08 Января, 2016 - 01:23:03)



-----
Список фильмов с описанием, блекджеком и... для Joomla? -> https://киноархив[dot]com
Демо нового движка для сайта php.su -> php[dot]su, проект на гитхабе
 
 Top
dcc0
Отправлено: 08 Января, 2016 - 01:27:56
Post Id


Участник


Покинул форум
Сообщений всего: 1043
Дата рег-ции: Июль 2014  


Помог: 10 раз(а)




PHP:
скопировать код в буфер обмена
  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
  5.  
  6. <form  method="post"><br/>
  7. Сообщение <br/>
  8. Moi rost
  9. <input type="text" name="moi_rost" size="50%">
  10. Rost druzei
  11. <input type="text" name="ros_druzei" size="50%"><br/>
  12. <input type="submit" name="sub" value="Test">
  13. </form>
  14. <?PHP
  15. $rdruzei=explode(",", $_POST['ros_druzei']);
  16.  
  17. $i=0;
  18. foreach($rdruzei as  $v) {
  19. if($_POST['moi_rost'] <  $v) {
  20. $i+=1;
  21.         }
  22. }
  23. echo $i . ' Выше меня!';
  24.  
  25.  ?>

Простейший вариант с ходу!
(Добавление)
Viper, а хде вариант без цикла?
(Добавление)
Зачем удалять пробелы?


-----
Март 2021. Бросил программирование
 
 Top
armancho7777777 Супермодератор
Отправлено: 08 Января, 2016 - 01:42:54
Post Id



Активный участник


Покинул форум
Сообщений всего: 4526
Дата рег-ции: Февр. 2011  
Откуда: Москва


Помог: 221 раз(а)




PHP:
скопировать код в буфер обмена
  1. $friendsGrowth = '100, 120,  130,   140, ';
  2. $friendsGrowth = preg_split('/\s*,\s*/', $friendsGrowth, -1, PREG_SPLIT_NO_EMPTY);
  3. $myGrowth = 125;
  4.  
  5. print_r(array_filter($friendsGrowth, function($growth) use ($myGrowth) {
  6.     return $growth > $myGrowth;
  7. }));

(Отредактировано автором: 08 Января, 2016 - 02:05:49)

 
 Top
Prizma
Отправлено: 08 Января, 2016 - 02:10:29
Post Id



Посетитель


Покинул форум
Сообщений всего: 463
Дата рег-ции: Июнь 2012  
Откуда: Санкт-Петербург


Помог: 5 раз(а)




Все хотят помочь девушке?))
как то так:
PHP:
скопировать код в буфер обмена
  1. <?
  2. $myGrowth = 170; // рост пользователя
  3. // массив с ростом друзей пользователя
  4. $myfriendsGrowth = [
  5.     155,
  6.     178,
  7.     167,
  8.     210,
  9.     148
  10. ];
  11. // "счетчик"
  12. $higherMe = 0; // здесь подсчитываем сколько из друзей выше пользователя
  13. // перебираем всех друзей
  14. foreach($myfriendsGrowth as $friendGrowth) {
  15.     // если он друг выше пользователя увеливаем "счетчик"
  16.     if($myGrowth < $friendGrowth) {
  17.         $higherMe++;
  18.     }
  19. }
  20. // выводим результат
  21. echo sprintf('%s друзей выше Вас', $higherMe);
  22. ?>
 
My status
 Top
dcc0
Отправлено: 08 Января, 2016 - 02:17:51
Post Id


Участник


Покинул форум
Сообщений всего: 1043
Дата рег-ции: Июль 2014  


Помог: 10 раз(а)




Только вариант armancho7777777 лаконичней. И лямбда к стати.


-----
Март 2021. Бросил программирование
 
 Top
Viper
Отправлено: 08 Января, 2016 - 11:18:11
Post Id



Активный участник


Покинул форум
Сообщений всего: 4555
Дата рег-ции: Февр. 2007  
Откуда: Симферополь


Помог: 98 раз(а)




dcc0 пишет:
Зачем удалять пробелы?
а вдруг приедет.
dcc0 пишет:
Только вариант armancho7777777 лаконичней. И лямбда к стати.
ядреной бомбой по воробьям Улыбка


-----
Список фильмов с описанием, блекджеком и... для Joomla? -> https://киноархив[dot]com
Демо нового движка для сайта php.su -> php[dot]su, проект на гитхабе
 
 Top
armancho7777777 Супермодератор
Отправлено: 08 Января, 2016 - 13:37:57
Post Id



Активный участник


Покинул форум
Сообщений всего: 4526
Дата рег-ции: Февр. 2011  
Откуда: Москва


Помог: 221 раз(а)




Viper пишет:
ядреной бомбой по воробьям

Не устал ещё херню нести на форуме ?
Чем больше игнорируешь вас, деградантов, тем больше сами напрашиваетесь на грубость.
За*бали уже, нах*й. Занялись бы уже делом, книжку какую почитали, что ли...

Viper пишет:
PHP:
скопировать код в буфер обмена
  1. // Удаляем педопробелы
  2. $str = str_replace(' ', '', $str);
  3. // Разбиваем на массив
  4. $arr = explode(',', $str);

armancho7777777 пишет:
PHP:
скопировать код в буфер обмена
  1. preg_split('/\s*,\s*/', $str, -1, PREG_SPLIT_NO_EMPTY);

Прогони в миллион итераций, умник херов.
И не забудь в свой быдлокод, из двух строк, ещё одну добавить: trim лишних запятых.
А потом и остальное можешь прогнать.
Экономя на спичках пишите больше кода, который грузится в память. Экономя одни спички, жертвуете другими, меняете шило на мыло, а в результате получаете холсты быдлокода для резиновой памяти.


"Конечно", зачем использовать встроенные функции для работы с массивами...
Есть же foreach'и на все случаи жизни.
Благодаря чему и документацию-то читать особо не надо...
Надо экономить на каждой спичке:
"Мы" же, как ни как, только и делаем, что разрабытываем высоконагруженные проекты.
И не на чем попало, а на самом PHP. Не больше, не меньше.
Скоро операционные системы "будем" тоже на нем разрабытывать.

(Отредактировано автором: 09 Января, 2016 - 03:15:03)

 
 Top
Elena0303
Отправлено: 09 Января, 2016 - 22:12:17
Post Id



Новичок


Покинул форум
Сообщений всего: 4
Дата рег-ции: Янв. 2016  


Помог: 0 раз(а)




Viper пишет:
В самой детской реализации как-то так:
PHP:
скопировать код в буфер обмена
  1. // Первым в списке должен быть юзер
  2. $str = '100,120,130,140';
  3. // Удаляем педопробелы
  4. $str = str_replace(' ', '', $str);
  5. // Разбиваем на массив
  6. $arr = explode(',', $str);
  7. // Кол-во друзей выше ростом
  8. $i = 0;
  9.  
  10. foreach ($arr as $key => $height) {
  11.         if ($key > 0) { // Если не юзер
  12.                 if ($height > $arr[0]) { // и рост его друзей выше его собственного
  13.                         $i++; // добавили друга
  14.                 }
  15.         }
  16. }
  17.  
  18. echo $i;


Доброго времени суток. Спасибо. Я почему-то через foreach и не пробовала решить. Эхххх...
(Добавление)
dcc0 пишет:
PHP:
скопировать код в буфер обмена
  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
  5.  
  6. <form  method="post"><br/>
  7. Сообщение <br/>
  8. Moi rost
  9. <input type="text" name="moi_rost" size="50%">
  10. Rost druzei
  11. <input type="text" name="ros_druzei" size="50%"><br/>
  12. <input type="submit" name="sub" value="Test">
  13. </form>
  14. <?PHP
  15. $rdruzei=explode(",", $_POST['ros_druzei']);
  16.  
  17. $i=0;
  18. foreach($rdruzei as  $v) {
  19. if($_POST['moi_rost'] <  $v) {
  20. $i+=1;
  21.         }
  22. }
  23. echo $i . ' Выше меня!';
  24.  
  25.  ?>

Простейший вариант с ходу!
(Добавление)
Viper, а хде вариант без цикла?
(Добавление)
Зачем удалять пробелы?


Спасибо большое.
(Добавление)
armancho7777777 пишет:
PHP:
скопировать код в буфер обмена
  1. $friendsGrowth = '100, 120,  130,   140, ';
  2. $friendsGrowth = preg_split('/\s*,\s*/', $friendsGrowth, -1, PREG_SPLIT_NO_EMPTY);
  3. $myGrowth = 125;
  4.  
  5. print_r(array_filter($friendsGrowth, function($growth) use ($myGrowth) {
  6.     return $growth > $myGrowth;
  7. }));

Спасибо большое.
(Добавление)
Prizma пишет:
Все хотят помочь девушке?))
как то так:
PHP:
скопировать код в буфер обмена
  1. <?
  2. $myGrowth = 170; // рост пользователя
  3. // массив с ростом друзей пользователя
  4. $myfriendsGrowth = [
  5.     155,
  6.     178,
  7.     167,
  8.     210,
  9.     148
  10. ];
  11. // "счетчик"
  12. $higherMe = 0; // здесь подсчитываем сколько из друзей выше пользователя
  13. // перебираем всех друзей
  14. foreach($myfriendsGrowth as $friendGrowth) {
  15.     // если он друг выше пользователя увеливаем "счетчик"
  16.     if($myGrowth < $friendGrowth) {
  17.         $higherMe++;
  18.     }
  19. }
  20. // выводим результат
  21. echo sprintf('%s друзей выше Вас', $higherMe);
  22. ?>


Спасибо большое.
(Добавление)
Я, конечно, ничего про воробьев и не поняла, но за решения всем спасибо. У меня прямо с этой учебой, руки опустились... Еще и собака сильно заболела, не могу полностью время посвятить урокам. А тут 2 дня по 7 часов сидела и не сделала... Ничего выучусь буду умной и тоже буду помогать )
 
 Top
armancho7777777 Супермодератор
Отправлено: 10 Января, 2016 - 01:40:25
Post Id



Активный участник


Покинул форум
Сообщений всего: 4526
Дата рег-ции: Февр. 2011  
Откуда: Москва


Помог: 221 раз(а)




Elena0303 пишет:
Спасибо большое.

Не за что.
 
 Top
andrewkard
Отправлено: 10 Января, 2016 - 13:33:22
Post Id


Участник


Покинул форум
Сообщений всего: 1372
Дата рег-ции: Нояб. 2014  


Помог: 30 раз(а)




Для данной задачи preg_split явно не нужна. По времени она уступает explode. А убирать лишние пробелы и запятые тут ни к чему.
PHP:
скопировать код в буфер обмена
  1.  
  2.  $userGrowth = 100;
  3.     $friendsGrowth = '100,120,130,140,101,102, 103,100, 150,160,130,90,80,300,120,,,,';
  4.     $friendsGrowth = explode(',', $friendsGrowth);
  5.     $count = 0;
  6.     foreach ($friendsGrowth as $growth) {
  7.         if ($growth > $userGrowth) {
  8.             $count++;
  9.         }
  10.     }
  11.     echo $count;
  12.  

(Отредактировано автором: 10 Января, 2016 - 13:38:23)

 
 Top
dcc0
Отправлено: 10 Января, 2016 - 17:07:30
Post Id


Участник


Покинул форум
Сообщений всего: 1043
Дата рег-ции: Июль 2014  


Помог: 10 раз(а)




Сколько еще вариантов будет?
Явно рекурсивного варианта нет.

(Отредактировано автором: 10 Января, 2016 - 17:08:12)



-----
Март 2021. Бросил программирование
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB