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.
#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;
}