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

 

 


Tema destacado:


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

Desconectado Desconectado

Mensajes: 1



Ver Perfil
[?]Estructuras y funciones.
« en: 22 Junio 2015, 05:02 am »

Hola, soy nuevo y tengo un problema con este ejercicio para c++ que reza así :

Escribir un algoritmo que gestiona las notas de una clase de 4 alumnos de los cuales sabemos el nombre y la nota. El programa debe ser capaz de:
1.   Buscar un alumno.
2.   Modificar alguna nota.
3.   Realizar la media de todas las notas.
4.   Realizar la media de las notas menores de 5.
5.   Mostrar el alumno que mejores notas ha sacado.
6.   Mostrar el alumno que peores notas ha sacado.

Puede realizar todas la opciones del menú, excepto que cuando modifico una nota(opción 2), el promedio de la opción 3 y 4, no cambian,  estos siguen como si no se hubiese ejecutado la opción 2.
En La opción 5 y 6 por el contrario si toman en cuenta  la modificación de la opción 2.
Gracias de antemano  :rolleyes: .

 

Código:
#include<iostream.h>
#include<conio.h>
#include<string.h>
#define max 4

struct alumno
{
 char nom[15];
 float nota;
};

int menu()
{
    int op;
    cout<<endl;
    cout<<"\t------MENU------"<<endl;
    cout<<"\t[1]Buscar Alumno "<<endl;
    cout<<"\t[2]Modifica alguna nota "<<endl;
    cout<<"\t[3]Realizar la media de todas las notas "<<endl;
    cout<<"\t[4]Realizar la media de las notas menores de 05 "<<endl;
    cout<<"\t[5]Mostrar el alumno que mejor nota ha sacado "<<endl;
    cout<<"\t[6]Mostrar el alumno que peor nota ha sacado "<<endl<<endl;
    
    do{
    cout<<"Eliga una opcion : ";
    cin>>op;}while(op<1||op>6);
    
    return op;
    
}

void ingreso(alumno e[], int n)  
{    int i;

     for(i=1;i<=n;i++)
    {cout<<"Nombre del alumno "<<i<<" : ";
     fflush(stdin);
     gets(e[i].nom);
     do{
     cout<<"Nota "<<i<<" : ";
     cin>>e[i].nota;}while(e[i].nota<0||e[i].nota>20);
     }
    
  
}    


int busqueda(alumno e[], int n)    
{    int i,pos=0;
     char alu[max];
        
     cout<<"Ingrese el nombre del alumno en minuscula : ";
     fflush(stdin);
     gets(alu);
     for(i=1;i<=n;i++)
     {
     if(strcmp(e[i].nom,alu)==0)
        {pos=i;
         n=i;}
     }
 
   return pos;

}      

void mostrarbusqueda(alumno e[], int n)
{  int pos;

   pos=busqueda(e , n);
   cout<<"El alumno "<<e[pos].nom<<" esta en la posicion "<<pos<<" y tiene de nota "<<e[pos].nota;
 }

    
void modificar(alumno e[],int pos, int n)
{    int i;

     pos=busqueda(e, n);
     cout<<"Ingrese nota a modificar de tal alumno : ";
     cin>>e[pos].nota;
    
     for(i=1;i<=n;i++)
      {if(i==pos)
        {e[i].nota=e[pos].nota;
         break;}
      }

}    
            
float media(alumno e[],int &pos, int n)
{     int i;
      float suma=0,prom;
        
          
      for(i=1;i<=n;i++)
      {  suma=suma+e[i].nota;
      }
      
      prom=suma/n;
      
      return prom;
}      
        
float mediamenores(alumno e[], int n)
{     int a=0,i;
      float suma=0,prome;

      for(i=1;i<=n;i++)
      {
         if(e[i].nota<5)
        {suma=suma+e[i].nota;
         a=a+1;}
                              
      }
      
      prome=suma/a;
          
      return prome;
}          
        
void mostramejor(alumno e[], int n)
{
     int i,j,a,mayor=0;
    
    
     for(i=1;i<=n;i++)
     {a=0;
       for(j=1;j<=n;j++)
       { if(e[i].nota>=e[j].nota)
          {a=a+1;}
          else
          {a=a;}
       }
        
        if(a==n)
         {mayor=i;break;}
     }
    
cout<<a;    
cout<<"El alumno con la nota mas alta es " <<e[mayor].nom<<" con nota "<<e[mayor].nota;

}      
                      
void mostrapeor(alumno e[], int n)
{
     int i,j,b,menor;
    
    
     for(i=1;i<=n;i++)
     {b=0;
       for(j=1;j<=n;j++)
       { if(e[i].nota<=e[j].nota)
          {b=b+1;}  
                
          else
          {b=b;}
       }
        
        if(b==n)
         {menor=i;break;}
     }
    
cout<<b;    
cout<<"El alumno con la nota mas baja es " <<e[menor].nom<<" con nota "<<e[menor].nota;

}        
    
          
  int main()
{ alumno e[max];
    int op,pos,n;
    float pro,prome;
    n=max;
    
    ingreso(e,n);
    prome=mediamenores(e,n);
    pro=media(e,pos,n);
    
    
    
    do{system("cls");
    op=menu();          
    switch(op)
    {case 1 : mostrarbusqueda(e, n);getche();break;
     case 2 : modificar(e,pos,n);getche();break;
     case 3 : cout<<"El promedio de la clase : "<<pro;getche();break;
     case 4 : cout<<"El promedio de los alumnos con notas menor a 05 : "<<prome;getche();break;
     case 5 : mostramejor(e,n);getche();break;
     case 6 : mostrapeor(e,n);getche();break;
     }
     }while(op!=7);
     getche();
     return 0;
}
                    


« Última modificación: 22 Junio 2015, 05:19 am por Ultra Holocaust » En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
[C] Estructuras y punteros a funciones
Programación C/C++
Amadeo Magnus 1 6,074 Último mensaje 13 Octubre 2010, 15:05 pm
por Karman
Problema de Estructuras con Funciones « 1 2 »
Programación C/C++
diego-4 12 4,243 Último mensaje 10 Noviembre 2012, 18:46 pm
por diego-4
Array de estructuras + funciones
Programación C/C++
maikelowen 7 3,415 Último mensaje 4 Enero 2015, 02:25 am
por Yoel Alejandro
Problema con arreglos, estructuras y funciones
Programación C/C++
ody532 3 2,119 Último mensaje 21 Abril 2017, 10:43 am
por MAFUS
Ayuda en funciones en estructuras
Programación C/C++
Mozzard 7 1,800 Último mensaje 5 Enero 2019, 02:13 am
por Cero++
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines