Metodo Burbuja Elementos repetidos

Iniciado por leopaez, 10 Diciembre 2016, 18:17 PM

0 Miembros y 1 Visitante están viendo este tema.

leopaez

Cordial saludo, por favor. Se tiene 2 arreglos uno para estudiantes y otro para notas, se desea organizar la información extrayendo los estudiantes junto con sus notas que perdieron la materia (notas <3). Se utiliza el metodo burbuja, el problema es cuando existen 2 notas con el mismo valor, en ese caso aparecerian no 2 veces sino 4 veces. Como se podria realizar ? De atemano muchas gracias.

Código (cpp) [Seleccionar]
#include <iostream>
#include <cstdlib>
#include <cstdio>
#include <cstring>


using namespace std;

void registrarDatos(); //Funcion para registrar los datos
void mostrarDatos(); //Funcion para mostrar los datos
void   estudiantesPerdieron(); //Funcion para mostrar los estudiantes que perdieron el curso
void promedioNotas();     //Funcion para imprimir el articuo de mayor valor y su valor

int opcion, i, j, n;     //Declaracion de variables
string *a=NULL;
float *b=NULL;
float *auxiliarPerdieron=NULL;
int numeroPerdieron;





int main()
{
system("color 3f"); //Asignación color de fondo
       system("CLS");       //Limpiar pantalla
                   
                   
       do     //realizar mientras sea diferente de 6
{
system("CLS");

cout<<"Programa que permite registrar N numero de estudiantes"<<endl;
cout<<"con su respectiva nota final, listar los que perdieron"<<endl;
cout<<"y sacar el promedio"<<endl<<endl;
cout<<endl<<"OPCIONES"<<endl; //Opciones
cout<<"1. REGISTRAR DATOS"<<endl;          
cout<<"2. LISTAR DATOS"<<endl;
cout<<"3. LISTA DE ESTUDIANTES QUE  PERDIERON EL CURSO"<<endl;
cout<<"4. PROMEDIO DE NOTAS DEL CURSO"<<endl;
cout<<"5. SALIR DEL PROGRAMA"<<endl<<endl;
cout<<"Digite la opcion ";
cin >>opcion;
while(opcion>=6) //Ciclo while opciones incorrectas
{
cout<<"INGRESE UN NUMERO VALIDO POR FAVOR ";
cin>>opcion;
   }

switch(opcion) //llamadas a funciones            
{
case 1:
system("cls"); //Limpiar pantalla
registrarDatos(); //llamada a funcion registrar datos
            break;
case 2:
system("cls"); //Limpiar pantalla
mostrarDatos(); //llamada a funcion mostrar datos
break;
case 3:
system("cls"); //Limpiar pantalla
estudiantesPerdieron(); //llamada a funcion estudiantes perdieron
            break;
case 4:
system("cls"); //Limpiar pantalla
promedioNotas();    //llamada a funcion promedio de notas
break;
case 5:
delete [] a;
system("cls");
exit(0);
   break;
}

cout<<endl;
system("pause");

}
while(opcion!=5);
}

   
void  registrarDatos()
{

cout << "Por favor ingrese la cantidad de estudiantes a registrar: "<<endl;
cin>>n;
a = new string[n];
b = new float[n];
for(i = 0; i < n; i++)
     
 {
         cout <<endl<<"******* Estudiante " << i + 1 << "********:"<<endl;
 cout << "Nombre: ";
         fflush(stdin);
         getline (cin, a[i]);
     cout << "Nota final: ";
     cin>>b[i];
                 
      }
}
   
 
void mostrarDatos ()
{  
cout << "La informacion de los estudiantes  registrados son los siguientes:"<<endl;
       for(i = 0; i < n; i++)
    {
         cout << "\n******* Estudiante " << i + 1 << "********:\n";
         cout << "Nombre:" <<a[i]<<endl;
         cout << "Nota final: " <<b[i]<<endl;
      }
       
   }
     
     
      void estudiantesPerdieron ()
{  
 
  cout << "La informacion de los estudiantes  que perdieron la materia son los siguientes:"<<endl;
      cout << "Los estudiantes registrados son: "<<n<<" ";
auxiliarPerdieron = new float[n];
numeroPerdieron=0;
       for(i = 0; i < n; i++)
    {
         if (b[i]<3)
         {
 auxiliarPerdieron[numeroPerdieron]=b[i];
 numeroPerdieron++;
 }
       
      }
      cout<<"perdieron "<<numeroPerdieron<<" estudiantes" <<endl;
      for (i=0; i<numeroPerdieron; i++)
                                 
  {
  for (j=0; j<n; j++)
 {
  if (auxiliarPerdieron[i]==b[j])
 {
 cout<<"Nombre "<<a[j]<<" Nota "<<b[j]<<" "<<endl;
 }
 }
 }
 
    }
 
 

      void promedioNotas()
{
  cout << "En construccion:"<<endl;
}