Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: kayron8 en 31 Marzo 2013, 14:07 pm



Título: Nuevo problema
Publicado por: kayron8 en 31 Marzo 2013, 14:07 pm
Hola buenos días, pues aquí tengo otro ejercicio problemático, espero que me puedan ayudar (me aparece todo 0 de nuevo):

La práctica consiste en implementar una aplicación usando funciones.
El programa en C gestionará la realización de determinadas operaciones en un vector de enteros de MAX (6, per ejemplo) posiciones:
  • Introducción de todos los elementos del vector (Altas).
  • Visualización de todos los elementos (Listado).
  • Visualización del elemento que se encuentra en una determinada posición (Consulta por    
    Posición).
  • Visualizar la suma total de los elementos del vector (Suma)
  • Visualizar la media aritmética de los elementos del vector (Media)
  • Visualizar el valor máximo, mínima y la media (MaxMedMin)

Se requiere diseñar el programa de forma modular, de manera que cada función se encargue de manipular los datos de la forma apropiada.

Se nos exige que haya como mínimo les siguientes acciones y funciones:
  • Función InicializarVector  (todos los valores a 0)
  • Función VisualizarMenu
  • Función Listado
  • Función ConsultarPosicion
  • Función Suma
  • Función Media
  • Función MaxMedMin

El código que llevo por ahora es el siguiente (sé que está en catalán, es para no andar traduciéndolo y que la vaya liando por ahí en medio, aun y así creo que es entendible):
Código
  1. #include<stdio.h>
  2. #include<stdlib.h>
  3.  
  4. //Prototips
  5. void InicialitzarVector(int vector[],int gran);
  6. void VisualitzarMenu(int vector[],int gran);
  7. void ConsultarPosicio(int vector[],int gran);
  8. void Suma(int vector[],int suma);
  9. void Mitjana(int vector[],int gran);
  10. void MaxMitMin(int vector[],int gran);
  11.  
  12. //Bloc principal    
  13. int main(){
  14. int vector[6]={8,4,2,0,1,5},num=6;
  15.  
  16. InicialitzarVector(vector,num);
  17. VisualitzarMenu(vector,num);
  18. ConsultarPosicio(vector,num);
  19. Suma(vector,num);
  20. Mitjana(vector,num);
  21. MaxMitMin(vector,num);
  22.  
  23. system("pause");
  24. }
  25.  
  26. //Funcions
  27. //Inicialitzem el vector a 0
  28. void InicialitzarVector(int vector[],int gran){
  29. int i=0;
  30.  for(i=0;i<gran;i++)
  31.      vector[i]=0;  
  32. }
  33.  
  34. //Printem el menú
  35. //Llistem els elements del vector
  36. void VisualitzarMenu(int vector[],int gran){
  37. int i=0;
  38. printf("El vector conte els seguents elements: ");
  39. for(i=0;i<gran;i++)
  40.     printf("%d",vector[i]);  
  41. }
  42.  
  43. //Mostrem la posició del vector demanada
  44. void ConsultarPosicio(int vector[],int gran){
  45. int i=0;
  46. printf("\nIntrodueix la posicio que desitges comprovar: \n");
  47. scanf("%d",&i);
  48. printf("La posicio %d conte el valor %d \n",i,vector[i]);    
  49. }
  50.  
  51. //Suma de tots els elements del vector
  52. void Suma (int vector[],int gran){
  53. int i=0,suma=0;
  54.  for(i=0;i<gran;i++)
  55.      suma=suma+vector[i];
  56.    printf("La suma es: %d \n",suma);
  57. }
  58.  
  59. //Mitjana de tots els elements del vector
  60. void Mitjana (int vector[],int gran){
  61. int i=0,mitjana=0,suma=0;    
  62.   for(i=0;i<gran;i++){
  63.       suma=suma+vector[i];
  64.   }
  65.    mitjana= suma/i ;
  66.    printf("La mitjana es: %d \n",mitjana);      
  67. }
  68.  
  69. //Calculem el màxim, la mitjana i el màxim valor del vector
  70. void MaxMitMin (int vector[],int gran){    
  71. int i=0,mitjana=0,max=0,min=50;
  72.    for(i=0;i<gran;i++){
  73.      if (vector[i]>max)
  74.        max=vector[i];
  75.      else if (vector[i]<min)
  76.        min=vector[i];    
  77.    }
  78. printf("El maxim es: %d \n",max);
  79. printf("El minim es: %d \n",min);
  80. printf("La mitjana es: %d \n",mitjana);
  81. }

De nuevo, muchas gracias por su tiempo y ayuda :)


Título: Re: Nuevo problema
Publicado por: avesudra en 31 Marzo 2013, 14:12 pm
Me extraña que no te hayas dado cuenta, si ya has inicializado el vector con los valores que tú has querido, no hace falta llamar a la función InicialitzarVector ya que te vuelve a poner todos los elementos a 0 independientemente del valor que le hayas asignado, es como si hiciese esto:
Código
  1. int variable = 5;
  2. //Inicializar variable
  3. variable = 0;


