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:
#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.
Hola! Tenes un error en la lectura del arreglo num. La forma correcta es:
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:
llenarArreglo(num, t); // llamada de la funcion
void llenarArreglo(int num[], int t) // en la funcion
{
// RELLENAMOS LAS POSICIONES DEL VECTOR
for (i=0;i<t;i++)
{
printf("Numero para el lugar %d del arreglo: ",i);
scanf("%f", &num[t]);
}
}
Y asi podrias crear una funcion para todos los comentarios que tenes en mayusculas
Saludos
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!!
Ammm, perdon por las molestias otra vez,
resulta q segun yo hice mis funciones, pero no estan bien xq me marca muchos errores;
# 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:
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:
(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:
void llenarArreglo(float num[], int tam);
void ordenar(float num[], int tam);
int minimo(float num[], int tam);
int maximo(float num[], int tam);
float mediaNum(float num[], int tam);
float median(float num[], int tam);
Saludos