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)
| | |-+  Funciones en C, Ayuda!!
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Funciones en C, Ayuda!!  (Leído 2,259 veces)
jfap45

Desconectado Desconectado

Mensajes: 12


Ver Perfil
Funciones en C, Ayuda!!
« en: 20 Julio 2012, 19:11 pm »

Hola, tengo el siguiente codigo y me gustaria pasarlo a funciones para que despues las pueda reutilizar, si me pudieran ayudar al menos con una porfavor, yo me encargaria de pasar las demas a como pueda:

Código:
#include <stdio.h>
#include <conio.h>


   float num[10],aux=0,min,max;
      int i,e,t;

void main (){


      clrscr();
      // ASIGNAMOS UN TAMAÑO AL VECTOR, ELEGIDO POR EL USUARIO

        printf("Cual es el tamano del arreglo: ");
      scanf("%d", &t);

      num[t];
      // RELLENAMOS LAS POSICIONES DEL VECTOR
      for (i=0;i<t;i++)
      {
         printf("Numero para el lugar %d del arreglo: ",i);
         scanf("%f", &num);
      }
      // ORDENAMOS DE MENOR A MAYOR LOS VALORES DEL VECTOR
      for (i=1;i<t;i++)
         for (e=0; e<t-1;e++)
            if (num[e]>num[e+1])
            {
               aux= num[e];      // la variable aux nos ayuda a cambiar de posicion los valores del vector
               num[e]=num[e+1];
               num[e+1]=aux;
            }


          // SE ESTABLECEN LOS VALORES MINIMOS Y MAXIMOS
          min=num[0]; //Se establece con el valor del primer indice para despues comparar si el indice siguiente es menor
          max=num[0]; //Se establece con el valor del primer indice para despues comparar si el indice siguiente es mayor
         for (i=1;i<=t-1;i++)
         {
         if (num<min)
            min=num;
         if (num>max)
            max=num;
            }

         // SE IMPRIME EL VECTOR CON LOS VALORES ORDENADOS
         for(i=0;i<t;i++) {
         printf("%f",num);
         printf("\n");
           }

         // CALCULAMOS LA MEDIA O EL PROMEDIO DE TODOS LOS ELEMENTOS DEL VECTOR
          float suma=0;
          float media=0;
          for(i=0;i<t;i++) {
          suma=suma+num;

         media=suma/t;}

         // CALCULAMOS LA MEDIANA DEL CONJUNTO DE VALORES
         float mediana=0;
         if(t%2==0)
         {
         t=t/2;
         mediana=(num[t]+num[t-1])/2;
         }
         else
         {
         t=(t-1)/2;
         mediana=num[t];
         }

         printf("La media es: %f  \n",media);
         printf("La mediana es: %f \n",mediana);
         printf("Minimo: %f, Maximo: %f \n",min,max);
         getch();


      }

El codigo no es muy avanzado, por que yo no se programar mucho en C.


« Última modificación: 20 Julio 2012, 19:21 pm por jfap45 » En línea

durasno


Desconectado Desconectado

Mensajes: 373


Ver Perfil
Re: Funciones en C, Ayuda!!
« Respuesta #1 en: 20 Julio 2012, 21:40 pm »

Hola! Tenes un error en la lectura del arreglo num. La forma correcta es:
Código
  1. scanf("%f", &num[t]);
tenes que indicar el subindice. Lo mismo para imprimir...


Basicamente podrias separar todo el programa en funciones. Te dejo una funcion:
Código
  1. llenarArreglo(num, t); // llamada de la funcion

Código
  1. void llenarArreglo(int num[], int t) // en la funcion
  2. {
  3.   // RELLENAMOS LAS POSICIONES DEL VECTOR
  4.      for (i=0;i<t;i++)
  5.      {
  6.         printf("Numero para el lugar %d del arreglo: ",i);
  7.         scanf("%f", &num[t]);
  8.      }
  9. }

Y asi podrias crear una funcion para todos los comentarios que tenes en mayusculas

Saludos


En línea

Ahorrate una pregunta, lee el man
jfap45

Desconectado Desconectado

Mensajes: 12


Ver Perfil
Re: Funciones en C, Ayuda!!
« Respuesta #2 en: 20 Julio 2012, 23:19 pm »

Muchas Gracias, una por lo del error al leer el vector y otra por lo de la funcion, creo q entendi, gracias de nuevo y saludos!!
En línea

jfap45

Desconectado Desconectado

Mensajes: 12


Ver Perfil
Re: Funciones en C, Ayuda!!
« Respuesta #3 en: 23 Julio 2012, 18:04 pm »

