Autor
|
Tema: Funciones en C, Ayuda!! (Leído 2,259 veces)
|
jfap45
Desconectado
Mensajes: 12
|
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.
|
|
« Última modificación: 20 Julio 2012, 19:21 pm por jfap45 »
|
En línea
|
|
|
|
durasno
Desconectado
Mensajes: 373
|
Hola! Tenes un error en la lectura del arreglo num. La forma correcta es:
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 ); } }
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
Mensajes: 12
|
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
Mensajes: 12
|
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:
|
|
|
En línea
|
|
|
|
durasno
Desconectado
Mensajes: 373
|
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
|
|
|
En línea
|
Ahorrate una pregunta, lee el man
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
Ayuda con funciones en VB6
Programación Visual Basic
|
maxinitto
|
3
|
6,572
|
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
|
19 Mayo 2011, 23:39 pm
por Littlehorse
|
|
|
ayuda funciones!
Programación C/C++
|
;c1v!c
|
3
|
2,366
|
1 Julio 2011, 20:28 pm
por ;c1v!c
|
|
|
Ayuda!! Problema con las funciones.
Programación C/C++
|
elkiy
|
4
|
2,467
|
15 Junio 2012, 21:38 pm
por elkiy
|
|
|
Ayuda con funciones de shell en PHP
Desarrollo Web
|
ericksav22
|
2
|
1,946
|
11 Enero 2013, 03:50 am
por ericksav22
|
|