[ Foro de C++ ]

ARRAYS PARALELOS EN C++???

30-Nov-2010 20:32
oscar gomez
6 Respuestas

Hola profesor Nacho Cabanes,ante todo felicitarlo por este espacio que nos enseña tanto y por su tiempo para con nosotros, mil gracias.
Profesor tengo un lio con un ejercicio de arrays paralelos y queria pedirle su ayuda.
el problema es el siguiente:

La fábrica de cartón Ciudad de París desea obtener la información de sus n empleados del departamento de producción para poder determinar al empleado más sobresaliente del mes y darle un bono de productividad de $3000, Desarrollar un programa en C++ Utilizando arrays, que lea el nombre del empleado y las unidades producidas durante el mes y calcular el promedio de producción, total de días arriba del promedio, cantidad producida más alta y el día más productivo. Mostrar en pantalla el nombre del empleado, la producción por día, el promedio de producción, el total de días arriba del promedio, la cantidad producida más alta y el día más productivo.

 
#include <iostream.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
using namespace std;
 
main()
{
  string empleados[25];
  int prod_diaria[25][100];
  int n,dias_mes=30;
  int  sumaproduccionmes=0;
  int dias_mayor_al_promedio=0;
  float promedioproduccionmes;
 
 
  cout<<"ingree el numero de empleados: "<<endl;
  cin>>n;
 
    for(int i=0;i<n;i++)
      {
        cout<<"ingrese el nombre del empleado "<<i+1<<": ";
        cin>>empleados[i];
        cin.ignore();
 
            for(int j=0;j<dias_mes;j++)
            {
              cout <<"ingrese produccion dia"<<j+1<<": ";
              cin>>prod_diaria[i][j]; 
              suma=suma+prod_diaria[i][j]; 
              } 
            //esto me daria el pomedio para cada empleado verdad?
 
            promedio[i]=suma/dias_mes; 
          } ...
 


bien profesor aqui empieza mis problemas, pues no se como obtener por cada empleado el total de dias por encima de su promedio de produccion,pues no se donde iria la comparacion

 
if(prod_diaria[j]>promedio[i])
{
  dias_mayor_al_promedio=dias_mayor_al_promedio+1;
} 
 


pues promedio[i] esta fuera del for j, por favor orientame en que estoy haciendo mal o como seria mejor tratar el ejercicio claro utlizando arrays o matrices.

otra cosa profesor  intente para el vector de nombres definirlo como
char nom_empleados[20][25] para indicar un vector de 20 nombres con 25 caracteres cada nombre, sin embargo cuando intento hacerlo no me muestra en pantalla los nombres ingresados lectura
el ejemplo es el siguiente:

 
#include <iostream>
using namespace std;
int main()
{
    char empleados[25][30];
    int n;
 
        cout<<"ingree el numero de empleados: "<<endl;
        cin>>n;
 
        for(int i=0;i<n;i++)
        {
          cout<<endl<<"ingrese el nombre empleado "<<i+1<<": ";
          cin.getline(empleados[i],30);
          cin.ignore();
 
        }
 
        for(int i=0;i<n;i++)
        {
          cout<<" nombre del empleado "<<i+1<<": ";
          cout<<empleados[i]<<endl;
          }
 
      system("pause");
}
 


mil gracias por tu ayuda,disculpame si estoy cometiendo alguna barbaridad, pero se que si me ayudas podre lograrlo!!!


01-Dec-2010 23:30
Nacho Cabanes (+30)

Para la primera pregunta, fíjate que tú mismo dices "por encima de su promedio de produccion". Si quieres saber el promedio para cada empleado, necesitas un nuevo array, que guarde los datos correspondientes de cada uno.

Para la segunda pregunta, lo natural es C++ es usar "string" en vez de arrays de caracteres, así que... no te compliques.  ;-)


02-Dec-2010 09:46
oscar gomez

Mil gracias por tu ayuda, siempre me han servido tus recomendaciones.


02-Dec-2010 13:03
oscar gomez

Cordial saludo a todos, el ejercicio en cuestion ya le encontre la solucion agradeciendo la ayuda que me ha brindado nuestro profesor Nacho cabanes.
cualquier inquietud respecto al codigo escribirme a mi correo mil gracias.
(Correo no disponible)


02-Dec-2010 13:05
oscar gomez

este es un ejemplo de captura en ejecucion


02-Dec-2010 13:07
oscar gomez

este es el ejecutable


11-May-2011 17:35
oscar gomez

Cordial saludo profesor Nacho:

Profesor es que tengo un programa que hice y que me ejecuta perfectamente,sin embargo me esta funcionando solo para el primer nombre de un candidato( es decir capturo el nombre del candidato de la forma:  

 
cout<<"nombre del candidato "<<i+1<<": ";
cin>>nomcandidatos[i];)
 


bien, en otros programas he utilizado:

 
cin.ignore();
getline(cin,empleados[i]);
 


que me toma perfectamente nombres completos ( de mas de una palabra) intento hacerlo en el programa que te indico pero no me funciona ,quisiera me ayudaras a ver cual es el problema y que me ejecute correctamente, agradeciendo de antemano tu generosa ayuda.

te adjunto el programa para que lo puedas ejecutar y te des cuenta del error quiza mas facilmente y me ayudes a que  me ejecute correctamente.






(No se puede continuar esta discusión porque tiene más de dos meses de antigüedad. Si tienes dudas parecidas, abre un nuevo hilo.)