elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.
 
Inicio Ayuda Buscar Ingresar Registrarse
27 Mayo 2012, 10:19  


Tema destacado: Deseas probar algunas mejoras a la interfaz del foro? Prueba cake! acerca de

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

Desconectado Desconectado

Mensajes: 66


Ver Perfil
Re: Retos C/C++
« Respuesta #75 en: 27 Septiembre 2010, 02:37 »

Bueno.. aqui va uno un tanto sencillo.
Citar
Un número perfecto es un número natural que es igual a la suma de sus divisores propios positivos, sin incluirse él mismo. Dicho de otra forma, un número perfecto es aquel que es amigo de sí mismo.

Así, 6 es un número perfecto, porque sus divisores propios son 1, 2 y 3; y 6 = 1 + 2 + 3. Los siguientes números perfectos son 28, 496 y 8128.
fuente: Wikipedia.

Reto #21: Hacer un programa que imprima en pantalla todos los números perfectos hasta un número N dado como entrada.


En línea
[L]ord [R]NA


Desconectado Desconectado

Mensajes: 1.507


El Dictador y Verdugo de H-Sec


Ver Perfil WWW
Re: Retos C/C++
« Respuesta #76 en: 27 Septiembre 2010, 05:23 »

Código
#include <iostream>
int main()
{
int a,b;
std::cin>>a;
for(int i=1;i<=a;i++)
{
b=0;
for(int j=1;j<i;j++)if(i%j==0)b+=j;
if(b==i)std::cout<<b<<std::endl;
}
return 0;
}
 

PsData: En unas horas traigo reto... tengo un sueño que no me deja siquiera pensar.


En línea

[L]ord [R]NA


Desconectado Desconectado

Mensajes: 1.507


El Dictador y Verdugo de H-Sec


Ver Perfil WWW
Re: Retos C/C++
« Respuesta #77 en: 27 Septiembre 2010, 21:05 »

Reto #22: Dada dos fechas, verificar cuantos dias han transcurrido... se debe de tomar en cuenta los años bisiestos.
En línea

Wazzp
Usuario

Desconectado Desconectado

Mensajes: 34


We have seen the fall of the elite...


Ver Perfil
Re: Retos C/C++
« Respuesta #78 en: 29 Septiembre 2010, 00:06 »

Disculpen mi impaciencia pero.. tengo un codigo,que a mi parecer esta bien,pero tiene un error ya que se cuelga y no hace nada.. alguien podria revisarlo? Si lo corrijo creo que solucionaria el reto # 22.. Respondan asi lo posteo,sino,borren este post y busco alguna otra forma de conseguir mi respuesta..

Gracias y Saludos  :)
En línea
[D4N93R]
Wiki

Desconectado Desconectado

Mensajes: 1.647


My software never has bugs. Its just features!


Ver Perfil WWW
Re: Retos C/C++
« Respuesta #79 en: 29 Septiembre 2010, 03:24 »

Postealo a ver, lo vamos revisando y arreglando.

Saludos.
En línea

Wazzp
Usuario

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 »

El codigo que tengo es..

Código
 #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 Desconectado

Mensajes: 1.507


El Dictador y Verdugo de H-Sec


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

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 »

Código
#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 año" << 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 año" << 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 año
   {
       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 Desconectado

Mensajes: 352



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

Código
#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
Colaborador
***
Desconectado Desconectado

Mensajes: 1.894



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

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 »

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] Ir Arriba Respuesta Imprimir 

Ir a:  

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