Título: Re: Nuevo problema
Publicado por: kayron8 en 31 Marzo 2013, 14:16 pm
Claro ese es el problema que no logro entender del ejercicio, la primera función que se nos exige, es que pongamos todos los elementos del vector a 0.

Saludos :D


Título: Re: Nuevo problema
Publicado por: avesudra en 31 Marzo 2013, 14:21 pm
Pues eso pero después, tienes que introducir los elementos del vector tal y como dice en este punto:
    • Introducción de todos los elementos del vector (Altas).
Se les habrá olvidado ponerlo pero es que no tiene ninguna lógica, primero inicializas todos los elementos del vector a 0 , y después le pides al usuario que vaya introduciendo valores hasta completar el tamaño del vector.


Título: Re: Nuevo problema
Publicado por: kayron8 en 31 Marzo 2013, 14:34 pm
Bueno pues dejo la función comentada para que vea el profe que la tengo hecha pero que no tiene mucha lógica.

Gracias por todo :)


Título: Re: Nuevo problema
Publicado por: avesudra en 31 Marzo 2013, 15:01 pm
Bueno pues dejo la función comentada para que vea el profe que la tengo hecha pero que no tiene mucha lógica.

Gracias por todo :)
¡¡¡Pero tienes que introducir los elementos del vector!!! Haz esa función también y la pones detrás de la de inicializar todo a 0 así te quedas más tranquilo.


Título: Re: Nuevo problema
Publicado por: kayron8 en 31 Marzo 2013, 16:45 pm
Si hombre, si, tranquilo xD.
El caso es que ya hice esa función y me sale un error que no comprendo :S

Código
  1. #include<stdio.h>
  2. #include<stdlib.h>
  3.  
  4. //Prototips
  5. void InicialitzarVector(int vector[],int gran);
  6. void DemanaValors(int vector[],int gran);
  7. void VisualitzarMenu(int vector[],int gran);
  8. void ConsultarPosicio(int vector[],int gran);
  9. void Suma(int vector[],float suma);
  10. void Mitjana(int vector[],float gran);
  11. void MaxMitMin(int vector[],float gran);
  12.  
  13. //Bloc principal    
  14. int main(){
  15. int vector[6],num=6;
  16.  
  17. InicialitzarVector(vector,num);
  18. DemanaValors(vector,num);
  19. VisualitzarMenu(vector,num);
  20. ConsultarPosicio(vector,num);
  21. Suma(vector,num);
  22. Mitjana(vector,num);
  23. MaxMitMin(vector,num);
  24.  
  25. system("pause");
  26. }
  27.  
  28. //Funcions
  29. //Inicialitzem el vector a 0
  30. void InicialitzarVector(int vector[],int gran){
  31. int i=0;
  32.  for(i=0;i<gran;i++)
  33.      vector[i]=0;  
  34. }
  35.  
  36. //Demanem els elements del vector a l'usuari
  37. void DemanarValors(int vector[],int gran){
  38. int i=0;
  39. for (i=0;i<gran;i++){
  40. printf("Introdueix el valor %d: ",i+1);
  41.    scanf("%d",&vector[i]);
  42. }
  43.  
  44. //Printem el menú
  45. //Llistem els elements del vector
  46. void VisualitzarMenu(int vector[],int gran){
  47. int i=0;
  48. printf("El vector conte els seguents elements: ");
  49. for(i=0;i<gran;i++)
  50.     printf("%d",vector[i]);  
  51. }
  52.  
  53. //Mostrem la posició del vector demanada
  54. void ConsultarPosicio(int vector[],int gran){
  55. int i=0;
  56. printf("\nIntrodueix la posicio que desitges comprovar: \n");
  57. scanf("%d",&i);
  58. printf("La posicio %d conte el valor %d \n",i,vector[i]);    
  59. }
  60.  
  61. //Suma de tots els elements del vector
  62. void Suma(int vector[],float gran){
  63. int i=0;
  64. float suma=0;
  65.  for(i=0;i<gran;i++)
  66.      suma=suma+vector[i];
  67.    printf("La suma es: %.2f \n",suma);
  68. }
  69.  
  70. //Mitjana de tots els elements del vector
  71. void Mitjana(int vector[],float gran){
  72. int i=0;
  73. float mitjana=0,suma=0;    
  74.   for(i=0;i<gran;i++){
  75.       suma=suma+vector[i];
  76.   }
  77.    mitjana= suma/i ;
  78.    printf("La mitjana es: %.2f \n",mitjana);      
  79. }
  80.  
  81. //Calculem el màxim, la mitjana i el màxim valor del vector
  82. void MaxMitMin(int vector[],float gran){    
  83. int i=0;
  84. float mitjana=0,max=0,min=50;
  85.    for(i=0;i<gran;i++){
  86.      if (vector[i]>max)
  87.        max=vector[i];
  88.      else if (vector[i]<min)
  89.        min=vector[i];    
  90.    }
  91. }
  92. printf("El maxim es: %.2f \n",max);
  93. printf("La mitjana es: %.2f \n",mitjana);
  94. printf("El minim es: %.2f \n",min);
  95. }

