funciones duda

Iniciado por ALONSOQ, 26 Julio 2012, 22:52 PM

0 Miembros y 1 Visitante están viendo este tema.

ALONSOQ

Hola me podeis decir que falla en este codigo?

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

int matriz_aleatoria (int m[3] );
int matriz_aleatoria (int m[3])
{
    int  i;
    srand (time(NULL));
   for (i=0; i<3;i++)
    {
    m[i]= (rand()%16);
    printf("%d",m[i]);
    }   
   
}
   
    int main()
    {
       int matriz[3];
        int contador;
       
       matriz_aleatoria(matriz[contador]);
       
        getch();
    }


muchas gracias

overxfl0w13

Cita de: ALONSOQ en 26 Julio 2012, 22:52 PM
Hola me podeis decir que falla en este codigo?

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

int matriz_aleatoria (int m[3] );
int matriz_aleatoria (int m[3])
{
    int  i;
    srand (time(NULL));
   for (i=0; i<3;i++)
    {
    m[i]= (rand()%16);
    printf("%d",m[i]);
    }   
   
}
   
    int main()
    {
       int matriz[3];
        int contador;
       
       matriz_aleatoria(matriz[contador]);
       
        getch();
    }


muchas gracias

De C poco sé y me lio con sus codes pero que yo vea, la variable contador no está inicializada, si declarada pero no almacena ningun valor, solo basura que le pasas como índice al array matriz.
[/url]

rir3760

El error principal se encuentra en la funcion "main", ahi llamas a la funcion pasandole un entero:
matriz_aleatoria(matriz[contador]);

Lo correcto es usar solo el nombre del array:
matriz_aleatoria(matriz);

Y ya que la funcion no retorna un valor debes indicar este como void:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>

void matriz_aleatoria(int m[]);

int main(void)
{
   int matriz[3];
   
   srand((unsigned) time(NULL));
   matriz_aleatoria(matriz);
   
   return 0;
}

void matriz_aleatoria(int m[])
{
   int  i;
   
   for (i = 0; i < 3; i++){
      m[i] = rand() % 16;
      printf("%d\n", m[i]);
   }
}


Un saludo
C retains the basic philosophy that programmers know what they are doing; it only requires that they state their intentions explicitly.
--
Kernighan & Ritchie, The C programming language

ALONSOQ


ALONSOQ

Cita de: rir3760 en 26 Julio 2012, 23:01 PM
El error principal se encuentra en la funcion "main", ahi llamas a la funcion pasandole un entero:
matriz_aleatoria(matriz[contador]);

Lo correcto es usar solo el nombre del array:
matriz_aleatoria(matriz);

Y ya que la funcion no retorna un valor debes indicar este como void:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>

void matriz_aleatoria(int m[]);

int main(void)
{
   int matriz[3];
   
   srand((unsigned) time(NULL));
   matriz_aleatoria(matriz);
   
   return 0;
}

void matriz_aleatoria(int m[])
{
   int  i;
   
   for (i = 0; i < 3; i++){
      m[i] = rand() % 16;
      printf("%d\n", m[i]);
   }
}


Un saludo

Perdona por la pregunta que seguro que es una tontería, pero por que dices que la función no devuelve ningun valor. ¿ No devuelve tres entreros aleatorios?

gracias

rir3760

Cita de: ALONSOQ en 27 Julio 2012, 14:05 PMPerdona por la pregunta que seguro que es una tontería, pero por que dices que la función no devuelve ningun valor. ¿ No devuelve tres entreros aleatorios?
No. Lo que hace esa función es almacenar los tres números a partir de la dirección indicada.

Para que una función retorne un valor se debe indicar como su tipo de retorno y se debe utilizar la sentencia:
return N;
Donde "N" sera el valor retornado por la función y, por supuesto, coincida con (o pueda ser convertido a) el tipo apropiado.

Por ejemplo una función que recibe tres números y resulta en la suma de estos es:
int suma(int a, int b, int c)
{
   return a + b + c;
}


Un saludo
C retains the basic philosophy that programmers know what they are doing; it only requires that they state their intentions explicitly.
--
Kernighan & Ritchie, The C programming language