Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - outlookk

#1
Cita de: leosansan en  4 Febrero 2013, 22:29 PM
La verdad que el código que posteas no se sabe bien por donde cogerlo.
Intentas llenar con aleatorios con una variable "aleatorio_letra" que no hace nada. Eso se lleva a cabo con rand, y fíjate en su uso para que en un caso dé números del 2 al 6 y en el otro del 7 al 16.
Por un lado declaras" char" la matriz e igualas a" int" en la variable num.
Supongo que la matriz es de enteros, ya que la llenas con enteros generados aleatoriamente. Por otro lado, para no liarte con la matriz, que en un lado llamas escoger y en otro pass, lo cual en sí no está mal, aunque sí está mal en la misma función llamarla de forma diferente, como comento durasno, yo la he llamado en todo momento pass para no liarte.
El código hace lo que quieres:

Código (cpp) [Seleccionar]
void llenarmatriz(int pass[4][4])
{
int i, j, num;
for(i=0; i<4; i++) {
for(j=0; j<4; j++) {
if(j<2){
num =  2+rand() % (5); //aleatorio de 2 a 6
pass[i][j]=num;
}
else {
num = 7+rand() % (10); //aleatorio entre 7 y 16
pass[i][j]=num;
}
}
}
for(i=0;i<4;i++) {
printf("Filas %d: ",i+1);
for(j=0;j<4;j++){
if(j<2)
         printf("%d ",pass[i][j]);
     else
       printf("%d ",pass[i][j]);
     }
printf("\n");
}
}

void i_escoj(int pass [][4])
{
int op=0;
 printf("Escoja: ");
scanf("%d", &op);
op--;
 obtener(op, pass);
}

void obtener(int op, int pass[][4])
{
 int i;
for(i=0; i<4; i++)
   printf ("%d ",pass[op][i]);
}
#include <stdio.h>
#include <time.h>

int main(void){
 srand(time(NULL));
 int op,pass [4][4];
 llenarmatriz( pass);
 i_escoj(pass);
 return 0;
}


Saluditos!.

P.D: No obstante habría que depurar más tranquilamente el código, como declarar las funciones antes de usarlas, pero eso ya es para tí.
Realmente la dibia llenar con aleatorios en letras, por eso la funcion, tu respuesta igual me sirvio mucho, gracias!
#2
Cita de: naderST en  4 Febrero 2013, 19:11 PM
Cuando llames a llenarmatriz le pasas como parámetro matriz, esto se pasa por referencia, es decir, lo que tu función llenarmatriz modifique en matriz, la variable original se verá afectada, por lo tanto en tu variable matriz estará almacenada la información que generaste en llenarmatriz
void *llenarmatriz(char pass[4][4])
{
                 ........
                 ........
                 ........
return matriz;
}
¿Así?
#3
Hola, estoy intentando hacer una matriz de 4x4 que este llena de numeros aleatorios diferentes en una funcion. Se la llama desde otra funcion y se escoje una de las filas creadas y se muestra por pantalla. Esto he hecho, no se como imprimir la fila que escoja el usuario:

void llenarmatriz(char pass[4][4])
{
srand(time(NULL));
char letra;
int i, j, num=0;
for(i=0; i<4; i++)
{
for(j=0; j<4; j++)
{
if(j<2)
{
num = aleatorio_letra(); //aleatorio de 2 a 6
pass[i][j]=num;
}
else
{
num = aleatorio_numero(); //aleatorio entre 7 y 16
pass[i][j]=num;
}
}
}
for(i=0;i<4;i++)
{
printf("Filas %i: ",i+1);
for(j=0;j<4;j++)
{
if(j<2)
{
printf("%c",escojer[i][j]);
}
else
{
printf("%i",escojer[i][j]);
}
}
printf("\n");
}
}

void pide()
{
char escojer[4][4];
llenarmatriz(escojer);
}

void i_escoj()
{
int op=0;
char matriz[4][4];
llenarmatriz(pass); //aqui quisiera que me de la misma que se genero en llenarmatriz y no una nueva
printf("Escoja: ");
scanf("%d", &op);
printf("%s", obtener(op, matriz));
fclose ( p );
}

char *obtener(int op, char matriz[4][4])
{
char c[5];
int i;
for(i=0; i<4; i++)
c[i] = matriz[op][i];
return c;
}