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

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

 

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

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

тема: Обсуждение задачи N 18
 
 автор: cheops   (01.05.2006 в 11:24)   письмо автору
 
 

Так как никаких ответов никто не прислал, все лавры забираю себе :))) и публикую свой вариант решения задачи
<?php 
  
// Файл данных
  
$filename "data.txt"
  
// Высота изображения
  
$height 300;
  
// Ширина изображения
  
$width 500
  
// Жирность точки
  
$point 3;

  if (!
is_file($filename)) exit("Отсутсвует файл данных");
  
// Читаем содержимое файла
  
$arr file($filename);
  foreach(
$arr as $line)
  {
    
$num preg_split("|[\s]+|",$line);
    
$graph[$num[0]] = $num[1];
  }

  
// Вычисляем минимальное и максимальное значения 
  // по оси ординат
  
$height_min min($graph);
  
$height_max max($graph);
  
// Вычисляем минимальное и максимальное значения 
  // по оси абсцисс
  
$width_key array_keys($graph);
  
$width_min min($width_key);
  
$width_max max($width_key);

  
// Рисуем диаграмму 
  
$img imagecreatetruecolor($width 10,$height 10); 
  if (!
$img) exit("Не удалось создать изображение"); 
  
// Формируем цвета
  
$white imagecolorallocate($img255255255); 
  
$black imagecolorallocate($img000); 
  
// Фон делаем белым
  
imagefill($img11$white); 
  
// Выводим график
  
foreach($graph as $x => $y)
  {
    
// Вычисляем положение точки на графике
    
$image_x = (int)($width*($x $width_min)/($width_max $width_min)) + 5;
    
$image_y = (int)($height*($height_max $y)/($height_max $height_min)) + 5;
    
// Рисуем точку
    
imagerectangle($img
                   
$image_x $point
                   
$image_y $point
                   
$image_x $point
                   
$image_y $point
                   
$black);
  }
  
// Отправляем изображение в окно браузера
  
header ("Content-type: image/jpeg"); 
  
imagejpeg($img); 
?>

   
 
 автор: Trianon   (03.05.2006 в 11:55)   письмо автору
 
   для: cheops   (01.05.2006 в 11:24)
 

 $graph[$num[0]] = $num[1];  

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

А меж тем автор задачи сделал акцент на том, что обрабатываться должна не функция, а отношение общего случая.

.... НО это не график (2, 3, 4, 5...), а диаграмма, т.е. значения по горизонтальной оси могут повторяться сколько угодно раз, а по вертикальной быть разными и наоборот (это одна из тонкостей, на которые надо было обратить внимание).

   
Rambler's Top100
вверх

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