Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Преобразовать последовательность целых чисел
 
 автор: Любовь   (12.04.2011 в 11:15)   письмо автору
 
 

1. Задана последовательность целых чисел. Необходимо найти число, которое встречается в этой последовательности наибольшее количество раз, а если таких чисел несколько, то найти минимальное из них и после этого переместить все такие числа в конец заданной последовательности. Порядок расположения остальных чисел должен остаться без изменения.
Например, последовательность 1, 2, 3, 2, 3, 1, 2 после преобразования должна превратиться в последовательность 1, 3, 3, 1, 2, 2, 2.


2. Пользователю предлагается ввести на странице имя некоторого каталога и данные запроса. В зависимости от запроса
• удалить подкаталог текущего каталога с указанным именем (если он пустой);
• удалить из непустого подкаталога текущего каталога файлы с расширениями TXT.


3. Алгоритм проверки контрольного числа КАРТОЧКИ ПЕНСИОННОГО СТРАХОВАНИЯ:
Номер карточки пенсионного страхования (он же СНИЛС) проверяется на валидность контрольным числом. СНИЛС имеет вид: «XXX-XXX-XXX YY», где XXX—XXX-XXX — собственно номер, а YY — контрольное число.
Проверка контрольного числа Страхового номера проводится только для номеров больше номера 001—001-998
Контрольное число СНИЛС рассчитывается следующим образом:
1. Каждая цифра СНИЛС умножается на номер своей позиции (позиции отсчитываются с конца)
2. Полученные произведения суммируются
3. Если сумма меньше 100, то контрольное число равно самой сумме
4. Если сумма равна 100 или 101, то контрольное число равно 00
5. Если сумма больше 101, то сумма делится нацело на 101 и контрольное число определяется остатком от деления аналогично пунктам 3 и 4.
Конкретные примеры:
Указан СНИЛС 112-233-445 95
Проверяем правильность контрольного числа:
цифры номера 1 1 2 2 3 3 4 4 5
номер позиции 9 8 7 6 5 4 3 2 1
Сумма = 1х9 + 1х8 + 2х7 + 2х6 + 3х5 + 3х4 + 4х3 + 4х2 + 5х1 = 95
95 / !101! =95
Контрольное число 95 - указано верно.


4. Программист набрал команду rm -f c дополнительным параметром – маской. Маска содержит в себе буквы, а также символы ? (один произвольный символ) и * (любая последовательность символов, возможно, пустая). Первая строка входных данных содержит маску, указанную в качестве параметра. Далее идут строки с именами файлов, каждая строка состоит из строчных латинских букв.
Программа должна вывести число – количество оставшихся в каталоге файлов, то есть не удовлетворяющих заданной маске.


5. Создать базу на MySQL Мобильные телефоны (Наименование, фирма, стандарт связи, год выпуска, заряд аккумулятора, потребление при ожидании, потребление при разговоре)
• база должна быть наполнена информацией, не менее 5 записей.
• сделать возможным изменение и добавление данных.
• выполнить сортировку данных по выбранному полю
• выполнить поиск данных по заданной подстроке.
• добавить в меню пункт настройки отображения страницы (цвет заголовков и документа).
• сформировать следующие отчеты:
o посчитать количество телефонов по заданному стандарту связи
o максимальное и минимальное количество телефонов заданного наименования за определенный год
o среднюю продолжительность разговора в зависимости от фирмы производителя.

  Ответить  
 
 автор: cheops   (12.04.2011 в 14:02)   письмо автору
 
   для: Любовь   (12.04.2011 в 11:15)
 

Решение первой задачи может выглядеть так
<?php
  
// Заданная последовательность
  
$str "1, 2, 3, 2, 3, 2, 1";
  
// Преобразуем последовательность в массив
  
$arr explode(", "$str);
  
// Формируем массив значений
  
$result = array();
  for(
$i 0$i count($arr); $i++)
  {
    
$result[$arr[$i]]++;
  }
  
// Сортируем массив
  
arsort($result);
  
// Выводим массив
  
$maxval $maxcnt 0;
  foreach(
$result as $k => $v)
  {
    
// Максимальное значение
    
$maxval $k;
    
$maxcnt $v;
    break;
  }
  if(
$maxcnt 1)
  {
    
// Ищем значение последнего элемента
    
$index 0;
    for(
$i 0$i count($arr); $i++)
    {
      if(
$arr[$i] == $maxval$index $i;
    }
    
// Разбиваем массив $arr на две части по $index
    
$chunk array_chunk($arr$index 1);
    
// Удаляем найденные числа до индекса $index
    
$count 0;
    for(
$i 0$i count($chunk[0]); $i++)
    {
      if(
$chunk[0][$i] == $maxval)
      {
        unset(
$chunk[0][$i]);
        
// Подсчитываем количество удалений
        
$count++;
      }
    }
    
// Вставляем удаленные значения после $index
    
for($i 0$i $count$i++)
    {
      
$chunk[0][] = $maxval;
    }
    
// Собираем массив в одно целое
    
$arr array_merge($chunk[0], $chunk[1]);
  }

  
// Индекс последнего значения
  
echo "Индекс последнего значения $index<br>";
  echo 
"Исходная последовательность $str<br>";
  echo 
"Результирующая последовательность ".implode(", "$arr);
?>

PS Под разные вопросы лучше заводить разные темы. Объем задач достаточно велик и получить конструктивный ответ больше вероятность, если каждая задача оформленна в виде отдельной темы. Да и ссылаться на отдельные темы потом гораздо проще.

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования