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

 

 


Tema destacado: Usando Git para manipular el directorio de trabajo, el índice y commits (segunda parte)


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

Desconectado Desconectado

Mensajes: 62



Ver Perfil
separar funciones
« en: 27 Julio 2012, 16:41 pm »

Hola,

He redactado el siguiente codigo:
hago una función que  crea una matriz aleatoria, la suma, haya la media y dice cual es el mayor y cual el menor.
Mi duda es ¿ como podría separarla en 4 funciones distintas: crea matriz, suma, media, mayor menor
Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <conio.h>
  4. #include <time.h>
  5.  
  6. int matriz_aleatoria (int m[] );
  7.  
  8.  
  9.    int main()
  10.    {
  11.       int matriz[3];
  12.       srand (time(NULL));
  13.       matriz_aleatoria(matriz);
  14.  
  15.        getch();
  16.    }
  17.  
  18.  
  19. int matriz_aleatoria (int m[])
  20. {
  21.    int  i, s=0;
  22.    float n;
  23.  
  24.   for (i=0; i<3;i++)
  25.    {
  26.    m[i]= (rand()%16);
  27.    printf("%d\t",m[i]);
  28.    s=s+m[i];
  29.    }  
  30.    printf("%d\t",s);
  31.  
  32.    n = (float) s/3;
  33.        printf("%f\t",n);
  34.  
  35.    if (m[0]>m[1])
  36.          if (m[0]>m[2])
  37.          {
  38.             if (m[1]>m[2])
  39.             printf("el mayor es%d y el menor es%d", m[0],  m[2]);
  40.             else
  41.             printf("el mayor es%d y el menor es%d", m[0],  m[1]);
  42.          }
  43.         else
  44.  
  45.           printf("el mayor es%d y el menor es%d", m[2],  m[1]);
  46.     else
  47.  
  48.         if(m[1]>m[2])
  49.          {
  50.                   if (m[0]>m[2])      
  51.                    printf("el mayor es%d y el menor es%d", m[1],  m[2]);
  52.                    else
  53.                     printf("el mayor es%d y el menor es%d", m[1],  m[0]);
  54.          }
  55. }
  56.  

muchas gracias
   


En línea

Ferno


Desconectado Desconectado

Mensajes: 375


Ver Perfil
Re: separar funciones
« Respuesta #1 en: 27 Julio 2012, 19:08 pm »

Si tienes implementado el código de cada operación, sólo implementa las 4 funciones correspondientes pasando por parámetro la matriz a utilizar.
Declara las variables locales correspondientes en cada función y retorna el valor!

Recomiendo que comiences por separar el code, si llegas a estancarte en algún momento con un error de compilación, postea nuevamente el code ^^


En línea

ALONSOQ

Desconectado Desconectado

Mensajes: 62



Ver Perfil
Re: separar funciones
« Respuesta #2 en: 27 Julio 2012, 19:51 pm »

 :o :o??
En línea

durasno


Desconectado Desconectado

Mensajes: 373


Ver Perfil
Re: separar funciones
« Respuesta #3 en: 27 Julio 2012, 21:38 pm »

Hola! mira aca: http://foro.elhacker.net/programacion_cc/funciones_en_c_ayuda-t367395.0.html
muy parecido a lo que queres hacer; fijate todos los prototipos que le marque al final(hace lo mismo que dice Ferno: pasar la matriz y retornar el resultado(y el tamaño de la matriz))

Saludos
En línea

Ahorrate una pregunta, lee el man
ALONSOQ

Desconectado Desconectado

Mensajes: 62



Ver Perfil
Re: separar funciones
« Respuesta #4 en: 27 Julio 2012, 23:16 pm »

¿Así? (no funciona)

Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <conio.h>
  4. #include <time.h>
  5.  
  6. int matriz_aleatoria (int m[]);
  7. int suma(int sum);
  8.  
  9. int main()
  10.    {
  11.    int matriz[3];
  12.    int sum;
  13.    srand (time(NULL));
  14.    matriz_aleatoria (matriz);
  15.    suma (sum);
  16.    getch();
  17.  
  18.    }
  19.  
  20. int matriz_aleatoria (int m[])
  21. {
  22. int i;
  23.    for (i=0;i<2;i++)
  24.    {
  25.    m[i]=(rand()%16);
  26.    printf("%d",m[i]);
  27.    }    
  28.  
  29. }
  30.  
  31. int suma (int s)
  32. {
  33. s= s + m[i];
  34. printf("%d",s);  
  35. }
En línea

durasno


Desconectado Desconectado

Mensajes: 373


Ver Perfil
Re: separar funciones
« Respuesta #5 en: 28 Julio 2012, 00:24 am »

Citar
(no funciona)
¿¿que es lo q no funciona?? No te acostumbres a esperar la respuesta, ya que estoy seguro que si miras detenidamente el programa podrias resolver vos mismo los errores que tenes(simple consejo)

Te marco lo q veo:

Código
  1. for (i=0;i<2;i++)
en la condicion usas i<2, tiene que ser i<3 (ya q tu arreglo es de [3])

