Autor
|
Tema: Retos C/C++ (Leído 55,214 veces)
|
[L]ord [R]NA
Desconectado
Mensajes: 1.513
El Dictador y Verdugo de H-Sec
|
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
Mensajes: 822
Aprendiendo de la vida
|
Se me paso lo de la entrada por argumento XD Editado... #include <iostream> using std::cout; using std::endl; int getNum(char* text) { int a=0, cont=0; while(text[cont]) { a *= 10; a += text[cont++] - '0'; } return a; } int main(int argc, char** argv) { int num; num = getNum(argv[1]); for(int i=2;i<=num/2;i++) if(!(num%i)) { cout << "No es primo" << endl; return 0; } cout << "Es primo" << endl; return 0; }
Reto #2Realiza 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 Salida 1 2 3 1 3 2 2 1 3 2 3 1 3 1 2 3 2 1 Ejemplo 2: Entrada Salida 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 am por Novlucker »
|
En línea
|
|-
|
|
|
Leyer
Desconectado
Mensajes: 786
leyer@elhacker.net
|
#include <iostream> #include <string> #include <sstream> using namespace std; void String(string a,string b); int main(int argc, char *argv[]) { string n=""; ostringstream stm; int value=0;cin>>value; for(int index=1;index<=value;index++){ stm<<index; n=stm.str(); }String("",n); return 0; } void String(string a, string b) { if(b.length() <= 1) cout<<a + b+"\n"; else for (int i = 0; i < b.length(); i++) { string n = b.substr(0, i) + b.substr(i + 1); String(a + b.at(i), n); } }
Reto #3No 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 am por LEYER »
|
En línea
|
|
|
|
Og.
Desconectado
Mensajes: 822
Aprendiendo de la vida
|
#include <iostream> using std::cin; using std::cout; using std::endl; int main(void) { int N; cin >> N; for(int i=0;i<N;i++) { for(int g=0; g<=i; g++) cout << g+1 << " "; for(int g=i; g<N; g++) cout << 0 << " "; cout << endl; } return 0; }
Reto #4Dadas 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
Mensajes: 1.513
El Dictador y Verdugo de H-Sec
|
#include <iostream> #include <cstdlib> using std::cout; using std::endl; struct cambio { int uno; int cinco; int diez; int veinte; int cincuenta; int cien; int total; }; int main(int argc,char *argv[]) { int valor = atoi(argv[1]); if (valor!=0) { cambio *monedas = new cambio; while(valor>=100) { monedas->cien++; monedas->total++; valor -=100; } while(valor>=50) { monedas->cincuenta++; monedas->total++; valor -=50; } while(valor>=20) { monedas->veinte++; monedas->total++; valor -=20; } while(valor>=10) { monedas->diez++; monedas->total++; valor -=10; } while(valor>=5) { monedas->cinco++; monedas->total++; valor -=5; } while(valor>=1) { monedas->uno++; monedas->total++; valor -=1; } cout<<"Total de Monedas: "<<monedas->total<<endl<<endl; cout<<"Valores: \n"<<"Cien: "<<monedas->cien<<endl; cout<<"Cincuenta: "<<monedas->cincuenta<<endl; cout<<"Veinte: "<<monedas->veinte<<endl; cout<<"Diez: "<<monedas->diez<<endl; cout<<"Cinco: "<<monedas->cinco<<endl; cout<<"Uno: "<<monedas->uno<<endl; } else { cout<<"Valor no valido"<<endl; } return 0; }
Reto#5 Dado un numero, encontrar todos los numeros perfectos inferiores a este.
|
|
« Última modificación: 19 Agosto 2010, 07:25 am por Lord R.N.A. »
|
En línea
|
|
|
|
leogtz
. . .. ... ..... ........ ............. .....................
Colaborador
Desconectado
Mensajes: 3.069
/^$/
|
#include <iostream> #include <cstdlib> using std::cin; using std::cout; using std::endl; bool isperfect(const unsigned int& n) { unsigned int suma = 0; for(register unsigned int i = 1; i < n; i++) if(!(n % i)) suma += i; return(suma == n); } int main(int argc, char **argv) { if(argc != 2) exit(EXIT_FAILURE); for(register unsigned int i = 1; i <= atoi(*(argv + 1)); i++) if(isperfect(i) && (i < atoi(*(argv + 1)))) cout << i << endl; return 0; }
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 am por Leo Gutiérrez. »
|
En línea
|
|
|
|
Og.
Desconectado
Mensajes: 822
Aprendiendo de la vida
|
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 Salida Ejemplo2: Entrada Salida 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 am por Og. »
|
En línea
|
|-
|
|
|
leogtz
. . .. ... ..... ........ ............. .....................
Colaborador
Desconectado
Mensajes: 3.069
/^$/
|
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
|
|
|
|
[L]ord [R]NA
Desconectado
Mensajes: 1.513
El Dictador y Verdugo de H-Sec
|
@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
Mensajes: 822
Aprendiendo de la vida
|
@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: #include <iostream> using namespace std; int main(void) { int mat[5][5]; for(int i=0; i<5; i++) for(int g=0; g<5;g++) mat[i][g] = i*g; int* a = mat[0]; for(int i=0;i<25;i++) { if(!(i%5)) cout << endl; cout << *a++ << " "; } }
te refieres a algo asi?
|
|
|
En línea
|
|-
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
Retos .Net
« 1 2 3 »
Ejercicios
|
[D4N93R]
|
20
|
19,958
|
6 Diciembre 2010, 03:26 am
por final_frontier
|
|
|
Concursos y retos
Programación General
|
lnvisible
|
0
|
2,293
|
12 Diciembre 2010, 19:44 pm
por lnvisible
|
|
|
cuando consigo nuevos retos?
« 1 2 »
WarZone
|
Tyrz
|
11
|
5,966
|
15 Junio 2011, 23:11 pm
por [-Franko-]
|
|
|
Desarrollo de Retos Informaticos
Desarrollo Web
|
Sinedra
|
0
|
3,231
|
23 Febrero 2011, 19:23 pm
por Sinedra
|
|
|
Retos C/C++
Programación C/C++
|
N0body
|
5
|
10,944
|
9 Mayo 2011, 09:54 am
por ghastlyX
|
|