elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Usando Git para manipular el directorio de trabajo, el índice y commits (segunda parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  Ejercicios
| | | |-+  Retos C/C++
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: 1 2 3 4 5 6 7 8 [9] Ir Abajo Respuesta Imprimir
Autor Tema: Retos C/C++  (Leído 52,734 veces)
Wazzp

Desconectado Desconectado

Mensajes: 34


We have seen the fall of the elite...


Ver Perfil
Re: Retos C/C++
« Respuesta #80 en: 29 Septiembre 2010, 21:05 pm »

El codigo que tengo es..

Código
  1. #include <iostream>
  2.  
  3. using namespace std;
  4.    void datos(int &d,int &mcont,int &a,int &D,int &Mcont,int &A,int &t)
  5.    {
  6.    cout<<"Ingresa una fecha(DD/MM/AAAA. Debe ser la mas antigua!)"<<endl;
  7.    cin>>d>>mcont>>a;
  8.    cout<<"Ingresaste.."<<d<<"/"<<mcont<<"/"<<a<<endl;
  9.  
  10.    cout<<"Ingresa una segunda fecha. Debe ser la mas reciente."<<endl;
  11.    cin>>D>>Mcont>>A;
  12.    cout<<"Ingresaste.."<<D<<"/"<<Mcont<<"/"<<A<<endl;
  13.    cout<< "Comparar..? 1=si 2=no-quiero cambiar las fechas 3=salir"
  14.   <<endl;
  15.   cin>>t;
  16.    }
  17.  
  18.    void ABis(int a,int A,int m,int M)
  19.    {
  20.        if ( ( ( a % 4 == 0 ) && (a % 100 != 0 ) ) || ( (a % 400 ==0)))
  21.  
  22.            m=1;
  23.             else
  24.                m=2;
  25.  
  26.       if ( ( ( A % 4 == 0 ) &&( A % 100 != 0 ) ) || ( (A % 400 ==0) ) )
  27.  
  28.           M=1;
  29.            else
  30.                M=2;
  31.    }
  32.  
  33.    void meses(int m,int mb,int Mb,int M,int mcont,int Mcont)
  34.    {
  35.        if ((mcont==1)||(mcont==3)||(mcont==5)||(mcont==7)||(mcont==8)||(mcont==10)||(mcont==12))
  36.        {
  37.             mb=31;
  38.        }
  39.  
  40.            else if ((mcont==4)||(mcont==6)||(mcont==9)||(mcont==11))
  41.            {
  42.                mb=30;
  43.  
  44.        };
  45.    if ((Mcont==1)||(Mcont==3)||(Mcont==5)||(Mcont==7)||(Mcont==8)||(Mcont==10)||(Mcont==12))
  46.        {
  47.            Mb=31;
  48.        }
  49.        else if ((Mcont==4)||(Mcont==6)||(Mcont==9)||(Mcont==11))
  50.        {
  51.            Mb=30;
  52.        };
  53.    if ((m==1)&&(mcont==2))
  54.    {
  55.        mb=29;
  56.        }
  57.        else if((m==2)&&(mcont==2))
  58.        {
  59.            mb=28;
  60.        };
  61.  
  62.    }
  63.  
  64.    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)
  65.    //Calcularia la cantidad de dias hasta el fin del año
  66.    {
  67.       {
  68.         while (mcont<=12)
  69.         ABis(a,A,m,M);
  70.       meses(m,mb,Mb,M,mcont,Mcont);
  71.     X+=mb;
  72.     mcont++;
  73.     };
  74.     {
  75.          while (Mcont>=1)
  76.          ABis(a,A,m,M);
  77.       meses(m,mb,Mb,M,mcont,Mcont);
  78.     Y+=Mb;
  79.     Mcont--;
  80.     };
  81.     R=(X-Y);
  82.     cout<<"La respuesta seria: "<<R<<" Dias."<<endl;
  83.     }
  84.  
  85.   int main()
  86. {
  87.   int d=0,a=0,D=0,A=0,t=0;
  88.   int mb=0;int Mb=0;int mcont=0;
  89.   int X=0;int Mcont=0;
  90.   int Y=0;int mb1=0;
  91.   int R=0;int m=0;int M=0;
  92.   datos(d,mcont,a,D,Mcont,A,t);
  93.  
  94.  
  95.       switch(t)
  96.       {
  97.            case 1:
  98.            calculo(d,m,a,X,mcont,mb,Mb,mb1,A,M,Mcont,R,Y);
  99.            return 0;
  100.            break;
  101.  
  102.            case 2:
  103.            cout<<"Revisa las fechas.."<<endl;
  104.            calculo(d,m,a,X,mcont,mb,Mb,mb1,A,M,Mcont,R,Y);
  105.            return 0;
  106.            break;
  107.  
  108.            default:
  109.            return 0;
  110.            break;
  111.       };
  112.    }
  113.  

