Foro de elhacker.net

Programación => PHP => Mensaje iniciado por: Arm144 en 24 Abril 2016, 11:05 am



Título: Caracteres repetidos en las lineas de fichero
Publicado por: Arm144 en 24 Abril 2016, 11:05 am
Hola. Buenos días.

Estoy aprendiendo a programar en php y me he topado con un ejercicio que por más que lo intento no logro encontrarle la solución y seguro que fallo el alguna boberia de logica.

El ejercicio manda decir si en las lineas de un fichero hay o no caracteres repetidos, es decir la salida por pantalla debería de ser esta:

La línea “hola” NO tiene caracteres repetidos.

La línea “aca aca aca” SI tiene caracteres repetidos.

La línea “alla alla alla” SI tiene caracteres repetidos.

La línea “fichero” NO tiene caracteres repetidos.

Yo tengo esto programado:

<HTML>
 <HEAD>
   <TITLE>Repetición de Caracteres</TITLE>
 </HEAD>
 <BODY>
     <?php
      define("FICH_DATOS", 'FicheroEj3.txt'); 
      $fich = @fopen(FICH_DATOS, 'r') or die("ERROR al abrir el fichero");
      $sRepetidos=0;
      while(!feof($fich)){
         $linea=fgets($fich);
         for($i=0;$i<strlen($linea);$i++){
            for($j=$i+1;$j<strlen($linea);$j++){
               if($linea[$i]==$linea[$j]){
                  $sRepetidos++;
               }
            }
         }
         if($sRepetidos!=0){
            echo "La linea ".$linea." SI tiene caracteres repetidos <br>";
         }else if($sRepetidos==0){
            echo "La linea ".$linea." NO tiene caracteres repetidos <br>";
         }
      } 
   
      fclose ($fich);
?>
 </BODY>
</HTML>


Pero me da error ya que la ultima linea me sale que SI tiene caracteres repetidos.

¿Alguna ayuda para este novato? Gracias de antemano.


Título: Re: Caracteres repetidos en las lineas de fichero
Publicado por: ivancea96 en 24 Abril 2016, 19:48 pm
Código
  1. $sRepetidos=0;
Ponlo dentro el bucle while, donde lees líneas. Sinó no va a volver a 0 cuando leas otra línea.