Autor
|
Tema: RETOS C++ (Leído 56,095 veces)
|
do-while
Desconectado
Mensajes: 1.276
¿Habra que sacarla de paseo?
|
1. #include <stdio.h> #include <string.h> #define DIM 100 int main(int argc, char *argv[]) { char texto[DIM],*cifras[]={"cero","uno","dos","tres","cuatro","cinco","seis","siete","ocho","nueve"}; int i; do{ if(!fgets(texto ,DIM ,stdin )) return 0; for(i = 0 ; texto[i] ; i++) if(texto[i] >= '0' && texto[i] <= '9') printf("%s\n",cifras [texto [i ] - '0']); }while(texto [strlen(texto ) - 1] != '\n'); return 0; }
#include <iostream> #include <string> using namespace std; int main(int argc, char *agrv[]) { char *cifras[] = {"cero","uno","dos","tres","cuatro","cinco","seis","siete","ocho","nueve"}; string texto; getline(cin,texto); for(int i = 0 ; i < texto.length() ; i++) if(texto[i] >= '0' && texto[i] <= '9') cout << cifras[texto[i] - '0'] << endl; return 0; }
Y mas eficiente: #include <iostream> #include <string> using namespace std; int main(int argc, char *agrv[]) { char *cifras[] = {"cero","uno","dos","tres","cuatro","cinco","seis","siete","ocho","nueve"}; string texto; getline(cin,texto); //no se dice nada sobre el orden for(int i = texto.length() - 1 ; i >= 0 ; i--) if(texto[i] >= '0' && texto[i] <= '9') cout << cifras[texto[i] - '0'] << endl; return 0; }
2. Faltan datos: ¿Nombre del fichero? ¿Tipo de fichero? (binario/texto) ¿Leer completo, por bloques de una cantidad determinada de bytes, por palabras...? 3. #include <stdio.h> int main(int argc, char *argv[]) { int max, num,i; for(i = 1 ; i < 4 ; i++) { if(num > max) max = num; } return 0; }
4. #include <iostream> #include <string> using namespace std; int main(int argc, char *argv[]) { string min, palabra; int i; cin >> min; for(i = 1 ; i < 4 ; i++) { cin >> palabra; if(palabra < min) min = palabra; } cout << min; return 0; }
5. Faltan datos: ¿Alfabeto? ¿Longitud de la clave?
|
|
« Última modificación: 21 Septiembre 2012, 13:35 pm por do-while »
|
En línea
|
- Doctor, confundo los números y los colores. - Vaya marrón. - ¿Marrón? ¡Por el culo te la hinco!
|
|
|
Stakewinner00
|
perdon por los que se confundieron con el punto 4 fue error mio.
Estoy mirando los codigos y sumando los puntos.
do-while, en los que faltan datos es libre
ecfisa, en tu codigo falta un include despues lo añado
|
|
« Última modificación: 21 Septiembre 2012, 15:11 pm por Stakewinner00 »
|
En línea
|
|
|
|
do-while
Desconectado
Mensajes: 1.276
¿Habra que sacarla de paseo?
|
2. #include <stdio.h> #include <stdlib.h> int main(int argc, char *argv[]) { FILE *f; char *contenido; unsigned long longitud; f =fopen("algunfichero","rb"); return -1; fread(contenido ,longitud ,1,f ); return 0; }
5. Este crashea con alfabetos de mas de 18 caracteres y longitud 6 /* * linea de comandos: * nombreprograma alfabeto longitud */ #include <iostream> #include <list> #include <string> #include <cstring> #include <cstdlib> using namespace std; unsigned long convertir(char *s); void bruteforce(list<string> &resultado,char *alfabeto,unsigned long longitud); int main(int argc, char *argv[]) { list<string> resultado; unsigned long l; if(argc != 3) { cerr << argv[0] << " alfabeto longitud" << endl; return -1; } if(!(l = strlen(argv[1]))) { cerr << argv[0] << " alfabeto longitud" << endl; return -1; } //eliminamos caracteres repetidos del alfabeto for(int i = 0 ; i < strlen(argv[1]) ; i++) if(strchr(argv[1] + i + 1 , argv[1][i])) { memmove(argv[1] + i ,argv[1] + i + 1, (l--) - i ); i--; } //nos aseguramos de que el segundo argumento sea numerico for(int i = 0 ; argv[2][i] ; i++) if(argv[2][i] < '0' || argv[2][i] > '9') { cerr << argv[0] << " alfabeto longitud" << endl; return -1; } bruteforce(resultado,argv[1],convertir(argv[2])); for(list<string>::iterator it = resultado.begin() ; it != resultado.end() ; it++) cout << (*it) << endl; return 0; } unsigned long convertir(char *s) { unsigned long ret = 0; for(int i = 0 ; s[i] ; i++) { ret *= 10; ret += s[i] - '0'; } return ret; } void bruteforce(list<string> &resultado,char *alfabeto,unsigned long longitud) { static string cadena; static unsigned long posicion = 0; if(posicion == longitud) { //si hemos llegado a la ultima posicion almacenamos la variacion resultado.push_back(cadena); return; } //si es la primera llamada damos la longitud deseada a la cadena if(posicion == 0) cadena.resize(longitud); //para cada una de los caracteres del alfabeto for(int i = 0 ; alfabeto[i] ; i++) { cadena[posicion] = alfabeto[i]; //asignamos a la posicion correspondiente el caracter del alfabeto. //avanzamos una posicion posicion++; //y calculamos el siguiente caracter bruteforce(resultado , alfabeto , longitud); //volvemos a la posicion original posicion--; } //posicion termina a cero para la siguiente llamada if(!posicion) cadena.resize(0); }
Alternativa: /* * linea de comandos: * nombreprograma alfabeto longitud */ #include <iostream> #include <string> #include <cstring> #include <cstdlib> using namespace std; unsigned long convertir(char *s); void bruteforce(char *alfabeto,unsigned long longitud); int main(int argc, char *argv[]) { unsigned long l; if(argc != 3) { cerr << argv[0] << " alfabeto longitud" << endl; return -1; } if(!(l = strlen(argv[1]))) { cerr << argv[0] << " alfabeto longitud" << endl; return -1; } //eliminamos caracteres repetidos del alfabeto for(int i = 0 ; i < strlen(argv[1]) ; i++) if(strchr(argv[1] + i + 1 , argv[1][i])) { memmove(argv[1] + i ,argv[1] + i + 1, (l--) - i ); i--; } //nos aseguramos de que el segundo argumento sea numerico for(int i = 0 ; argv[2][i] ; i++) if(argv[2][i] < '0' || argv[2][i] > '9') { cerr << argv[0] << " alfabeto longitud" << endl; return -1; } bruteforce(argv[1],convertir(argv[2])); return 0; } unsigned long convertir(char *s) { unsigned long ret = 0; for(int i = 0 ; s[i] ; i++) { ret *= 10; ret += s[i] - '0'; } return ret; } void bruteforce(char *alfabeto,unsigned long longitud) { static string cadena; static unsigned long posicion = 0; if(posicion == longitud) { //si hemos llegado a la ultima posicion almacenamos la variacion cout << (cadena) << endl; return; } //si es la primera llamada damos la longitud deseada a la cadena if(posicion == 0) cadena.resize(longitud); //para cada una de los caracteres del alfabeto for(int i = 0 ; alfabeto[i] ; i++) { cadena[posicion] = alfabeto[i]; //asignamos a la posicion correspondiente el caracter del alfabeto. //avanzamos una posicion posicion++; //y calculamos el siguiente caracter bruteforce(alfabeto , longitud); //volvemos a la posicion original posicion--; } //posicion termina a cero para la siguiente llamada if(!posicion) cadena.resize(0); }
|
|
« Última modificación: 21 Septiembre 2012, 16:26 pm por do-while »
|
En línea
|
- Doctor, confundo los números y los colores. - Vaya marrón. - ¿Marrón? ¡Por el culo te la hinco!
|
|
|
Stakewinner00
|
do-while el 2 no compila
a.cpp:14: ANSI C++ forbids implicit conversion from `void *' in assignment
el otro te subo los puntos
quien haga otro programa más rápido que el de el ganara más puntos o si alguien lo hace más lento ganaras mas puntos tu do-while
|
|
« Última modificación: 21 Septiembre 2012, 16:46 pm por Stakewinner00 »
|
En línea
|
|
|
|
do-while
Desconectado
Mensajes: 1.276
¿Habra que sacarla de paseo?
|
¡Buenas! #include <stdio.h> #include <stdlib.h> int main(int argc, char *argv[]) { FILE *f; char *contenido; unsigned long longitud; f =fopen("algunfichero","rb"); return -1; fread(contenido ,longitud ,1,f ); return 0; }
Prueba ahora, que en C++ me parece que no se puede asignar un punter void a un puntero no void. Obliga a hacer el cast. ¡Saludos!
|
|
|
En línea
|
- Doctor, confundo los números y los colores. - Vaya marrón. - ¿Marrón? ¡Por el culo te la hinco!
|
|
|
Stakewinner00
|
¡Buenas! #include <stdio.h> #include <stdlib.h> int main(int argc, char *argv[]) { FILE *f; char *contenido; unsigned long longitud; f =fopen("algunfichero","rb"); return -1; fread(contenido ,longitud ,1,f ); return 0; }
Prueba ahora, que en C++ me parece que no se puede asignar un punter void a un puntero no void. Obliga a hacer el cast. ¡Saludos! ami no me salta ningun error pero no me habre ningun archivo ya probe de crear un archivo con ese nombre y camiar el nombre pero no muestra el texto del documento
|
|
|
En línea
|
|
|
|
0xDani
Desconectado
Mensajes: 1.077
|
El programa de do-while que es el crackeador de md5 o el generador de diccionarios? Lo digo porque ya he solucionado lo de que no escribiera en el mio. Es simple, pero se puede hacer mas complejo. #include <stdio.h> int main() { char vars[6]; vars[5]='\n'; FILE * diccionario = fopen("diccionario", "w");for(vars[0]='a'; vars[0]<'z'; vars[0]++) { for(vars[1]='a'; vars[1]<'z'; vars[1]++) { for(vars[2]='a'; vars[2]<'z'; vars[2]++) { for(vars[3]='a';vars[3]<'z'; vars[3]++) { for(vars[4]='a';vars[4]<'z'; vars[4]++) {fprintf(diccionario , "%s", vars );} } } } } return 0; }
Es C, ahora lo subo en C++.
|
|
|
En línea
|
I keep searching for something that I never seem to find, but maybe I won't, because I left it all behind!
I code for $$$ Hago trabajos en C/C++ Contactar por PM
|
|
|
Stakewinner00
|
El programa de do-while que es el crackeador de md5 o el generador de diccionarios? Lo digo porque ya he solucionado lo de que no escribiera en el mio. Es simple, pero se puede hacer mas complejo. #include <stdio.h> int main() { char vars[6]; vars[5]='\n'; FILE * diccionario = fopen("diccionario", "w");for(vars[0]='a'; vars[0]<'z'; vars[0]++) { for(vars[1]='a'; vars[1]<'z'; vars[1]++) { for(vars[2]='a'; vars[2]<'z'; vars[2]++) { for(vars[3]='a';vars[3]<'z'; vars[3]++) { for(vars[4]='a';vars[4]<'z'; vars[4]++) {fprintf(diccionario , "%s", vars );} } } } } return 0; }
Es C, ahora lo subo en C++. el suyo es el de fuerza bruta de momento dowhile va ganando haber si lo superas
|
|
|
En línea
|
|
|
|
do-while
Desconectado
Mensajes: 1.276
¿Habra que sacarla de paseo?
|
¡Buenas!
¿A que te refieres con un crackeador de MD5? ¿A redibir como argumento un hash y generar una cadena que de el mismo hash?
|
|
|
En línea
|
- Doctor, confundo los números y los colores. - Vaya marrón. - ¿Marrón? ¡Por el culo te la hinco!
|
|
|
0xDani
Desconectado
Mensajes: 1.077
|
el suyo es el de fuerza bruta de momento dowhile va ganando haber si lo superas
Ok, pero yo gano puntos o no? Se me ha adelantado por segundos Aqui esta en C++: #include <fstream> int main() { char vars[6]; vars[5]='\n'; ofstream diccionario.open("diccionario", ios::out); for(vars[0]='a'; vars[0]<'z'; vars[0]++) { for(vars[1]='a'; vars[1]<'z'; vars[1]++) { for(vars[2]='a'; vars[2]<'z'; vars[2]++) { for(vars[3]='a';vars[3]<'z'; vars[3]++) { for(vars[4]='a';vars[4]<'z'; vars[4]++) {diccionario.write(vars, 6);} } } } } diccionario.close(); return 0; }
|
|
|
En línea
|
I keep searching for something that I never seem to find, but maybe I won't, because I left it all behind!
I code for $$$ Hago trabajos en C/C++ Contactar por PM
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
[RECOPILACION DE RETOS] VBClassic Por 79137913
Programación Visual Basic
|
79137913
|
5
|
14,458
|
21 Enero 2013, 18:58 pm
por 79137913
|
|
|
Zona de retos Scripting
« 1 2 3 »
Scripting
|
Eleкtro
|
23
|
55,633
|
20 Enero 2014, 19:16 pm
por Eleкtro
|
|
|
Retos de java
« 1 2 »
Java
|
4dr14n31t0r
|
10
|
5,735
|
22 Enero 2016, 16:06 pm
por 0xFer
|
|
|
Retos forenses en español?
Dudas Generales
|
Sapote
|
0
|
2,070
|
22 Mayo 2017, 02:58 am
por Sapote
|
|
|
Retos(1 - 15) (wardGame)
« 1 2 »
Desafíos - Wargames
|
4A45414E
|
14
|
8,174
|
10 Noviembre 2018, 03:16 am
por zonahurbana
|
|