Autor
|
Tema: Retos C/C++ (Leído 55,367 veces)
|
Wazzp
Desconectado
Mensajes: 34
We have seen the fall of the elite...
|
El codigo que tengo es.. #include <iostream> using namespace std; void datos(int &d,int &mcont,int &a,int &D,int &Mcont,int &A,int &t) { cout<<"Ingresa una fecha(DD/MM/AAAA. Debe ser la mas antigua!)"<<endl; cin>>d>>mcont>>a; cout<<"Ingresaste.."<<d<<"/"<<mcont<<"/"<<a<<endl; cout<<"Ingresa una segunda fecha. Debe ser la mas reciente."<<endl; cin>>D>>Mcont>>A; cout<<"Ingresaste.."<<D<<"/"<<Mcont<<"/"<<A<<endl; cout<< "Comparar..? 1=si 2=no-quiero cambiar las fechas 3=salir" <<endl; cin>>t; } void ABis(int a,int A,int m,int M) { if ( ( ( a % 4 == 0 ) && (a % 100 != 0 ) ) || ( (a % 400 ==0))) m=1; else m=2; if ( ( ( A % 4 == 0 ) &&( A % 100 != 0 ) ) || ( (A % 400 ==0) ) ) M=1; else M=2; } void meses(int m,int mb,int Mb,int M,int mcont,int Mcont) { if ((mcont==1)||(mcont==3)||(mcont==5)||(mcont==7)||(mcont==8)||(mcont==10)||(mcont==12)) { mb=31; } else if ((mcont==4)||(mcont==6)||(mcont==9)||(mcont==11)) { mb=30; }; if ((Mcont==1)||(Mcont==3)||(Mcont==5)||(Mcont==7)||(Mcont==8)||(Mcont==10)||(Mcont==12)) { Mb=31; } else if ((Mcont==4)||(Mcont==6)||(Mcont==9)||(Mcont==11)) { Mb=30; }; if ((m==1)&&(mcont==2)) { mb=29; } else if((m==2)&&(mcont==2)) { mb=28; }; } void calculo(int d,int m,int a,int X,int mcont,int mb,int Mb,int mb1,int A,int M,int Mcont,int R,int Y) //Calcularia la cantidad de dias hasta el fin del año { { while (mcont<=12) ABis(a,A,m,M); meses(m,mb,Mb,M,mcont,Mcont); X+=mb; mcont++; }; { while (Mcont>=1) ABis(a,A,m,M); meses(m,mb,Mb,M,mcont,Mcont); Y+=Mb; Mcont--; }; R=(X-Y); cout<<"La respuesta seria: "<<R<<" Dias."<<endl; } int main() { int d=0,a=0,D=0,A=0,t=0; int mb=0;int Mb=0;int mcont=0; int X=0;int Mcont=0; int Y=0;int mb1=0; int R=0;int m=0;int M=0; datos(d,mcont,a,D,Mcont,A,t); switch(t) { case 1: calculo(d,m,a,X,mcont,mb,Mb,mb1,A,M,Mcont,R,Y); return 0; break; case 2: cout<<"Revisa las fechas.."<<endl; calculo(d,m,a,X,mcont,mb,Mb,mb1,A,M,Mcont,R,Y); return 0; break; default: return 0; break; }; }
No entiendo porque no funciona!! El codigo compila sin warnings ni errores..
|
|
|
En línea
|
|
|
|
[L]ord [R]NA
Desconectado
Mensajes: 1.513
El Dictador y Verdugo de H-Sec
|
Termina el plazo de los 3 dias sin respuesta definitiva... Quien pondra el nuevo reto?
|
|
|
En línea
|
|
|
|
PiroskY
Desconectado
Mensajes: 76
пирожки
|
#include <iostream> using namespace std; int main() { short d1,m1,a1,d2,m2,a2,acu=0; cout << "Ingrese la primer fecha con el siguiente formato DD-MM-AAAA" << endl; cout << "Ingrese el dia" << endl; cin >> d1; cout << "Ingrese el mes" << endl; cin >> m1; cout << "Ingrese el anio" << endl; cin >> a1; cout << "Ingrese la segunda fecha con el siguiente formato DD-MM-AAAA" << endl; cout << "Ingrese el dia" << endl; cin >> d2; cout << "Ingrese el mes" << endl; cin >> m2; cout << "Ingrese el anio" << endl; cin >> a2; if (a2-a1 >=1) //dentro de este if voy a hacer la cuenta para los casos en que las dos fechas no pertenezcan al mismo anio { switch (m1) { case 1: acu+=31-d1+334; //Le sumo la cantidad de dias que faltan para que termine el año break; case 2: acu+=28-d1+306; break; case 3: acu+=31-d1+275; break; case 4: acu+=30-d1+245; break; case 5: acu+=31-d1+214; break; case 6: acu+=30-d1+184; break; case 7: acu+=31-d1+153; break; case 8: acu+=31-d1+122; break; case 9: acu+=30-d1+92; break; case 10: acu+=31-d1+61; break; case 11: acu+=30-d1+31; break; case 12: acu+=31-d1; break; } if (a1%4 == 0 && m1 <= 2) //por si el año era biciesto { acu++; } for (int i=a1+1;i<a2;i++) //voy sumando todos los dias de año, hasta un año antes del de la segunda fecha { if (i%4 == 0) { acu+=366; } else { acu+=365; } } switch (m2) //le sumo los dias transcurridos del ultimo año { case 1: acu+=d2; break; case 2: acu+=31+d2; break; case 3: acu+=59+d2; break; case 4: acu+=90+d2; break; case 5: acu+=120+d2; break; case 6: acu+=151+d2; break; case 7: acu+=181+d2; break; case 8: acu+=212+d2; break; case 9: acu+=243+d2; break; case 10: acu+=273+d2; break; case 11: acu+=304+d2; break; case 12: acu+=334+d2; break; } if (a2%4 == 0 && (m2 <= 2 || (m2==2 && d2 == 29))) //por si el ultimo año era biciesto y la fecha era mayor o igual al 29 de febrero { acu++; } } if (a1==a2) { switch (m1) //Calculo cuantos dias pasaron desde que empezo el año hasta la primer fecha { case 1: acu=d1; break; case 2: acu=31+d1; break; case 3: acu=59+d1; break; case 4: acu=90+d1; break; case 5: acu=120+d1; break; case 6: acu=151+d1; break; case 7: acu=181+d1; break; case 8: acu=212+d1; break; case 9: acu=243+d1; break; case 10: acu=273+d1; break; case 11: acu=304+d1; break; case 12: acu=334+d1; break; } switch (m2) //Calculo cuantos dias pasaron desde que empezo el año hasta la segunda fecha, y a ese numero le resto el numero obtenido para la primer fecha { case 1: acu=d2-acu; break; case 2: acu=31+d2-acu; break; case 3: acu=59+d2-acu; break; case 4: acu=90+d2-acu; break; case 5: acu=120+d2-acu; break; case 6: acu=151+d2-acu; break; case 7: acu=181+d2-acu; break; case 8: acu=212+d2-acu; break; case 9: acu=243+d2-acu; break; case 10: acu=273+d2-acu; break; case 11: acu=304+d2-acu; break; case 12: acu=334+d2-acu; break; } if (a2%4 == 0 && (m1 <= 2 || (m1==2 && d1 == 29))) //por si el año es biciesto y la fecha es mayor o igual al 29 de febrero { acu++; } } cout <<"entre el "<<d1<<"/"<<m1<<"/"<<a1<<" y el "<<d2<<"/"<<m2<<"/"<<a2<<" pasaron "<<acu<<" dias."<< endl; return 0; }
no se con que dificultad vienen poniendo los retos, pero ya que nadie tira, pongo este, y si es facil bueno, el que lo haga que ponga otro mas complicado Reto #23: Ingresar dos cadenas e informar si la segunda está contenida o no dentro de la primera.
|
|
|
En línea
|
|
|
|
Komodo
Desconectado
Mensajes: 352
|
#include <iostream> #include <cstring> using namespace std; int main () { char str[99]; char str2[99]; cout << "Introduce la primera cadena: "; fgets(str, 99, stdin); if (str[strlen(str)-1] == '\n'){ str[strlen(str)-1] = '\0'; } cout << "\nIntroduce la segunda cadena: "; fgets(str2, 99, stdin); if (str2[strlen(str2)-1] == '\n'){ str2[strlen(str2)-1] = '\0'; } if(strstr(str,str2)!=NULL){ cout<<"Found match: "<<str2; } else{ cout<<"Error"; } return 0; }
RETO: Crear un programa que haga por fuerzabruta una comprobación de una posible pass, la longitud se ha de determinar en el transcurso del programa.
|
|
|
En línea
|
|
|
|
ghastlyX
Ex-Staff
Desconectado
Mensajes: 1.900
|
Si no recuerdo mal, la función strstr realiza la comprovación a lo bestia, es decir, si tenemos una string de n carácteres y queremos buscar en ella otra de m, para cada carácter de la primera mira si los m - 1 siguientes coinciden, quedando así un coste de O(nm).
Por si a alguien le interesa, existen algoritmos más eficientes para realizar esto, que consiguen costes de O(n + m), es decir, lineales sobre la longitud de las strings, como por ejemplo Knuth-Morris-Pratt.
|
|
|
En línea
|
|
|
|
Komodo
Desconectado
Mensajes: 352
|
Bueno siempre me ha servido para estas pequeñas aplicaciones strstr tampoco creo que sea malo usar strstr, que hayan métodos mejores, pues sseguro..
|
|
|
En línea
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
Retos .Net
« 1 2 3 »
Ejercicios
|
[D4N93R]
|
20
|
20,014
|
6 Diciembre 2010, 03:26 am
por final_frontier
|
|
|
Concursos y retos
Programación General
|
lnvisible
|
0
|
2,298
|
12 Diciembre 2010, 19:44 pm
por lnvisible
|
|
|
cuando consigo nuevos retos?
« 1 2 »
WarZone
|
Tyrz
|
11
|
6,002
|
15 Junio 2011, 23:11 pm
por [-Franko-]
|
|
|
Desarrollo de Retos Informaticos
Desarrollo Web
|
Sinedra
|
0
|
3,236
|
23 Febrero 2011, 19:23 pm
por Sinedra
|
|
|
Retos C/C++
Programación C/C++
|
N0body
|
5
|
10,961
|
9 Mayo 2011, 09:54 am
por ghastlyX
|
|