Ammm, perdon por las molestias otra vez,
resulta q segun yo hice mis funciones, pero no estan bien xq me marca muchos errores;
Código:
# include <conio.h>

# include <stdio.h>

void ordenar (float num[], int t)
{
int i,e;
float aux;
for (i=1;i<t;i++)
for (e=0; e<t-1;e++)
if (num[e]>num[e+1])
{
aux= num[e];      // la variable aux nos ayuda a cambiar de posicion los valores del vector
num[e]=num[e+1];
num[e+1]=aux;
}
}

float minmax (int i, int t, float num [], float min, float max)
{
 min=num[0]; //Se establece con el valor del primer indice para despues comparar si el indice siguiente es menor
 max=num[0]; //Se establece con el valor del primer indice para despues comparar si el indice siguiente es mayor
for (i=1;i<=t-1;i++)
{
if (num[i]<min)
min=num[i];
if (num[i]>max)
max=num[i];
}
 return min, max;
 }


/*imprimir (int i, int t, float num[])
{
for(i=0;i<t;i++) {
printf("%f",num[i]);
printf("\n"); }
return;

}
*/

float medianum (int i, int t, float num[], float suma, float media)
{

for(i=0;i<t;i++) {
suma=suma+num[i];

media=suma/t;}
return media;
}




float median ( int t, float num[], float mediana)
{
mediana=0;
if(t%2==0)
{
t=t/2;
mediana=(num[t]+num[t-1])/2;
}
else
{
t=(t-1)/2;
mediana=num[t];
}
return mediana;
}

void llenarArreglo(float num[], int t, int i)
{

for (i=0;i<t;i++)
{
printf("Numero para el lugar %d del arreglo: ",i);
scanf("%f", &num[t]);
}
}




main ()
{
int t,i=0;
float num[1], min=0, max=0, mediana=0, media=0;
clrscr();
 printf("Cual es el tamano del arreglo: ");
scanf("%f", &t);
num[t];

llenarArreglo(num, t, i);
ordenar(num, t);
minmax (min, max);
//imprimir ();
medianum (media);
median(mediana);


printf("La media es: %f  \n",media);
printf("La mediana es: %f \n",mediana);
printf("Minimo: %f, Maximo: %f \n",min,max);


getch();
return 0;
}

Me sale un error en algunas donde me dice q son muy pocos parametros los q uso para llamar la funcion, espero puedan ayudarme:
En línea

durasno


Desconectado Desconectado

Mensajes: 373


Ver Perfil
Re: Funciones en C, Ayuda!!
« Respuesta #4 en: 23 Julio 2012, 22:24 pm »

Hola! el error que te marca es simple, vos no podes declarar una funcion con 5 parametros y luego cuando llamas a esa funcion(en el main) solo le pasas 1 como haces con medianum()

Otra cosa q debes corregir es la declaracion float num[1]. Igual el tema mas importante que te falta es el concepto de "pasaje por valor y pseudoreferencia", el cual me parece mas conveniente explicarte cuando veas punteros.
Al no saber ese tema te recomiendo que declares funciones de este tipo:
Código
  1. (tipo) nombrefuncion(float num[], int tam);
Es decir funciones que reciben el arreglo, el tamaño del arreglo y retornen un resultado. Te dejo algunos ejemplos:
Código
  1. void llenarArreglo(float num[], int tam);
  2. void ordenar(float num[], int tam);
  3. int minimo(float num[], int tam);
  4. int maximo(float num[], int tam);
  5. float mediaNum(float num[], int tam);
  6. float median(float num[], int tam);


Saludos
En línea

Ahorrate una pregunta, lee el man
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Ayuda con funciones en VB6
Programación Visual Basic
maxinitto 3 6,572 Último mensaje 9 Febrero 2009, 01:40 am
por BlackZeroX
[C] Problema con Struct en funciones que llaman a otras funciones
Programación C/C++
‭lipman 9 23,980 Último mensaje 19 Mayo 2011, 23:39 pm
por Littlehorse
ayuda funciones!
Programación C/C++
;c1v!c 3 2,366 Último mensaje 1 Julio 2011, 20:28 pm
por ;c1v!c
Ayuda!! Problema con las funciones.
Programación C/C++
elkiy 4 2,467 Último mensaje 15 Junio 2012, 21:38 pm
por elkiy
Ayuda con funciones de shell en PHP
Desarrollo Web
ericksav22 2 1,946 Último mensaje 11 Enero 2013, 03:50 am
por ericksav22
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines