Seguimos buscando a Arshak. Ayudanos compartiendo!
Encuesta no oficial de docentes
Resultados de la encuesta no oficial de docentes
Probaste el SIGA Helper?

Donar $100 Donar $200 Donar $500 Donar mensualmente


Enviar respuesta 
 
Calificación:
  • 0 votos - 0 Media
  • 1
  • 2
  • 3
  • 4
  • 5
Buscar en el tema
[APORTE] Informática I.
Autor Mensaje
Feer Sin conexión
Presidente del CEIT
Ing. Electrónico
**********

Ing. Electrónica
Facultad Regional Buenos Aires

Mensajes: 4.672
Agradecimientos dados: 601
Agradecimientos: 2.971 en 451 posts
Registro en: Apr 2010
Mensaje: #16
RE: [APORTE] Informática I.
Bat como hiciste para que te ande?Feer


Mati:


void barajar(Carta *mazo){

int i, j; // Estas variables las uso para el swap es como cuando ordenas un vector.
Carta buffer; // Este vendria a ser el que contiene el que va a rotar (como cuando ordenas vector)

for(i = 0; i <= 51; i++){ // Aca voy pasando las cartas una por una..
j = rand()%52; // A la primera del maso le busco una nueva posicion a asignar dentro de la baraja.

//swap
buffer = *(mazo+i); //Guardo la primera para no perderla jaja
*(mazo+i) = *(mazo+j); //La carta que esta en la posicion del random que me tiro la guardo en donde esta mi primera carta
*(mazo+j) = *(mazo+i); // Y la que estaba primera la llevo a la que le saque carta..
} //Lo hago con las 52 cartas y queda barajeada la cosa...
}




Ahí te lo comente fijate, funciona como un algoritmo de busqueda pero en vez de buscar la mayor o la menor buscas la de posicion que te tira el random.

[Imagen: digitalizartransparent.png]
13-05-2012 16:49
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
matyary Sin conexión
Presidente del CEIT
SORPRENDEME!
********

Ing. Electrónica
Facultad Regional Buenos Aires

Mensajes: 1.809
Agradecimientos dados: 68
Agradecimientos: 342 en 83 posts
Registro en: Mar 2011
Mensaje: #17
RE: [APORTE] Informática I.
Encontré un error gracias a compilación del post de brunodiaz (suena raro decir "compilación de post" Jajaja). Se repiten en una ejecución una misma carta, 6 de treboles me repitió a mí. Para evitar este inconveniente una forma de resolverlo es poniéndole un nro. como parámetro a srand. O bien time(NULL) (como vos pusiste) ó getpid(). Pruebo con getpid() a ver que pasa (línea 20)...



#include <stdio.h>
#include <stdlib.h>
#include <time.h>

typedef struct carta {
const char *numero;
const char *palo;
} Carta;

void cargar(Carta *mazo, char *mazo_fila[], char *mazo_columna[]);
void barajar(Carta *mazo);
void repartir(Carta *mazo);

int main(void){

char *mazo_fila[]={"picas","corazones","diamantes","treboles"};
char*mazo_columna[]={"uno","dos","tres","cuatro","cinco","seis","siete","ocho","nueve","diez","jack","reina","rey"};
Carta mazo[4][13];

srand(getpid());

printf("Reparto de cartas: \n");
cargar((Carta*)mazo,mazo_fila,mazo_columna);
barajar((Carta*)mazo);
repartir((Carta*)mazo);
getchar();
return(0);
}

void cargar(Carta *mazo, char *mazo_fila[], char *mazo_columna[]){

int i;

for(i = 0; i <= 51; i++){
(mazo+i)->numero = *(mazo_columna + (i%13));
(mazo+i)->palo = *(mazo_fila + (i/13));
}
}

void barajar(Carta *mazo){

int i, j;
Carta buffer;

for(i = 0; i <= 51; i++){
j = rand()%52;

//swap
buffer = *(mazo+i);
*(mazo+i) = *(mazo+j);
*(mazo+j) = *(mazo+i);
}
}

void repartir(Carta *mazo){

int i,j;

for(i = 0, j = 0; i < 52; j++, i+=2)
printf("%d.\tJugador 1: %s %s\t\tJugador 2: %s %s\n",j,mazo[i].numero,mazo[i].palo,mazo[i+1].numero,mazo[i+1].palo);
}




(13-05-2012 16:49)Feer escribió:  Ahí te lo comente fijate, funciona como un algoritmo de busqueda pero en vez de buscar la mayor o la menor buscas la de posicion que te tira el random.

Gracias. Ahora lo entendí. Igual es al pedo barajar. Rand ya cumple con esa función. Es como que estás haciendo rand al cuadrado (?) JAJA


