Autor
|
Tema: Ayuda en C: Funciones y Matrices (Leído 3,462 veces)
|
outlookk
Desconectado
Mensajes: 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; }
|
|
|
En línea
|
|
|
|
naderST
|
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
|
|
|
En línea
|
|
|
|
outlookk
Desconectado
Mensajes: 3
|
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í?
|
|
|
En línea
|
|
|
|
durasno
Desconectado
Mensajes: 373
|
HOla! primero q nada deberias revisar tu codigo asi no vemos cosas como en la funcion llenarmatriz: usas dos nombres distintos pass y escojer(supongo q te referis a la misma matriz)
Como ya te dijeron, los arreglos se pasan por referencia asi q solo hace falta q lo crees una sola vez y se lo pases a las distintas funciones q sea necesario
Saludos
|
|
|
En línea
|
Ahorrate una pregunta, lee el man
|
|
|
leosansan
Desconectado
Mensajes: 1.314
|
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 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:
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í.
|
|
« Última modificación: 4 Febrero 2013, 22:50 pm por leosansan »
|
En línea
|
|
|
|
outlookk
Desconectado
Mensajes: 3
|
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:
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!
|
|
|
En línea
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
Ayuda con matrices
Java
|
fileto
|
2
|
3,057
|
13 Febrero 2009, 06:13 am
por fileto
|
|
|
Ayuda con matrices
.NET (C#, VB.NET, ASP)
|
sheccid65
|
0
|
2,619
|
6 Febrero 2010, 19:44 pm
por sheccid65
|
|
|
Ayuda con matrices
Java
|
ArhennJosey
|
2
|
3,025
|
7 Mayo 2010, 22:29 pm
por 1mpuls0
|
|
|
Funciones con matrices
Java
|
juancaa
|
2
|
2,502
|
3 Marzo 2012, 14:30 pm
por juancaa
|
|
|
ejercicio con matrices o funciones en visual c++
Programación C/C++
|
ZUVAI
|
1
|
2,452
|
7 Septiembre 2013, 08:54 am
por Eternal Idol
|
|