Dev - C++ - verificacion de un numero

 
Vista:
sin imagen de perfil

verificacion de un numero

Publicado por juan (2 intervenciones) el 22/09/2022 19:28:45
buenas tardes, tengo un programa en el que me piden verificar que un numero es de 4 cifras y que no todas sus cifras son iguales, ya lo hice y funciona excepto en un caso.

cuando se le ingresa un numero de 4 cifras iguales (1111), hace la verificacion y le pide al usuario ingresar un numero valido pero si despues de este se le ingresa otro numero igual (2222), la verificacion de los numeros repetidos no actua y lo deja pasar. si alguien sabe cual seria el problema agradezco la ayuda.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
#include <iostream>
using namespace std;
 
int main(){
 
    int n; // numero
    cout << "ingrese un numero de 4 digitos con al menos dos numeros distintos: ";
    cin >> n;
 
    int m = 0, o = 0, u, z = 0; // variables
    int contador, contador1, contador2 = 5; //contadores
    int x[4], y[4]; // vectores
 
    //--------------------------- verificacion -------------------------------------
    while(contador != 4 && contador2 > 3){ // mientras el numero sea de menos de 4 digitos o no tenga al menos dos numeros distintos
        contador = 0;
        u = n;
        // ======= verificacion del tamano del numero =======
        while (u > 0){
            u = u/10;
            contador = contador + 1; // contador de digitos del numero
        }
 
        if(contador != 4){ // si el numero tiene menos de 4 digitos
            cout << "el numero tiene menos de 4 digitos, digite un numero valido: ";
            cin >> n;
 
            u = n;
        }
        // =================================================
 
        // ========= verificacion de numeros repetidos ================
        if(contador == 4){ // si el numero tiene 4 digitos
            u = n;
            z = n;
            for(int i = 3; i >= 0; i--){ // convierte el numero en dos vectores
                u = u % 10;
                x[i] = u;
                y[i] = u;
                z = z / 10;
                u = z;
            }
 
            contador2 = 0; // contador de repeticiones 2 (reinicia el valor del contador)
 
            // recorrido del vector en busca de numeros repetidos
            for(int j = 0; j < 4; j++){
              contador1 = 0; // contador de repeticiones 1 (reinicia el valor del contador)
                m = x[j];
                for(int k = 0; k < 4; k++){
                  o = y[k];
                    if(m == o){
                        contador1 = contador1 + 1; // si hay numeros repetidos contador1 aumenta
                        y[k] = 0; // se borra esa posicion del vector
                    }
                }
 
                if(contador1 == 1 || contador1 == 0){ // si solo encontro la repeticion de su misma casilla
                  contador1 = 0; // se reinicia el contador 1
                }else{
                  contador2 = contador2 + contador1; // si no se asigna su valor al contador 2;
                }
            }
 
 
        }
 
        if(contador2 == 4){ // si el numero no tiene al menos dos numeros distintos
            n = 0;
            cout << "el numero tiene mas de dos numeros repetidos, digite un numero valido: ";
            cin >> n;
        }
 
    }
 
    cout << "numero valido";
 
    return 0;
}


verificacion-de-digitos

verificacion-de-numeros-repetidos
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil
Val: 1.440
Bronce
Ha mantenido su posición en Dev - C++ (en relación al último mes)
Gráfica de Dev - C++

verificacion de un numero

Publicado por dario (572 intervenciones) el 23/09/2022 04:20:07
Otra forma de verificar un numero de 4 cifras. Un numero tiene 4 cifras si es mayor o igual a 1000 o es menor o igual que 9999.
Este ciclo se repetira hasta que ingrese un numero de 4 cifras.
Saludos.

1
2
3
4
5
6
7
8
9
10
int main() {
    int n;
 
    do {
        cout << "Ingrese un numero de 4 cifras: ";
        cin >> n;
    } while ((n < 1000) || (n > 9999));
 
    return 0;
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil

verificacion de un numero

Publicado por juan (2 intervenciones) el 23/09/2022 04:24:41
uff y sale mas corto, muchas gracias bro no pense en esa opcion y me fui por la peor
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar