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.SU

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


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

> Описание: Написать программу, подсчитывающую количество четных и нечетных цифр в числе.
Karapet
Отправлено: 19 Декабря, 2014 - 21:38:22
Post Id


Новичок


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


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




Написать программу, подсчитывающую количество четных и нечетных цифр в числе.
Должная быть на пхп
прошу помогите если можете (((

var
a: integer;
even,odd: byte;
begin
readln(a);
even := 0;
odd := 0;
while a > 0 do begin
if (a mod 2) = 0 then
even := even + 1
else
odd := odd + 1;
a := a div 10;
end;
writeln('even: ', even);
writeln('odd: ', odd);
end.

есть на паскале, но не знаю рабочая или нет (((
 
 Top
skiphog
Отправлено: 19 Декабря, 2014 - 22:28:49
Post Id



Частый гость


Покинул форум
Сообщений всего: 139
Дата рег-ции: Дек. 2014  
Откуда: Киров, Россия


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




Одно из решений - можно привести число к строке:
Исправлено с учетом комментария ниже Михась
PHP:
скопировать код в буфер обмена
  1. // какое-то число
  2. $number_in = 1234567890;
  3.  
  4. //приводим int к строке
  5. $number = (string)abs($number_in);
  6.  
  7. // инициализируем счетчик четных чисел
  8. $even = 0;
  9.  
  10. //количество символов в переменной $number
  11. $quantity = strlen($number);
  12.  
  13. //бежим в цикле по цифрам в переменной $number(заведомо зная, что там только цифры)
  14. for($i = 0; $i < $quantity; $i++) {
  15.   //проверяем, если остаток от деления на 2 == 0, то это четное число
  16.   if((int)$number{$i} % 2 == 0) {
  17.     //добавляем +1 к счетчику четных чисел
  18.     $even++;
  19.   }
  20. }
  21.  
  22. //количество нечетных чисел
  23. $odd = $quantity - $even;
  24.  
  25. echo $even; // показываем четные
  26. echo '<br />';
  27. echo $odd; // показываем нечетные

(Отредактировано автором: 20 Декабря, 2014 - 11:19:58)

 
My status
 Top
Михась
Отправлено: 20 Декабря, 2014 - 10:37:36
Post Id


Новичок


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


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




To skiphog:
вначале нужно взять модуль от числа.
Остальное +
.
Вот такой вопрос: с точки зрения производительности может лучше сразу перегнать строку в массив и проверять его элементы?
Ещё, это лишнее:
else{
$odd++;

Лучше:
$odd = $quantity - $even;
 
 Top
Karapet
Отправлено: 22 Декабря, 2014 - 15:15:15
Post Id


Новичок


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


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




skiphogМихась
Спасибо огромное, сегодня же просмотрю! сейчас не могу просто, компа нету под рукой!!!
Так хорошо что есть такие добрые люди!
 
 Top
Karapet
Отправлено: 23 Декабря, 2014 - 21:21:17
Post Id


Новичок


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


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




skiphog

Простите а вы бы не могли это сделать без использования строк

если конечно вам не трудно..(
 
 Top
Bio man
Отправлено: 23 Декабря, 2014 - 23:46:00
Post Id


Постоянный участник


Покинул форум
Сообщений всего: 2751
Дата рег-ции: Июль 2010  
Откуда: Даугавпилс, Латвия


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




Karapet
PHP:
скопировать код в буфер обмена
  1. $number = 554896;
  2.  
  3. $even =
  4. $odd = 0;
  5.  
  6. while($number > 0) {
  7.     if($number % 2 === 0) {
  8.         $even++;
  9.     } else {
  10.         $odd++;
  11.     }
  12.  
  13.     $number = floor($number / 10);
  14. }
  15.  
  16. var_dump($even, $odd);
 
 Top
Karapet
Отправлено: 24 Декабря, 2014 - 18:07:07
Post Id


Новичок


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


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




Bio man

спасибо большое)))
я уже сам сделал, но ваша программа более корректна
 
 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