Tema destacado: Deseas probar algunas mejoras a la interfaz del foro? Prueba cake! acerca de
Autor
|
Tema: Retos C/C++ (Leído 13,290 veces)
|
ace332
Desconectado
Mensajes: 66
|
Bueno.. aqui va uno un tanto sencillo. 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
Mensajes: 1.507
El Dictador y Verdugo de H-Sec
|
#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
Mensajes: 1.507
El Dictador y Verdugo de H-Sec
|
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
Mensajes: 34
We have seen the fall of the elite...
|
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
Mensajes: 1.647
My software never has bugs. Its just features!
|
Postealo a ver, lo vamos revisando y arreglando.
Saludos.
|
|
|
|
|
En línea
|
|
|
|
Wazzp
Usuario
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.507
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 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
|
|
|
|
|
|
|
ghastlyX
|
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
|
|
|
|
|
|