#!/usr/bin/php4 -qC // // Este programa es Software Libre; usted puede redistribuirlo // y/o modificarlo bajo los términos de la "GNU General Public // License" como lo publica la "FSF Free Software Foundation", // o (a su elección) de cualquier versión posterior. // // Este programa es distribuido con la esperanza de que le será // útil, pero SIN NINGUNA GARANTIA; incluso sin la garantía // implícita por el MERCADEO o EJERCICIO DE ALGUN PROPOSITO en // particular. Vea la "GNU General Public License" para más // detalles. // // Usted debe haber recibido una copia de la "GNU General Public // License" junto con este programa, si no, escriba a la "FSF // Free Software Foundation, Inc.", 59 Temple Place - Suite 330, // Boston, MA 02111-1307, USA. // // $URL: http://www.llucax.hn.org:81/svn/facultad/75.12/tp2/calcula_maxmin $ // $Date: 2002-12-01 02:26:18 -0300 (dom, 01 dic 2002) $ // $Rev: 33 $ // $Author: luca $ // // Muestra ayuda. if ( $argc < 3 ) { echo "Modo de uso:\n"; echo "$argv[0] modo archivo\n"; echo "Donde modo es 'max' para calcular los máximos o 'min' para calcular los mínimos.\n"; exit; } // Abre archivos y obtiene datos iniciales. $f = fopen( $argv[2], 'r' ) or die( "Error al abrir $argv[2] para lectura.\n" ); $s = fgets( $f, 4096 ) or die( "El archivo $argv[2] está vacío.\n" ); list( $t0, $z0, $dz0 ) = preg_split( '/\s/', $s ); // El primer valor siempre es un máximo. if ( $argv[1] == 'max' ) echo "$t0 $z0\n"; // Procesa archivo calculando máximos y mínimos. while ( ( $s = fgets( $f, 4096 ) ) !== false ) { // Obtiene datos. list( $t, $z, $dz ) = preg_split( '/\s/', $s ); // Se fija si la derivada es un "cero decreciente" (si es un máximo). if ( $argv[1] == 'max' and $dz0 > 0 and ( $dz < 0 or $dz == 0 ) ) if ( $z0 > $z ) echo "$t0 $z0\n"; else echo "$t $z\n"; // Se fija si la derivada es un "cero creciente" (si es un mínimo). if ( $argv[1] == 'min' and $dz0 < 0 and ( $dz > 0 or $dz == 0 ) ) if ( $z0 < $z ) echo "$t0 $z0\n"; else echo "$t $z\n"; // Actualiza valores anteriores. $t0 = $t; $z0 = $z; $dz0 = $dz; } fclose( $f ); ?>