A mí tampoco me compila...

\[\sqrt{-1} \;\; 2^3 \;\; \sum \;\; \pi\]
... and it was good!


Mi web: Von Hexlein
(Este mensaje fue modificado por última vez en: 13-05-2012 16:58 por matyary.)
13-05-2012 16:54
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
Feer Sin conexión
Presidente del CEIT
Ing. Electrónico
**********

Ing. Electrónica
Facultad Regional Buenos Aires

Mensajes: 4.672
Agradecimientos dados: 601
Agradecimientos: 2.971 en 451 posts
Registro en: Apr 2010
Mensaje: #18
RE: [APORTE] Informática I.
Jajaja, es para barajar=P
Es para hacerlo genérico(?)

[Imagen: digitalizartransparent.png]
13-05-2012 17:27
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
matyary Sin conexión
Presidente del CEIT
SORPRENDEME!
********

Ing. Electrónica
Facultad Regional Buenos Aires

Mensajes: 1.809
Agradecimientos dados: 68
Agradecimientos: 342 en 83 posts
Registro en: Mar 2011
Mensaje: #19
RE: [APORTE] Informática I.

Off-topic:
Así como Voltaire dijo: "La vida es un juego de azar", yo digo: "La vida es como la función rand();"

\[\sqrt{-1} \;\; 2^3 \;\; \sum \;\; \pi\]
... and it was good!


Mi web: Von Hexlein
17-05-2012 16:31
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
brunodiaz Sin conexión
The Dark Knight
Bla
**********

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 7.707
Agradecimientos dados: 92
Agradecimientos: 384 en 135 posts
Registro en: May 2008
Mensaje: #20
RE: [APORTE] Informática I.
Al pasar el argumento a las funciones arajar, etc, castee a (Carta *)
(Este mensaje fue modificado por última vez en: 17-05-2012 16:40 por brunodiaz.)
17-05-2012 16:37
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
Feer Sin conexión
Presidente del CEIT
Ing. Electrónico
**********

Ing. Electrónica
Facultad Regional Buenos Aires

Mensajes: 4.672
Agradecimientos dados: 601
Agradecimientos: 2.971 en 451 posts
Registro en: Apr 2010
Mensaje: #21
RE: [APORTE] Informática I.
Gracias=D

[Imagen: digitalizartransparent.png]
17-05-2012 17:39
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
matyary Sin conexión
Presidente del CEIT
SORPRENDEME!
********

Ing. Electrónica
Facultad Regional Buenos Aires

Mensajes: 1.809
Agradecimientos dados: 68
Agradecimientos: 342 en 83 posts
Registro en: Mar 2011
Mensaje: #22
RE: [APORTE] Informática I.
Ah, lo que yo había dicho que repetía cartas ya sé a que se debe.
Hay un "error" (lo puse entre comillas porque no es tan grave) en el swapping.

Tiene que ser:

buffer=*(mazo+i);
*(mazo+i)=*(mazo+j);
*(mazo+j)=buffer;

\[\sqrt{-1} \;\; 2^3 \;\; \sum \;\; \pi\]
... and it was good!


Mi web: Von Hexlein
24-05-2012 12:18
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
Feer Sin conexión
Presidente del CEIT
Ing. Electrónico
**********

Ing. Electrónica
Facultad Regional Buenos Aires

Mensajes: 4.672
Agradecimientos dados: 601
Agradecimientos: 2.971 en 451 posts
Registro en: Apr 2010
Mensaje: #23
RE: [APORTE] Informática I.
Si lo vi lo del swapp pero buen...
La cosa que anda jajajajajajajaja


Exitos con el exámen che!

[Imagen: digitalizartransparent.png]
24-05-2012 13:55
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
matyary Sin conexión
Presidente del CEIT
SORPRENDEME!
********

Ing. Electrónica
Facultad Regional Buenos Aires

Mensajes: 1.809
Agradecimientos dados: 68
Agradecimientos: 342 en 83 posts
Registro en: Mar 2011
Mensaje: #24
RE: [APORTE] Informática I.
(24-05-2012 13:55)Feer escribió:  Si lo vi lo del swapp pero buen...
La cosa que anda jajajajajajajaja


Exitos con el exámen che!

Joya, cambiando esa boludez no repetiría las cartas Jerejerejereje(?)

\[\sqrt{-1} \;\; 2^3 \;\; \sum \;\; \pi\]
... and it was good!


Mi web: Von Hexlein
25-05-2012 10:42
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
Buscar en el tema
Enviar respuesta 




Usuario(s) navegando en este tema: 1 invitado(s)