El error que me aparece al compilarlo es:
In function 'DemanarValors': [Error] expected declaration or statement at end of input

Muchas gracias :D


Título: Re: Nuevo problema
Publicado por: kayron8 en 31 Marzo 2013, 17:16 pm
Si hombre, si, tranquilo xD.
El caso es que ya hice esa función y me sale un error que no comprendo :S

Código
  1. #include<stdio.h>
  2. #include<stdlib.h>
  3.  
  4. //Prototips
  5. void InicialitzarVector(int vector[],int gran);
  6. void DemanaValors(int vector[],int gran);
  7. void VisualitzarMenu(int vector[],int gran);
  8. void ConsultarPosicio(int vector[],int gran);
  9. void Suma(int vector[],float suma);
  10. void Mitjana(int vector[],float gran);
  11. void MaxMitMin(int vector[],float gran);
  12.  
  13. //Bloc principal    
  14. int main(){
  15. int vector[6],num=6;
  16.  
  17. InicialitzarVector(vector,num);
  18. DemanaValors(vector,num);
  19. VisualitzarMenu(vector,num);
  20. ConsultarPosicio(vector,num);
  21. Suma(vector,num);
  22. Mitjana(vector,num);
  23. MaxMitMin(vector,num);
  24.  
  25. system("pause");
  26. }
  27.  
  28. //Funcions
  29. //Inicialitzem el vector a 0
  30. void InicialitzarVector(int vector[],int gran){
  31. int i=0;
  32.  for(i=0;i<gran;i++)
  33.      vector[i]=0;  
  34. }
  35.  
  36. //Demanem els elements del vector a l'usuari
  37. void DemanarValors(int vector[],int gran){
  38. int i=0;
  39. for (i=0;i<gran;i++){
  40. printf("Introdueix el valor %d: ",i+1);
  41.    scanf("%d",&vector[i]);
  42. }
  43.  
  44. //Printem el menú
  45. //Llistem els elements del vector
  46. void VisualitzarMenu(int vector[],int gran){
  47. int i=0;
  48. printf("El vector conte els seguents elements: ");
  49. for(i=0;i<gran;i++)
  50.     printf("%d",vector[i]);  
  51. }
  52.  
  53. //Mostrem la posició del vector demanada
  54. void ConsultarPosicio(int vector[],int gran){
  55. int i=0;
  56. printf("\nIntrodueix la posicio que desitges comprovar: \n");
  57. scanf("%d",&i);
  58. printf("La posicio %d conte el valor %d \n",i,vector[i]);    
  59. }
  60.  
  61. //Suma de tots els elements del vector
  62. void Suma(int vector[],float gran){
  63. int i=0;
  64. float suma=0;
  65.  for(i=0;i<gran;i++)
  66.      suma=suma+vector[i];
  67.    printf("La suma es: %.2f \n",suma);
  68. }
  69.  
  70. //Mitjana de tots els elements del vector
  71. void Mitjana(int vector[],float gran){
  72. int i=0;
  73. float mitjana=0,suma=0;    
  74.   for(i=0;i<gran;i++){
  75.       suma=suma+vector[i];
  76.   }
  77.    mitjana= suma/i ;
  78.    printf("La mitjana es: %.2f \n",mitjana);      
  79. }
  80.  
  81. //Calculem el màxim, la mitjana i el màxim valor del vector
  82. void MaxMitMin(int vector[],float gran){    
  83. int i=0;
  84. float mitjana=0,max=0,min=50;
  85.    for(i=0;i<gran;i++){
  86.      if (vector[i]>max)
  87.        max=vector[i];
  88.      else if (vector[i]<min)
  89.        min=vector[i];    
  90.    }
  91. }
  92. printf("El maxim es: %.2f \n",max);
  93. printf("La mitjana es: %.2f \n",mitjana);
  94. printf("El minim es: %.2f \n",min);
  95. }

El error que me aparece al compilarlo es:
In function 'DemanarValors': [Error] expected declaration or statement at end of input

Muchas gracias :D

¡Ya lo arreglé!


Título: Re: Nuevo problema
Publicado por: avesudra en 31 Marzo 2013, 17:20 pm
Estoy tranquilo jajaja , bueno el error era que le faltaba la llave de cierre de la función que hay que decirlo por si alguien tiene el mismo problema y no lo ve  ;)

¡Un saludo!