2º en la funcion suma() vos usas m[] ¿¿pero en que momento se lo pasas a la funcion??.
Si s es tu variable que contiene la suma total, tenes que inicializar esa variable a 0(cero) ya que si no estas sumando "basura". Ademas para hacer la suma tenes que utilizar un for

3º A tus funciones las declaras para que devuelvan un int pero en ninguna haces un retorno (no es un error sino una mala implementacion)


Saludos

Saludos
En línea

Ahorrate una pregunta, lee el man
dato000


Desconectado Desconectado

Mensajes: 3.034



Ver Perfil
Re: separar funciones
« Respuesta #6 en: 28 Julio 2012, 00:40 am »

¿¿que es lo q no funciona?? No te acostumbres a esperar la respuesta, ya que estoy seguro que si miras detenidamente el programa podrias resolver vos mismo los errores que tenes(simple consejo)


Toda la fucking razón, no esperes que te hagan la tarea, te ayudamos, pero fuck la vida que lo hacemos de voluntarios...

Te dejo unas, Te recomiendo que leas atentamente como trabajar con arreglos, paso de referencias y variables locales y globales, y lee atentamente como trabajan las funciones, es muy importante eso si quieres saber de C/C++, JA! es importante para todos los lenguajes, pues tienen una lógica similar, pero no te preocupes viejo, es solo cuestión de trabajar y cogerle gusto a pasar horas en frente de un pc (o un pedazo de papel) resolviendo cosas como esta.

Como dije, te dejo unas, la del  menor y mayor las haces tu mi hermano. Hay varias cosas que puede que no termines de entender, solo es cuestión de preguntar, y leer, MUCHO

Código
  1. /*hago una función que  crea una matriz aleatoria, la suma, haya la media y dice cual es el mayor y cual el menor.
  2. Mi duda es ¿ como podría separarla en 4 funciones distintas: crea matriz, suma, media, mayor menor*/
  3.  
  4. #include <stdio.h>
  5. #include <stdlib.h>
  6. #include <time.h>
  7.  
  8. /*Una buena forma de llamar un arreglo como parametro en una funcion,
  9. es separar tanto el arreglo como la cantidad de espacios/dimension que posee el mismo,
  10. para que pueda tomar los valores separados y trabajarlos en la función más facilmente.*/
  11.  
  12.  
  13.  
  14. void arreglo_aleatorio (int a[], int espacios);
  15. int suma(int a[], int espacios);
  16.  
  17.  
  18. int main()
  19. {
  20.    int matriz[3];
  21.    printf("El Arreglo tiene los números: ");
  22.    arreglo_aleatorio(matriz, 3);
  23.    printf("\n\nLa Suma del Arreglo es: %d ", suma(matriz, 3));
  24.    printf("\n\nEl Promedio del Arreglo es: %d ", suma(matriz, 3)/3 );
  25.  
  26.    getchar();
  27.    return 0;
  28. }
  29.  
  30.  
  31. /*Arreglo creado, se deja void por que no retorna ningun valor,
  32. es una funcion que no devuelve valor
  33. es decir, no hay "return"*/
  34. void arreglo_aleatorio (int m[], int espacios)
  35. {
  36.    srand (time(NULL));
  37.    int i;
  38.    for (i=0; i<espacios; i++)
  39.    {
  40.        m[i]=(rand()%10);
  41.        printf("%d, ",m[i]);
  42.    }
  43.  
  44. }
  45.  
  46. /*Esta funcion es "int" porque devuelve un valor:
  47. la suma de los valores almacenados en el arreglo
  48. La estructura es la misma pues necesitamos los
  49. valores estandar del arreglo*/
  50. int suma(int m[], int espacios){
  51.    int i;
  52.    int suma = 0;
  53.    for (i=0; i<espacios; i++)
  54.    {
  55.        //es igual usar suma = suma + m[i]
  56.        suma += m[i];
  57.    }
  58.  
  59.    //Aqui la suma total de los elementos
  60.    return suma;
  61. }


En línea


ALONSOQ

Desconectado Desconectado

Mensajes: 62



Ver Perfil
Re: separar funciones
« Respuesta #7 en: 1 Agosto 2012, 10:00 am »

Muchas gracias por tu ayuda y tu consejo
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
separar pistas mp3
Software
Maria Pia 1 3,120 Último mensaje 16 Febrero 2003, 03:22 am
por Armando
Separar con el 3DMax
Diseño Gráfico
black 0 1,902 Último mensaje 25 Febrero 2004, 20:39 pm
por black
separar avi de mp3
Multimedia
Florcita2005 2 1,936 Último mensaje 18 Agosto 2005, 19:45 pm
por Songoku
[C] Problema con Struct en funciones que llaman a otras funciones
Programación C/C++
‭lipman 9 24,058 Último mensaje 19 Mayo 2011, 23:39 pm
por Littlehorse
Separar el programa en funciones
Programación C/C++
PJ Yeah 6 2,701 Último mensaje 9 Julio 2017, 23:59 pm
por PJ Yeah
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines