| 
	
		|  Autor | Tema: Retos C/C++  (Leído 60,585 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 complicadoReto #23: Ingresar dos cadenas e informar si la segunda está contenida o no dentro de la primera. |  
						| 
								|  |  
								|  |  En línea | 
 
 |  |  |  | 
			| 
					
						| Komodo 
								 
								
								 Desconectado 
								Mensajes: 352
								
								   | 
 
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.#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;} 
 |  
						| 
								|  |  
								|  |  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 | 21,830 |  6 Diciembre 2010, 03:26 am por final_frontier
 |  
						|   |   | Concursos y retos Programación General
 | lnvisible | 0 | 2,670 |  12 Diciembre 2010, 19:44 pm por lnvisible
 |  
						|   |   | cuando consigo nuevos retos?
							« 1 2 » WarZone
 | Tyrz | 11 | 7,015 |  15 Junio 2011, 23:11 pm por [-Franko-]
 |  
						|   |   | Desarrollo de Retos Informaticos Desarrollo Web
 | Sinedra | 0 | 3,491 |  23 Febrero 2011, 19:23 pm por Sinedra
 |  
						|   |   | Retos C/C++ Programación C/C++
 | N0body | 5 | 11,711 |  9 Mayo 2011, 09:54 am por ghastlyX
 |    |