No entiendo porque no funciona!! El codigo compila sin warnings ni errores..


En línea

[L]ord [R]NA


Desconectado Desconectado

Mensajes: 1.513

El Dictador y Verdugo de H-Sec


Ver Perfil WWW
Re: Retos C/C++
« Respuesta #81 en: 1 Octubre 2010, 04:16 am »

Termina el plazo de los 3 dias sin respuesta definitiva... Quien pondra el nuevo reto?


En línea

PiroskY

Desconectado Desconectado

Mensajes: 76


пирожки


Ver Perfil
Re: Retos C/C++
« Respuesta #82 en: 2 Octubre 2010, 21:14 pm »

Código
  1. #include <iostream>
  2. using namespace std;
  3.  
  4. int main()
  5. {
  6.    short d1,m1,a1,d2,m2,a2,acu=0;
  7.    cout << "Ingrese la primer fecha con el siguiente formato DD-MM-AAAA" << endl;
  8.    cout << "Ingrese el dia" << endl;
  9.    cin >> d1;
  10.    cout << "Ingrese el mes" << endl;
  11.    cin >> m1;
  12.    cout << "Ingrese el año" << endl;
  13.    cin >> a1;
  14.    cout << "Ingrese la segunda fecha con el siguiente formato DD-MM-AAAA" << endl;
  15.    cout << "Ingrese el dia" << endl;
  16.    cin >> d2;
  17.    cout << "Ingrese el mes" << endl;
  18.    cin >> m2;
  19.    cout << "Ingrese el año" << endl;
  20.    cin >> a2;
  21.    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 año
  22.    {
  23.        switch (m1)
  24.        {
  25.            case 1:
  26.            acu+=31-d1+334; //Le sumo la cantidad de dias que faltan para que termine el año
  27.            break;
  28.            case 2:
  29.            acu+=28-d1+306;
  30.            break;
  31.            case 3:
  32.            acu+=31-d1+275;
  33.            break;
  34.            case 4:
  35.            acu+=30-d1+245;
  36.            break;
  37.            case 5:
  38.            acu+=31-d1+214;
  39.            break;
  40.            case 6:
  41.            acu+=30-d1+184;
  42.            break;
  43.            case 7:
  44.            acu+=31-d1+153;
  45.            break;
  46.            case 8:
  47.            acu+=31-d1+122;
  48.            break;
  49.            case 9:
  50.            acu+=30-d1+92;
  51.            break;
  52.            case 10:
  53.            acu+=31-d1+61;
  54.            break;
  55.            case 11:
  56.            acu+=30-d1+31;
  57.            break;
  58.            case 12:
  59.            acu+=31-d1;
  60.            break;
  61.        }
  62.        if (a1%4 == 0 && m1 <= 2) //por si el año era biciesto
  63.        {
  64.            acu++;
  65.        }
  66.        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
  67.        {
  68.            if (i%4 == 0)
  69.            {
  70.                acu+=366;
  71.            }
  72.            else
  73.            {
  74.                acu+=365;
  75.            }
  76.        }
  77.        switch (m2) //le sumo los dias transcurridos del ultimo año
  78.        {
  79.            case 1:
  80.            acu+=d2;
  81.            break;
  82.            case 2:
  83.            acu+=31+d2;
  84.            break;
  85.            case 3:
  86.            acu+=59+d2;
  87.            break;
  88.            case 4:
  89.            acu+=90+d2;
  90.            break;
  91.            case 5:
  92.            acu+=120+d2;
  93.            break;
  94.            case 6:
  95.            acu+=151+d2;
  96.            break;
  97.            case 7:
  98.            acu+=181+d2;
  99.            break;
  100.            case 8:
  101.            acu+=212+d2;
  102.            break;
  103.            case 9:
  104.            acu+=243+d2;
  105.            break;
  106.            case 10:
  107.            acu+=273+d2;
  108.            break;
  109.            case 11:
  110.            acu+=304+d2;
  111.            break;
  112.            case 12:
  113.            acu+=334+d2;
  114.            break;
  115.        }
  116.         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
  117.        {
  118.            acu++;
  119.        }
  120.    }
  121.    if (a1==a2)
  122.    {
  123.        switch (m1) //Calculo cuantos dias pasaron desde que empezo el año hasta la primer fecha
  124.        {
  125.            case 1:
  126.            acu=d1;
  127.            break;
  128.            case 2:
  129.            acu=31+d1;
  130.            break;
  131.            case 3:
  132.            acu=59+d1;
  133.            break;
  134.            case 4:
  135.            acu=90+d1;
  136.            break;
  137.            case 5:
  138.            acu=120+d1;
  139.            break;
  140.            case 6:
  141.            acu=151+d1;
  142.            break;
  143.            case 7:
  144.            acu=181+d1;
  145.            break;
  146.            case 8:
  147.            acu=212+d1;
  148.            break;
  149.            case 9:
  150.            acu=243+d1;
  151.            break;
  152.            case 10:
  153.            acu=273+d1;
  154.            break;
  155.            case 11:
  156.            acu=304+d1;
  157.            break;
  158.            case 12:
  159.            acu=334+d1;
  160.            break;
  161.        }
  162.        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
  163.        {
  164.            case 1:
  165.            acu=d2-acu;
  166.            break;
  167.            case 2:
  168.            acu=31+d2-acu;
  169.            break;
  170.            case 3:
  171.            acu=59+d2-acu;
  172.            break;
  173.            case 4:
  174.            acu=90+d2-acu;
  175.            break;
  176.            case 5:
  177.            acu=120+d2-acu;
  178.            break;
  179.            case 6:
  180.            acu=151+d2-acu;
  181.            break;
  182.            case 7:
  183.            acu=181+d2-acu;
  184.            break;
  185.            case 8:
  186.            acu=212+d2-acu;
  187.            break;
  188.            case 9:
  189.            acu=243+d2-acu;
  190.            break;
  191.            case 10:
  192.            acu=273+d2-acu;
  193.            break;
  194.            case 11:
  195.            acu=304+d2-acu;
  196.            break;
  197.            case 12:
  198.            acu=334+d2-acu;
  199.            break;
  200.        }
  201.        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
  202.        {
  203.            acu++;
  204.        }
  205.    }
  206.    cout <<"entre el "<<d1<<"/"<<m1<<"/"<<a1<<" y el "<<d2<<"/"<<m2<<"/"<<a2<<" pasaron "<<acu<<" dias."<< endl;
  207. return 0;
  208. }

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 Desconectado

