
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.


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;
}
Valora esta pregunta


0