Extraer datos tipo float de un arreglo a otro

Iniciado por leopaez, 10 Diciembre 2016, 12:33 PM

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

leopaez

Nuevamente, muy buenos días y muchas gracias a quienes hacen posible estos espacios, terminando mi trabajo se me presenta un nuevo inconveniente; deseo extraer de un arreglo tipo float a otro arreglo las notas menores que 3, el código compila bien, pero al ejecutarlo y querer visualizar los datos el nuevo arreglo no me muestra los datos de forma correcta, caso contrario me muestra un 1.56181e-038. Que no fue el numero que saque del otro arreglo.

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";
       auxiliarPerdieron = new float[numeroPerdieron];
       for(j = 0; j < numeroPerdieron; j++)
       
  {
          cout <<endl<<"******* Estudiantes que perdieron ********:"<<endl;
 
      cout << "Nota final: " <<auxiliarPerdieron[j]<<endl;
                   
        }
       
       
       
    }
   
   
   
       void promedioNotas()
{
   cout << "En construccion:"<<endl;
}


Tambien si me pueden colaborar no se como estraer las notas menores que 3 con sus respectivos estudiantes.

MAFUS

La línea 134 es la culpable. Vuelves a adquirir una zona de memoria para esa variable perdiendo la que tenía los datos cargados.

leopaez

Estas en lo cierto, Muchisimas gracias !!!!!!!!