Mensajes: 352



Ver Perfil
Re: Retos C/C++
« Respuesta #83 en: 3 Octubre 2010, 16:37 pm »

Código
  1. #include <iostream>
  2. #include <cstring>
  3.  
  4. using namespace std;
  5. int main ()
  6. {
  7.  char str[99];
  8.  char str2[99];
  9.  cout << "Introduce la primera cadena: ";
  10.  fgets(str, 99, stdin);
  11.  if (str[strlen(str)-1] == '\n'){
  12. str[strlen(str)-1] = '\0';
  13.  }
  14.  cout << "\nIntroduce la segunda cadena: ";
  15.  fgets(str2, 99, stdin);
  16.  if (str2[strlen(str2)-1] == '\n'){
  17. str2[strlen(str2)-1] = '\0';
  18.  }
  19.  if(strstr(str,str2)!=NULL){
  20.      cout<<"Found match: "<<str2;
  21.  }
  22.  else{
  23.   cout<<"Error";
  24.  }
  25.  
  26.  return 0;
  27. }
  28.  

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 Desconectado

Mensajes: 1.900



Ver Perfil
Re: Retos C/C++
« Respuesta #84 en: 3 Octubre 2010, 16:52 pm »

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 Desconectado

Mensajes: 352



Ver Perfil
Re: Retos C/C++
« Respuesta #85 en: 3 Octubre 2010, 16:57 pm »

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


Páginas: 1 2 3 4 5 6 7 8 [9] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Retos .Net « 1 2 3 »
Ejercicios
[D4N93R] 20 19,165 Último mensaje 6 Diciembre 2010, 03:26 am
por final_frontier
Concursos y retos
Programación General
lnvisible 0 2,104 Último mensaje 12 Diciembre 2010, 19:44 pm
por lnvisible
cuando consigo nuevos retos? « 1 2 »
WarZone
Tyrz 11 5,550 Último mensaje 15 Junio 2011, 23:11 pm
por [-Franko-]
Desarrollo de Retos Informaticos
Desarrollo Web
Sinedra 0 3,075 Último mensaje 23 Febrero 2011, 19:23 pm
por Sinedra
Retos C/C++
Programación C/C++
N0body 5 10,585 Último mensaje 9 Mayo 2011, 09:54 am
por ghastlyX
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines