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


 


Tema destacado: Como proteger una cartera - billetera de Bitcoin


+  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 38,378 veces)
[L]ord [R]NA


Desconectado Desconectado

Mensajes: 1.513

El Dictador y Verdugo de H-Sec


Ver Perfil WWW
Retos C/C++
« en: 19 Agosto 2010, 03:18 »

Bueno, esta zona esta un poco muerta por lo tanto no cuesta nada tratar de revivirla.

Tomando las mismas reglas que la del pasado post de retos de Python que se hizo en esta zona haremos uno en C/C++.

Reglas:

1) Se empezara con un ejercicio, quien lo resuelva propone otro ejercicio y asi seguimos.
2) Los ejercicios tendran un tiempo de vida de 3 dias, si en exactamente 3 dias alguien no publica una solucion alguien podra proponer otro ejercicio.
3) No publicar para decir cosas que no tengan que ver con la solucion al reto o para postear un nuevo reto.
4) Numerar los retos (Ej. Reto#1)


Bueno ya que yo postee, seria de mala educacion dejar que otro ponga el reto.



Reto#1: Realizar un programa que reciba un numero como argumento y diga si es primo o no.

PData: No estoy estudiando C/C++ actualmente en la universidad... (Para los que diran que es una tarea.)


En línea

Og.


Desconectado Desconectado

Mensajes: 822


Aprendiendo de la vida


Ver Perfil
Re: Retos C/C++
« Respuesta #1 en: 19 Agosto 2010, 03:28 »

Se me paso lo de la entrada por argumento XD
Editado...

Código
  1. #include <iostream>
  2.  
  3. using std::cout;
  4. using std::endl;
  5.  
  6. int getNum(char* text)
  7. {
  8.    int a=0, cont=0;
  9.    while(text[cont])
  10.    {
  11.        a *= 10;
  12.        a += text[cont++] - '0';
  13.    }
  14.    return a;
  15. }
  16.  
  17. int main(int argc, char** argv)
  18. {
  19.    int num;
  20.    num = getNum(argv[1]);
  21.    for(int i=2;i<=num/2;i++)
  22.        if(!(num%i))
  23.        {
  24.            cout << "No es primo" << endl;
  25.            return 0;
  26.        }
  27.    cout << "Es primo" << endl;
  28.    return 0;
  29. }
  30.  
Reto #2
Realiza un programa que dado un numero n te imprima todas las posibles permutaciones del conjunto 1 a n ordenadas de menor a mayor.

Ejemplo 1:

Entrada
Código:
3

Salida
Código:
1 2 3
1 3 2
2 1 3
2 3 1
3 1 2
3 2 1

Ejemplo 2:

Entrada
Código:
4

Salida
Código:
1 2 3 4
1 2 4 3
1 3 2 4
1 3 4 2
1 4 2 3
1 4 3 2
2 1 3 4
2 1 4 3
2 3 1 4
2 3 4 1
2 4 1 3
2 4 3 1
3 1 2 4
3 1 4 2
3 2 1 4
3 2 4 1
3 4 1 2
3 4 2 1
4 1 2 3
4 1 3 2
4 2 1 3
4 2 3 1
4 3 1 2
4 3 2 1


« Última modificación: 19 Agosto 2010, 04:53 por Novlucker » En línea

|-
Leyer


Desconectado Desconectado

Mensajes: 782


leyer@elhacker.net


Ver Perfil WWW
Re: Retos C/C++
« Respuesta #2 en: 19 Agosto 2010, 05:31 »

Código
  1. #include <iostream>
  2. #include <string>
  3. #include <sstream>
  4. using namespace std;
  5. void String(string a,string b);
  6. int main(int argc, char *argv[]) {
  7.    string n="";
  8.    ostringstream stm;
  9.    int value=0;cin>>value;
  10.        for(int index=1;index<=value;index++){
  11.        stm<<index;
  12.            n=stm.str();
  13.        }String("",n);
  14.    return 0;
  15. }
  16. void String(string a, string b) {
  17.    if(b.length() <= 1)
  18.    cout<<a + b+"\n";
  19.    else
  20.    for (int i = 0; i < b.length(); i++) {
  21.        string n = b.substr(0, i) + b.substr(i + 1);
  22.        String(a + b.at(i), n);
  23.      }
  24.  }
  25.  

Reto #3

No me critiquen por lo fácil jaja XDDDD

Generar esta matriz para un entero N dado:

si se ingresa 4

1 0 0 0 0
1 2 0 0 0
1 2 3 0 0
1 2 3 4 0
« Última modificación: 19 Agosto 2010, 05:39 por LEYER » En línea

Og.


Desconectado Desconectado

Mensajes: 822


Aprendiendo de la vida


Ver Perfil
Re: Retos C/C++
« Respuesta #3 en: 19 Agosto 2010, 06:09 »

Código
  1. #include <iostream>
  2.  
  3. using std::cin;
  4. using std::cout;
  5. using std::endl;
  6.  
  7. int main(void)
  8. {
  9.    int N;
  10.    cin >> N;
  11.    for(int i=0;i<N;i++)
  12.    {
  13.        for(int g=0; g<=i; g++)
  14.            cout << g+1 << " ";
  15.        for(int g=i; g<N; g++)
  16.            cout << 0 << " ";
  17.        cout << endl;
  18.    }
  19.    return 0;
  20. }
  21.  

Reto #4

Dadas las denominaciones de monedas que tienen disponibles y una cantidad de dinero que tienen que dar de cambio con esas denominaciones de monedas (supongan que tienen una infinidad de monedas de cada denominacion y que siempre tienen monedas de $1) escriban un programa que regrese la cantidad MINIMA de monedas necesarias para regresar ese cambio, por ejemplo:

{$1, $2, $5} y cambio de $9
la cantidad minima de monedas es 3 ($5 + $2 + $2 = $9)

{$1, $5, $7} y cambio de $10
la cantidad minima de monedas es 2 ($5 + $5 = $10)

por cierto, te puedo pedir el cambio de $3000 xD

una ves que hagan este problema, muchos se darán cuenta de lo hermosa que es la resolución que le da nuestro cerebro a las cosas.
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 #4 en: 19 Agosto 2010, 07:16 »

Código
  1. #include <iostream>
  2. #include <cstdlib>
  3.  
  4. using std::cout;
  5. using std::endl;
  6.  
  7. struct cambio
  8. {
  9. int uno;
  10. int cinco;
  11. int diez;
  12. int veinte;
  13. int cincuenta;
  14. int cien;
  15. int total;
  16. };
  17.  
  18.  
  19. int main(int argc,char *argv[])
  20. {
  21. int valor = atoi(argv[1]);
  22. if (valor!=0)
  23. {
  24. cambio *monedas = new cambio;
  25.  
  26. while(valor>=100)
  27. {
  28. monedas->cien++;
  29. monedas->total++;
  30. valor -=100;
  31. }
  32.  
  33. while(valor>=50)
  34. {
  35. monedas->cincuenta++;
  36. monedas->total++;
  37. valor -=50;
  38. }
  39.  
  40. while(valor>=20)
  41. {
  42. monedas->veinte++;
  43. monedas->total++;
  44. valor -=20;
  45. }
  46.  
  47. while(valor>=10)
  48. {
  49. monedas->diez++;
  50. monedas->total++;
  51. valor -=10;
  52. }
  53.  
  54. while(valor>=5)
  55. {
  56. monedas->cinco++;
  57. monedas->total++;
  58. valor -=5;
  59. }
  60.  
  61. while(valor>=1)
  62. {
  63. monedas->uno++;
  64. monedas->total++;
  65. valor -=1;
  66. }
  67.  
  68. cout<<"Total de Monedas: "<<monedas->total<<endl<<endl;
  69. cout<<"Valores: \n"<<"Cien: "<<monedas->cien<<endl;
  70. cout<<"Cincuenta: "<<monedas->cincuenta<<endl;
  71. cout<<"Veinte: "<<monedas->veinte<<endl;
  72. cout<<"Diez: "<<monedas->diez<<endl;
  73. cout<<"Cinco: "<<monedas->cinco<<endl;
  74. cout<<"Uno: "<<monedas->uno<<endl;
  75.  
  76. }
  77. else
  78. {
  79. cout<<"Valor no valido"<<endl;
  80.  
  81. }
  82. return 0;
  83. }
  84.  
  85.  

Reto#5 Dado un numero, encontrar todos los numeros perfectos inferiores a este.
« Última modificación: 19 Agosto 2010, 07:25 por Lord R.N.A. » En línea

leogtz
. . .. ... ..... ........ ............. .....................
Colaborador
***
Desconectado Desconectado

Mensajes: 3.069


/^$/


Ver Perfil WWW
Re: Retos C/C++
« Respuesta #5 en: 19 Agosto 2010, 07:44 »

Código
  1. #include <iostream>
  2. #include <cstdlib>
  3. using std::cin;
  4. using std::cout;
  5. using std::endl;
  6. bool isperfect(const unsigned int& n)
  7. {
  8.    unsigned int suma = 0;
  9.    for(register unsigned int i = 1; i < n; i++)
  10.    if(!(n % i))
  11.    suma += i;
  12.    return(suma == n);
  13. }
  14. int main(int argc, char **argv)
  15. {
  16.    if(argc != 2)
  17.        exit(EXIT_FAILURE);
  18.    for(register unsigned int i = 1; i <= atoi(*(argv + 1)); i++)
  19.    if(isperfect(i) && (i < atoi(*(argv + 1))))
  20.    cout << i << endl;
  21.    return 0;
  22. }

Reto:

Recorrer una matriz bidimensional con un puntero, con recorrer me refiero a mostrar cada uno de sus valores, no me refiero a indexación, sino a mostrar los valores usando aritmética de punteros.
« Última modificación: 19 Agosto 2010, 07:49 por Leo Gutiérrez. » En línea

Código
  1. (( 1 / 0 )) &> /dev/null || {
  2. echo -e "stderrrrrrrrrrrrrrrrrrr";
  3. }
  4.  
http://leonardogtzr.wordpress.com/
leogutierrezramirez@gmail.com
Og.


Desconectado Desconectado

Mensajes: 822


Aprendiendo de la vida


Ver Perfil
Re: Retos C/C++
« Respuesta #6 en: 19 Agosto 2010, 07:54 »

no han resuelto el reto #4 XD

por ejemplo yo te digo que las monedas que puedes dar son $1, $5 y $7, haora dime cual es la minima cantidad de monedas para completar la cantidad de 25$

Ejemplo1:

Entrada
Código:
3
1 5 7
25

Salida
Código:
5

Ejemplo2:

Entrada
Código:
1
1
25

Salida
Código:
25


el primer entero es el numero de denominaciones
seguidas de n enteros que son los valores de las denominaciones
y después el precio.

devuelves simplemente el mínimo de monedas para lograr el precio.

PD: es mas complejo de lo que parece, son esos problemas en los que te tienes que estar un par de horas pensando...
« Última modificación: 19 Agosto 2010, 08:06 por Og. » En línea

|-
leogtz
. . .. ... ..... ........ ............. .....................
Colaborador
***
Desconectado Desconectado

Mensajes: 3.069


/^$/


Ver Perfil WWW
Re: Retos C/C++
« Respuesta #7 en: 19 Agosto 2010, 08:11 »


PD: es mas complejo de lo que parece, son esos problemas en los que te tienes que estar un par de horas pensando...

Sí, jaja, es por eso que aún no respondemos :p
En línea

Código
  1. (( 1 / 0 )) &> /dev/null || {
  2. echo -e "stderrrrrrrrrrrrrrrrrrr";
  3. }
  4.  
http://leonardogtzr.wordpress.com/
leogutierrezramirez@gmail.com
[L]ord [R]NA


Desconectado Desconectado

Mensajes: 1.513

El Dictador y Verdugo de H-Sec


Ver Perfil WWW
Re: Retos C/C++
« Respuesta #8 en: 19 Agosto 2010, 08:16 »

@Og.:Ni idea de que quieres en realidad, querias ver la cantidad minima de monedas para dar cambio y eso es que realiza el programa... ahora creo que estas re-planteando el problema variandolo.
En línea

Og.


Desconectado Desconectado

Mensajes: 822


Aprendiendo de la vida


Ver Perfil
Re: Retos C/C++
« Respuesta #9 en: 19 Agosto 2010, 08:22 »

@Og.:Ni idea de que quieres en realidad, querias ver la cantidad minima de monedas para dar cambio y eso es que realiza el programa... ahora creo que estas re-planteando el problema variandolo.
Tal ves me di a malentender. En si no seria un reto si se usara el sistema de monedas que usamos cotidianamente, por que simplemente vas quitando la mayor denominación hasta que no puedas mas y empezar con la siguiente y asi sucesivamente, por eso lo del cambio de denominaciones.

limitare un poco el problema, supondríamos que solo existen tres tipos de moneda:
un peso, 5 pesos y 7 pesos nada mas.

ahora has el mismo problema y veras por que empieza a agarrar complejidad XD

el problema sera solo saber cual es el mínimo de monedas para llegar a un numero.



Bueno, con el de Leo:
Código
  1. #include <iostream>
  2.  
  3. using namespace std;
  4.  
  5. int main(void)
  6. {
  7.    int mat[5][5];
  8.    for(int i=0; i<5; i++)
  9.        for(int g=0; g<5;g++)
  10.            mat[i][g] = i*g;
  11.    int* a = mat[0];
  12.    for(int i=0;i<25;i++)
  13.    {
  14.        if(!(i%5))
  15.            cout << endl;
  16.        cout << *a++ << " ";
  17.    }
  18. }

te refieres a algo asi?
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 13,376 Último mensaje 6 Diciembre 2010, 03:26
por final_frontier
Concursos y retos
Programación General
lnvisible 0 1,247 Último mensaje 12 Diciembre 2010, 19:44
por lnvisible
cuando consigo nuevos retos? « 1 2 »
WarZone
Tyrz 11 3,732 Último mensaje 15 Junio 2011, 23:11
por [-Franko-]
Desarrollo de Retos Informaticos
Desarrollo Web
Sinedra 0 2,231 Último mensaje 23 Febrero 2011, 19:23
por Sinedra
Retos C/C++
Programación C/C++
N0body 5 8,814 Último mensaje 9 Mayo 2011, 09:54
por ghastlyX
Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines