31
Retos no oficiales / Re:[Reto en C] Programa que calcule la potencia de un numero
« en: Agosto 08, 2013, 12:27:52 pm »
xD y te quedas mas ancho que largo
Salu2 ^_^
Salu2 ^_^
Esta sección te permite ver todos los posts escritos por este usuario. Ten en cuenta que sólo puedes ver los posts escritos en zonas a las que tienes acceso en este momento.
// Nombre: El juego de la vida
// Versión: 0.2-unix
// Autor: user170294
// E-mail: [email protected]
#include <cstdlib> // rand() y srand()
#include <ctime> // time()
#include <iostream>
using namespace std;
#define ALTO 80 // Alto del tablero
#define ANCHO 200 // Ancho del tablero
#define VIVA 'O' // Celula VIVA
#define MUERTA ' ' // Celula MUERTA
#define PROBABILIDAD 10 // De cada X celulas 1 estará viva.
void EntornoVaciar(char entorno[ALTO][ANCHO]); // Llena el entorno de celulas muertas
void EntornoImprimir(char entorno[ALTO][ANCHO]); // Imprime el entorno en pantalla
void EntornoEscribir(char entorno[ALTO][ANCHO]); // Escribe un entorno a mano
void EntornoAleatorio(char entorno[ALTO][ANCHO], int probabilidad); // Genera una población aleatoria
void EntornoEvolucionar(char entorno1[ALTO][ANCHO], char entorno2[ALTO][ANCHO]); // Evoluciona una población a la siguiente generación
int main(void)
{
char entorno1[ALTO][ANCHO]; // Son necesarios dos tablas, una para mostrar y otra para evolucionar
char entorno2[ALTO][ANCHO];
bool scrFlip = false; // Variable de la que dependerá mostrar un entorno u otro.
int generacion = 0; // Variable que almacena la generación actual
srand(time(NULL)); // Inicializamos el generador de números aleatorios
system("clear"); // Limpiamos la pantalla antes de imprimir nada
cout << "###########################" << endl;
cout << "# El juego de la vida #" << endl;
cout << "###########################" << endl;
cout << "\t[>] Versión: 0.2-unix\n\t[>] Autor: user170294\n\t[>] E-mail: [email protected]\n\n";
cout << "*** Pulsa Enter para generar una población aleatoria ***";
cin.get();
EntornoVaciar(entorno1); // Vaciamos el entorno1
EntornoAleatorio(entorno1, PROBABILIDAD); // Generamos una poblacion aleatoria en entorno1
while(true) {
system("clear");
cout << "[ Generación: " << generacion << " ]" << endl;
if(!scrFlip) { // Es necesario utilizar este efecto para el correcto funcionamiento de las reglas
EntornoImprimir(entorno1);
EntornoVaciar(entorno2);
EntornoEvolucionar(entorno1, entorno2);
scrFlip = true;
} else {
EntornoImprimir(entorno2);
EntornoVaciar(entorno1);
EntornoEvolucionar(entorno2, entorno1);
scrFlip = false;
}
system("sleep 0.1"); // Hacer una pausa de 0.1s para que no valla demasiado rápido
generacion++;
}
}
void EntornoVaciar(char entorno[ALTO][ANCHO]) {
for(int i=0;i<ALTO;i++)
for(int j=0;j<ANCHO;j++)
entorno[i][j]=MUERTA;
}
void EntornoImprimir(char entorno[ALTO][ANCHO]) {
for(int i=0;i<ALTO;i++){
for(int j=0;j<ANCHO;j++)
cout<<entorno[i][j];
cout<<endl;
}
}
void EntornoEscribir(char entorno[ALTO][ANCHO]) {
int aux;
for(int i=0;i<ALTO;i++)
for(int j=0;j<ANCHO;j++){
aux=0;
cout<<"celda["<<i<<"|"<<j<<"]: ";
cin>>aux;
entorno[i][j]=(aux==0)?MUERTA:VIVA;
}
}
void EntornoAleatorio(char entorno[ALTO][ANCHO], int probabilidad) {
int aux;
for(int i=0;i<ALTO;i++)
for(int j=0;j<ANCHO;j++){
aux=rand()%probabilidad;
entorno[i][j]=(aux==0)?VIVA:MUERTA;
}
}
void EntornoEvolucionar(char entorno1[ALTO][ANCHO], char entorno2[ALTO][ANCHO]) {
int n; //numero de celdas alrededor
for(int i=0;i<ALTO;i++){
for(int j=0;j<ANCHO;j++){
n=0;
((i-1)<0||(j-1)<0)?:(MUERTA==entorno1[i-1][j-1])?:n++; //arriba-izquierda
((i-1)<0)?:(MUERTA==entorno1[i-1][j])?:n++; //arriba
((i-1)<0||(j+1)>=ANCHO)?:(MUERTA==entorno1[i-1][j+1])?:n++; //arriba-derecha
((j-1)<0)?:(MUERTA==entorno1[i][j-1])?:n++; //izquierda
((j+1)>=ANCHO)?:(MUERTA==entorno1[i][j+1])?:n++; //derecha
((i+1)>=ALTO||(j-1)<0)?:(MUERTA==entorno1[i+1][j-1])?:n++; //abajo-izquierda
((i+1)>=ALTO)?:(MUERTA==entorno1[i+1][j])?:n++; //abajo
((i+1)>=ALTO||(j+1)>=ANCHO)?:(MUERTA==entorno1[i+1][j+1])?:n++; //abajo-derecha
if(VIVA==entorno1[i][j]){
if(n<2)
entorno2[i][j]=MUERTA;
if(n==2||n==3)
entorno2[i][j]=VIVA;
if(n>3)
entorno2[i][j]=MUERTA;
}
if(MUERTA==entorno1[i][j])
if(n==3)
entorno2[i][j]=VIVA;
}
}
}
Paste2: http://paste2.org/kdZyaNf0// Nombre: El juego de la vida
// Versión: 0.2-unix
// Autor: user170294
// E-mail: [email protected]
#include <cstdlib> // rand() y srand()
#include <ctime> // time()
#include <iostream>
using namespace std;
#define ALTO 80 // Alto del tablero
#define ANCHO 200 // Ancho del tablero
#define VIVA 'O' // Celula VIVA
#define MUERTA ' ' // Celula MUERTA
#define PROBABILIDAD 10 // De cada X celulas 1 estará viva.
void EntornoVaciar(char entorno[ALTO][ANCHO]); // Llena el entorno de celulas muertas
void EntornoImprimir(char entorno[ALTO][ANCHO]); // Imprime el entorno en pantalla
void EntornoEscribir(char entorno[ALTO][ANCHO]); // Escribe un entorno a mano
void EntornoAleatorio(char entorno[ALTO][ANCHO], int probabilidad); // Genera una población aleatoria
void EntornoEvolucionar(char entorno1[ALTO][ANCHO], char entorno2[ALTO][ANCHO]); // Evoluciona una población a la siguiente generación
int main(void)
{
char entorno1[ALTO][ANCHO]; // Son necesarios dos tablas, una para mostrar y otra para evolucionar
char entorno2[ALTO][ANCHO];
bool scrFlip = false; // Variable de la que dependerá mostrar un entorno u otro.
int generacion = 0; // Variable que almacena la generación actual
srand(time(NULL)); // Inicializamos el generador de números aleatorios
system("clear"); // Limpiamos la pantalla antes de imprimir nada
cout << "###########################" << endl;
cout << "# El juego de la vida #" << endl;
cout << "###########################" << endl;
cout << "\t[>] Versión: 0.2-unix\n\t[>] Autor: user170294\n\t[>] E-mail: [email protected]\n\n";
cout << "*** Pulsa Enter para generar una población aleatoria ***";
cin.get();
EntornoVaciar(entorno1); // Vaciamos el entorno1
EntornoAleatorio(entorno1, PROBABILIDAD); // Generamos una poblacion aleatoria en entorno1
while(true) {
system("clear");
cout << "[ Generación: " << generacion << " ]" << endl;
if(!scrFlip) { // Es necesario utilizar este efecto para el correcto funcionamiento de las reglas
EntornoImprimir(entorno1);
EntornoVaciar(entorno2);
EntornoEvolucionar(entorno1, entorno2);
scrFlip = true;
} else {
EntornoImprimir(entorno2);
EntornoVaciar(entorno1);
EntornoEvolucionar(entorno2, entorno1);
scrFlip = false;
}
system("sleep 0.1"); // Hacer una pausa de 0.1s para que no valla demasiado rápido
generacion++;
}
}
void EntornoVaciar(char entorno[ALTO][ANCHO]) {
for(int i=0;i<ALTO;i++)
for(int j=0;j<ANCHO;j++)
entorno[i][j]=MUERTA;
}
void EntornoImprimir(char entorno[ALTO][ANCHO]) {
for(int i=0;i<ALTO;i++){
for(int j=0;j<ANCHO;j++)
cout<<entorno[i][j];
cout<<endl;
}
}
void EntornoEscribir(char entorno[ALTO][ANCHO]) {
int aux;
for(int i=0;i<ALTO;i++)
for(int j=0;j<ANCHO;j++){
aux=0;
cout<<"celda["<<i<<"|"<<j<<"]: ";
cin>>aux;
entorno[i][j]=(aux==0)?MUERTA:VIVA;
}
}
void EntornoAleatorio(char entorno[ALTO][ANCHO], int probabilidad) {
int aux;
for(int i=0;i<ALTO;i++)
for(int j=0;j<ANCHO;j++){
aux=rand()%probabilidad;
entorno[i][j]=(aux==0)?VIVA:MUERTA;
}
}
void EntornoEvolucionar(char entorno1[ALTO][ANCHO], char entorno2[ALTO][ANCHO]) {
int n; //numero de celdas alrededor
for(int i=0;i<ALTO;i++){
for(int j=0;j<ANCHO;j++){
n=0;
((i-1)<0||(j-1)<0)?:(MUERTA==entorno1[i-1][j-1])?:n++; //arriba-izquierda
((i-1)<0)?:(MUERTA==entorno1[i-1][j])?:n++; //arriba
((i-1)<0||(j+1)>=ANCHO)?:(MUERTA==entorno1[i-1][j+1])?:n++; //arriba-derecha
((j-1)<0)?:(MUERTA==entorno1[i][j-1])?:n++; //izquierda
((j+1)>=ANCHO)?:(MUERTA==entorno1[i][j+1])?:n++; //derecha
((i+1)>=ALTO||(j-1)<0)?:(MUERTA==entorno1[i+1][j-1])?:n++; //abajo-izquierda
((i+1)>=ALTO)?:(MUERTA==entorno1[i+1][j])?:n++; //abajo
((i+1)>=ALTO||(j+1)>=ANCHO)?:(MUERTA==entorno1[i+1][j+1])?:n++; //abajo-derecha
if(VIVA==entorno1[i][j]){
if(n<2)
entorno2[i][j]=MUERTA;
if(n==2||n==3)
entorno2[i][j]=VIVA;
if(n>3)
entorno2[i][j]=MUERTA;
}
if(MUERTA==entorno1[i][j])
if(n==3)
entorno2[i][j]=VIVA;
}
}
}
#include <iostream>
using namespace std;
int main(){
int num;
cout<<"Ingresa los numeros entre 7 y 21"<<endl;
for(int e=7; e<=21; e++) // mejor declarar 'e' dentro del for. Y 'e++' equivale a 'e = e+1'.
{
cout<<e<<":";
cin>>num;
if(e != num){
cout<<"Error ese no es el número que corresponde"<<endl;
cout<<"Intentalo otra vez"<<endl;
e--;
}
}
return 0;
} // por favor, no pongas ';' despues de los '}' :)