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

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

 

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

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

тема: Ответ 006 на задачу N 7
 
 автор: SoftTime   (18.02.2006 в 00:50)   письмо автору
 
 

Ответ 006 на задачу N 7.
С условиями задачи можно ознакомится по ссылке.

<?php
//mixture.php

//определяем имя файла с данными
$file_name "file.txt"
//считываем его в массив
$array file ($file_name);
//избавляемся от лишних символов пробелов
foreach ($array as $key => $value)
{
  
$array[$key] = trim ($value);
}  
//перемешиваем 
shuffle ($array);
//записываем обратно в файл
$fp fopen ($file_name"w");
fwrite ($fpimplode ("\n"$array));
fclose ($fp);
?>



<?php
//ordernum.php

//определяем имя файла с данными
$file_name "file.txt"
//считываем его в массив
$array file ($file_name);
//избавляемся от лишних символов пробелов
foreach ($array as $key => $value)
{
  
$array[$key] = trim ($value);
}  
//сортируем лексикографически
natcasesort ($array);
//записываем обратно в файл
$fp fopen ($file_name"w");
fwrite ($fpimplode ("\n"$array));
fclose ($fp);
?>



<?php
//orderalph.php

//определяем имя файла с данными
$file_name "file.txt"
//определяем символ, который разделяет номер и текст
$char " ";
//считываем файл в массив
$array file ($file_name);
//проганяем этот массив
foreach ($array as $value)
{
  
//разбираем каждую строку, по символу $char и записываем в массив $text
  
$text explode ($chartrim ($value));
  
//записываем в массив $array_change, с ключем - номером, строку с вырезанным номером
  
$array_change[$text[0]] = substr (trim ($value), strlen ($text[0]));
}  
//сортируем по алфавиту
natcasesort ($array_change);
$str "";
//прогоняем массив $array_change и записываем все в $str
foreach ($array_change as $key => $value)
{
  
$str .= $key $char $value "\n";
}
//записываем обратно в файл
$fp fopen ($file_name"w");
fwrite ($fpsubstr ($str0, -1));
fclose ($fp);
?>


http://www.softtime.ru/info/task.php?id_article=77

   
 
 автор: cheops   (20.02.2006 в 00:33)   письмо автору
 
   для: SoftTime   (18.02.2006 в 00:50)
 

Мне последний скрипт показался несколько громоздким на фоне других скриптов (хотя это наверное уже субъективно :). Корректно обрабатывается ситуация с отсутствием перевода строки в конце файла. Используется функция shuffle(), а не изобретается собственный способ сортировки - это тоже хорошо. Сама сортировка проходит тоже корректно и скрипты работают просто отлично. Правда один минус нашёл - orderalph.php добавляет один лишний пробел между цифрой и названием языка программирования, нарушая формат файла.

   
 
 автор: drago   (20.02.2006 в 17:26)   письмо автору
 
   для: cheops   (20.02.2006 в 00:33)
 

>Правда один минус нашёл - orderalph.php добавляет один лишний пробел между цифрой и названием языка программирования, нарушая формат файла.

Да, это я просмотрел. Браузер лишние пробелы вырезает, а в файл глянуть я поленился. :))

Вот исправленый вариант:

<?php
//orderalph.php

//определяем имя файла с данными
$file_name "file.txt"
//определяем символ, который разделяет номер и текст
$char " ";
//считываем файл в массив
$array file ($file_name);
//проганяем этот массив
foreach ($array as $value)
{
  
//разбираем каждую строку, по символу $char и записываем в массив $text
  
$text explode ($chartrim ($value));
  
//записываем в массив $array_change, с ключем - номером, строку с вырезанным номером
  
$array_change[$text[0]] = substr (trim ($value), strlen ($text[0]) + 1);
}  
//сортируем по алфавиту
natcasesort ($array_change);
$str "";
//прогоняем массив $array_change и записываем все в $str
foreach ($array_change as $key => $value)
{
  
$str .= $key $char $value "\n";
}
//записываем обратно в файл
$fp fopen ($file_name"w");
fwrite ($fpsubstr ($str0, -1));
fclose ($fp);
?>


Как говорится: "Первый блин комом". Дальше буду тестировать лучше. :)

   
Rambler's Top100
вверх

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