#!/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_periodo $ // $Date: 2002-12-01 02:26:18 -0300 (dom, 01 dic 2002) $ // $Rev: 33 $ // $Author: luca $ // // Muestra ayuda. if ( $argc < 2 ) { echo "Modo de uso:\n"; echo "$argv[0] archivo\n"; exit; } // Abre archivo y obtiene datos iniciales. $f = fopen( $argv[1], 'r' ); $s = fgets( $f, 4096 ) or die( "El archivo está vacío o no se pudo abrir.\n" ); list( $t0, $z0 ) = preg_split( '/\s/', $s ); // Procesa archivo calculando período. $t_ant = 0; $c = 0; $t_sum = 0; $t_max = 0; $tt_max = 0; $t_min = 5000; $tt_min = 0; while ( ( $s = fgets( $f, 4096 ) ) !== false ) { // Obtiene datos. list( $t, $z ) = preg_split( '/\s/', $s ); // Se fija si es un "cero decreciente". if ( $z0 > 0 and ( $z < 0 or $z == 0 ) ) { if ( $t_ant ) { $t_actual = $t - $t_ant; if ( $t_actual > $t_max ) { $t_max = $t_actual; $tt_max = $t; } if ( $t_actual < $t_min ) { $t_min = $t_actual; $tt_min = $t; } echo "$t_actual\n"; $t_sum += $t_actual; $t_ant = $t; $c++; } else { $t_ant = $t; } } // Actualiza valores anteriores. $t0 = $t; $z0 = $z; } fclose( $f ); // Imprime período. echo "Períodos promedio: " . $t_sum / $c . " ($c períodos promediados)\n"; echo "Período máximo: $t_max (en t = $tt_max)\n"; echo "Período mínimo: $t_min (en t = $tt_min)\n"; ?>