Cita:
Iniciado por vangodp
Código C:
Ver original#include <stdio.h>
int main () {
int salir = 0;
int n = 0;
int numeros[] = {8, 4, 8, 5, 4};
int repeticiones = 0; //contador de repeticiones
int i, z;
//Pasamos por cada casilla comparando con las demas.
for ( i = 0; i < sizeof ( numeros ) / sizeof ( numeros[0] ); i++ ) {
//Pasamos por alto comparaciones de casillas con un valor -1 ya que quiere decir que -1 es repetido y ya ha sido marcado.
if ( numeros[i] != -1 ) {
//comparamos cada casilla con todas las demas...
for ( z = 0; z < sizeof ( numeros ) / sizeof ( numeros[0] ); z++ ) {
//...pero solo si no se trata de la misma casilla, ya que sabemos que se trata del mismo numero y no se puede comparar un numero con el mismo XD
if ( i != z ){
//Nos quedamos con el primer numero que no repita, los demas que se repiten se modifican a -1 y se añaden +1 al contador.
if ( numeros[i] == numeros[z] ){
numeros[z] = -1;
repeticiones++;
}
}
}
}
}
//imprimimos arreglo modificado
for ( i = 0; i < sizeof ( numeros ) / sizeof ( numeros[0] ); i++ ) {
}
printf("Numero de repeticiones: %d\n\n", repeticiones
);
return 0;
}
wow hermano muchisimas gracias, bastante ayuda me diste. No tengo como agradecertelo, nunca iba a llegar a esas conclusiones, aun me falta mucho por aprender.
Una pregunta hermano, funciona con cualquier cantidad de valores en el arreglo?. Si es mas de 5 en este caso?.
otra cosa, no entendi esta parte:
Código:
for ( i = 0; i < sizeof ( numeros ) / sizeof ( numeros[0] ); i++ ) {
por qué divides?.