elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Los 10 CVE más críticos (peligrosos) de 2020


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Ayuda en C: Funciones y Matrices
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Ayuda en C: Funciones y Matrices  (Leído 3,504 veces)
outlookk

Desconectado Desconectado

Mensajes: 3


Ver Perfil
Ayuda en C: Funciones y Matrices
« en: 4 Febrero 2013, 18:55 pm »

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:

Código:
 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


Desconectado Desconectado

Mensajes: 625



Ver Perfil WWW
Re: Ayuda en C: Funciones y Matrices
« Respuesta #1 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


En línea

outlookk

Desconectado Desconectado

Mensajes: 3


Ver Perfil
Re: Ayuda en C: Funciones y Matrices
« Respuesta #2 en: 4 Febrero 2013, 19:31 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í?
En línea

durasno


Desconectado Desconectado

Mensajes: 373


Ver Perfil
Re: Ayuda en C: Funciones y Matrices
« Respuesta #3 en: 4 Febrero 2013, 20:39 pm »

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 Desconectado

Mensajes: 1.314


Ver Perfil
Re: Ayuda en C: Funciones y Matrices
« Respuesta #4 en: 4 Febrero 2013, 22:29 pm »

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:

Código
  1. void llenarmatriz(int pass[4][4])
  2. {
  3. int i, j, num;
  4. for(i=0; i<4; i++) {
  5. for(j=0; j<4; j++) {
  6. if(j<2){
  7. num =  2+rand() % (5); //aleatorio de 2 a 6
  8. pass[i][j]=num;
  9. }
  10. else {
  11. num = 7+rand() % (10); //aleatorio entre 7 y 16
  12. pass[i][j]=num;
  13. }
  14. }
  15. }
  16. for(i=0;i<4;i++) {
  17. printf("Filas %d: ",i+1);
  18. for(j=0;j<4;j++){
  19. if(j<2)
  20.          printf("%d ",pass[i][j]);
  21.      else
  22.        printf("%d ",pass[i][j]);
  23.      }
  24. printf("\n");
  25. }
  26. }
  27.  
  28. void i_escoj(int pass [][4])
  29. {
  30. int op=0;
  31.  printf("Escoja: ");
  32. scanf("%d", &op);
  33. op--;
  34.  obtener(op, pass);
  35. }
  36.  
  37. void obtener(int op, int pass[][4])
  38. {
  39.  int i;
  40. for(i=0; i<4; i++)
  41.    printf ("%d ",pass[op][i]);
  42. }
  43. #include <stdio.h>
  44. #include <time.h>
  45.  
  46. int main(void){
  47.  srand(time(NULL));
  48.  int op,pass [4][4];
  49.  llenarmatriz( pass);
  50.  i_escoj(pass);
  51.  return 0;
  52. }
  53.  
  54.  
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 Desconectado

Mensajes: 3


Ver Perfil
Re: Ayuda en C: Funciones y Matrices
« Respuesta #5 en: 5 Febrero 2013, 15:09 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
  1. void llenarmatriz(int pass[4][4])
  2. {
  3. int i, j, num;
  4. for(i=0; i<4; i++) {
  5. for(j=0; j<4; j++) {
  6. if(j<2){
  7. num =  2+rand() % (5); //aleatorio de 2 a 6
  8. pass[i][j]=num;
  9. }
  10. else {
  11. num = 7+rand() % (10); //aleatorio entre 7 y 16
  12. pass[i][j]=num;
  13. }
  14. }
  15. }
  16. for(i=0;i<4;i++) {
  17. printf("Filas %d: ",i+1);
  18. for(j=0;j<4;j++){
  19. if(j<2)
  20.          printf("%d ",pass[i][j]);
  21.      else
  22.        printf("%d ",pass[i][j]);
  23.      }
  24. printf("\n");
  25. }
  26. }
  27.  
  28. void i_escoj(int pass [][4])
  29. {
  30. int op=0;
  31.  printf("Escoja: ");
  32. scanf("%d", &op);
  33. op--;
  34.  obtener(op, pass);
  35. }
  36.  
  37. void obtener(int op, int pass[][4])
  38. {
  39.  int i;
  40. for(i=0; i<4; i++)
  41.    printf ("%d ",pass[op][i]);
  42. }
  43. #include <stdio.h>
  44. #include <time.h>
  45.  
  46. int main(void){
  47.  srand(time(NULL));
  48.  int op,pass [4][4];
  49.  llenarmatriz( pass);
  50.  i_escoj(pass);
  51.  return 0;
  52. }
  53.  
  54.  
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

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Ayuda con matrices
Java
fileto 2 3,082 Último mensaje 13 Febrero 2009, 06:13 am
por fileto
Ayuda con matrices
.NET (C#, VB.NET, ASP)
sheccid65 0 2,638 Último mensaje 6 Febrero 2010, 19:44 pm
por sheccid65
Ayuda con matrices
Java
ArhennJosey 2 3,039 Último mensaje 7 Mayo 2010, 22:29 pm
por 1mpuls0
Funciones con matrices
Java
juancaa 2 2,512 Último mensaje 3 Marzo 2012, 14:30 pm
por juancaa
ejercicio con matrices o funciones en visual c++
Programación C/C++
ZUVAI 1 2,478 Último mensaje 7 Septiembre 2013, 08:54 am
por Eternal Idol
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines