Autor
|
Tema: Duda (Leído 3,358 veces)
|
SojatDotar
Desconectado
Mensajes: 40
|
|
Duda
« en: 24 Mayo 2015, 03:54 am » |
|
Buenas, como verifico que un número tenga 16 digitos? solo utilizando if, else o swicth
|
|
|
En línea
|
|
|
|
crack81
Desconectado
Mensajes: 222
|
|
Re: Duda
« Respuesta #1 en: 24 Mayo 2015, 05:13 am » |
|
Una de las formas mas sencillas de hacerlo es haciendo lo siguiente #include<iostream> using namespace std; int main(){ long long int x=1234567891234567; if(x>=1000000000000000 || x<=9999999999999999){ cout<<"solo posee 16 digitos"<<endl; } else{ cout<<"No posee 16 digitos"<<endl; } cin.get(); cin.get(); return 0; }
|
|
|
En línea
|
Si C/C++ es el padre de los lenguajes entonces ASM es dios.
|
|
|
DarK_FirefoX
Desconectado
Mensajes: 1.263
Be the change you wanna see in te world
|
|
Re: Duda
« Respuesta #2 en: 24 Mayo 2015, 08:47 am » |
|
Buenas, como verifico que un número tenga 16 digitos? solo utilizando if, else o swicth
1- El nombre de tu tema no brinda ninguna información con respecto a lo que quieres preguntar. Deberías leerte las reglas del foro. 2 - No se resuelven ejercicios. Si esa es tu duda, sería bueno que plantearas que has hecho o pensado y desde allí te podríamos ayudar. 3 - No especificas en que lenguaje estás trabajando (C o C++) Ahora, en que tipo de dato te entran el número?
|
|
|
En línea
|
|
|
|
Peregring-lk
Desconectado
Mensajes: 50
|
|
Re: Duda
« Respuesta #3 en: 24 Mayo 2015, 23:02 pm » |
|
Bueno, es bastante obvio, viendo las dos primeras líneas del programa, que está programando en C++.
|
|
|
En línea
|
|
|
|
Eternal Idol
Kernel coder
Moderador
Desconectado
Mensajes: 5.937
Israel nunca torturó niños, ni lo volverá a hacer.
|
|
Re: Duda
« Respuesta #4 en: 25 Mayo 2015, 00:06 am » |
|
Bueno, es bastante obvio, viendo las dos primeras líneas del programa, que está programando en C++.
SojatDotar no publico nada de codigo.
|
|
|
En línea
|
La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste. Juan Domingo Perón
|
|
|
SojatDotar
Desconectado
Mensajes: 40
|
|
Re: Duda
« Respuesta #5 en: 25 Mayo 2015, 00:45 am » |
|
Buenas podrían ayudarme en este código tengo que hacer un sudoku en c++ ( con solo if, else y swicth) por fases la primera consiste en verificar que la cadena ( entero de 16 digitos) cumpla que tenga 16 digitos y que no se pase, luego que los número esten comprendidos entre 1 y 4, luego verificar que no haya número repetido en los cuadrantes, filas y columnas, tengo este código #include <iostream> using namespace std;
int main () {
int a,b,c,d,e,f,a11,a12,a13,a14,b11,b12,b13,b14,c11,c12,c13,c14,d11,d12,d13,d14; unsigned long long int x; cout<<"introduzca la cadena"<<endl; cin>>x;
a=x/100000000; b=x%100000000; c=a/10000; d=a%10000; e=b/10000; f=b%10000; a11=c/1000; c=c%1000; a12=c/100; c=c%100; a13=c/10; a14=c%10; b11=d/1000; d=d%1000; b12=d/100; d=d%100; b13=d/10; b14=d%10; c11=e/1000; e=e%1000; c12=e/100; e=e%100; c13=e/10; c14=e%10; d11=f/1000; f=f%1000; d12=f/100; f=f%100; d13=f/10; d14=f%10; if ((x/100000000000000000)==0){ cout<<"Entrada incorrecta la cadena debe contener 16 digitos"<<endl;} else {cout<<"solucion valida"<<endl; if (((a11!=1) and (a11!=2) and (a11!=3) and (a11!=4)) or ((a12!=1) and (a12!=2) and (a12!=3) and (a12!=4)) or ((a13!=1) and (a13!=2) and (a13!=3) and (a13!=4)) or ((a14!=1) and (a14!=2) and (a14!=3) and (a14!=4)) or ((b11!=1) and (b11!=2) and (b11!=3) and (b11!=4)) or ((b12!=1) and (b12!=2) and (b12!=3) and (b12!=4)) or ((b13!=1) and ( b13!=2) and (b13!=3) and (b13!=4)) or ((b14!=1) and (b14!=2) and (b14!=3) and (b14!=4)) or ((c11!=1) and (c11!=2) and (c11!=3) and (c11!=4)) or ((c12!=1) and (c12!=2) and (c12!=3) and (c12!=4)) or ((c13!=1) and (c13!=2) and (c13!=3) and (c13!=4)) or ((c14!=1) and (c14!=2) and (c14!=3) and (c14!=4)) or ((d11!=1) and (d11!=2) and (d11!=3) and (d11!=4)) or ((d12!=1) and (d12!=2) and (d12!=3) and (d12!=4)) or ((d13!=1) and (d13!=2) and (d13!=3) and (d13!=4)) or ((d14!=1) and (d14!=2) and (d14!=3) and (d14!=4))){ cout<<"Entrada incorrecta, la cadena solo debe poseer digitos entre 1 y 4 "<<endl;} else { cout<<"Solucion valida"<<endl;} } if ((a11 == a12) and (a11 == b11) and (a11 == b12) and (a12 == b11) and (a12 == b12) and (b11 ==b12) ) { cout<<"error en el cuadrante C1"<<endl;} if ((a13==a14) and (a13==b13) and (a13==b14) and (a14==b13) and (a14==b14) and (b13==b14)) { cout<<" error en el cuadrante C2"<<endl; } if ((c11==c12) and (c11==d11) and (c11==d12) and (c12==d11) and (c12==d12) and (d11==d12)) { cout<<"error en el cuadrante C3"<<endl; } if ((c13==c14)and (c13==d13) and (c13==d14) and (c14==d13) and (c14==d14) and (d13==d14)) { cout<<"error en el cuadrante C4"<<endl; } if ((a11==a12) and (a11==a13) and (a11==a14)) { cout<<"error en la fila 1"<<endl;} if ((b11==b12) and (b11==b13) and (b11==b14)) { cout<<"error en la fila 2"<<endl;} if((c11==c12) and (c11==c13) and (c11==c14)) { cout<<"error en la fila 3"<<endl;} if((d11==d12) and (d11==d13) and (d11==d14)) { cout<<"error en la fila 4"<<endl;} if (( a11==b11) and (a11==c11) and (a11==d11)) { cout<<"error en la columna 1"<<endl;} if ((a12==b12) and (a12==c12) and (a12==d12)) { cout<<"error en la columna 2"<<endl;} if((a13==b13) and (a13==c13) and (a13==d13)) { cout<<"error en la columna 3"<<endl;} if ((a14==b14) and (a14==c14) and (a14==d14)) { cout<<"error en la columna 4"<<endl;} } pero cuando ingreso la cadena válida:1234432134122143, me dice entrada valida que la cadena debe poseer número entre 1 y 4, y cuando ingreso la invalida (cadena invalida:123432132222133) no me informa sobre los errores, quisiera saber si pueden echarle un vistazo y informarme sobre los errores, por favor ( cuadrante valido http://prntscr.com/78zmcs)
|
|
|
En línea
|
|
|
|
0xFer
Desconectado
Mensajes: 400
|
|
Re: Duda
« Respuesta #6 en: 25 Mayo 2015, 01:29 am » |
|
Para pedir la cadena de 16 dígitos puedes hacer ésto: cout << "Ingrese número de 16 digito -> "; string num16; cin >> num16; if( num16.length() == 16){ //Número correcto } else{ //Número incorrecto }
Ahora pongamos que queremos saber si en la primera fila hay algún número que se repita: Como se supone que a fuerzas tienen que ser diferentes, entonces convertimos char a int, '1' = 49 '2' = 50 '3' = 51 '4' = 52 Al multiplicar el resultado es igual a 6 497 400, entonces lo comprobamos así if( ( num[0] * num[1] * num[2] * num[3] ) == 6497400 ){ //No se repite ningún digito }
lo mismo haces para las demás filas y columnas, para la segunda fila sería así: if( ( num[4] * num[5] * num[6] * num[7] ) == 6497400 ){ //No se repite ningún digito }
Luego si quieres imprimir el sodoku: for(int i = 0; i < 16;i++){ if( i%4==0) cout endl; num[i]; }
lo que imprime es una matriz 4x4 Editado
|
|
« Última modificación: 25 Mayo 2015, 01:39 am por 0xFer »
|
En línea
|
int getRandomNumber(){ return 4; //chosen by fair dice roll //guaranteed to be random }
|
|
|
SojatDotar
Desconectado
Mensajes: 40
|
|
Re: Duda
« Respuesta #7 en: 25 Mayo 2015, 01:43 am » |
|
Yo lo que hice a principio, fue descomponer el número en dígitos, luego, verifique con un if que no ingren número que no esten entre 1 y 4, pero ahora lo de la columnas y fila, me llamo la atención que pusiste, pensaba poner if (num1==num2) que me imprimera el error ejemplo columna 1, pero me piden, me muestre en donde esta el error, ( sea fila, columna o cuadrante) y el número que se repite, no se como poner eso, cuál es el número que se repite
|
|
|
En línea
|
|
|
|
0xFer
Desconectado
Mensajes: 400
|
|
Re: Duda
« Respuesta #8 en: 25 Mayo 2015, 01:51 am » |
|
Teniendo en cuenta que los dígitos en el ejemplo que te mostré son, en realidad caracteres, entonces para saber si uno se repite sería así: if( num[0] == num[1] or num[0] == num[2] or num[0] == num[3] ){ //se repite el número num[0] } else if( num[1] == num[2] or num[1] == num[3] ){ //ser repite el número num[1] } else if( num[2] == num[3] ){ //ser repite el número num[2] } else{ //todo bien }
en tu código sería con num1,num2 y así Luego puedes hacer una subrutina que haga la comprobación a partir de 4 indices
|
|
« Última modificación: 25 Mayo 2015, 01:54 am por 0xFer »
|
En línea
|
int getRandomNumber(){ return 4; //chosen by fair dice roll //guaranteed to be random }
|
|
|
DarK_FirefoX
Desconectado
Mensajes: 1.263
Be the change you wanna see in te world
|
|
Re: Duda
« Respuesta #9 en: 25 Mayo 2015, 02:36 am » |
|
Hola! al final no estoy seguro si cambiaste a manejar la "cadena" como un string, pero voy a responder tu pregunta original. Puedes usar el siguiente método para ver que cantidad de dígitos tiene un número. int cantDigitos(unsigned long long int number) { int cont = 1; if (number / 10 == 0) return 1; //Si el número entre 10 es 0, entonces tiene un dígito //Se realiza la misma operación mientras incrementas el contador while (number / 10 > 0) { cont++; number = number / 10; } return cont; }
Ej: Para una entrada unsigned long long int var = 12345678123456789;
Obtienes: 17 Espero, esto te ayude. Salu2s
|
|
|
En línea
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
Pequeña duda con un comando batch (NUEVA DUDA RELACIONADA)
Scripting
|
revenge1252
|
9
|
9,738
|
13 Febrero 2008, 21:41 pm
por revenge1252
|
|
|
Duda duda y duda de Metasploit
Bugs y Exploits
|
huber_nomas
|
4
|
5,775
|
17 Febrero 2012, 14:00 pm
por MauroMasciar
|
|
|
Duda facil, [VIDEO QUE EXPLICA MI DUDA]
Diseño Gráfico
|
Ngeooz
|
6
|
8,841
|
2 Diciembre 2013, 19:33 pm
por Ngeooz
|
|
|
[DUDA] Cambiar letra de unidad a archivo con un Batch [DUDA]
« 1 2 »
Windows
|
MrMaticool
|
10
|
11,280
|
12 Febrero 2014, 17:55 pm
por MrMaticool
|
|
|
[DUDA][LICENCIA][GPL]tengo una duda sobre las caracteristicas de la licencia GPL
Dudas Generales
|
Noxware
|
0
|
1,862
|
2 Mayo 2014, 00:34 am
por Noxware
|
|