[C con Clase] Ayuda con Vectores

Davidson, Steven srd4121 en njit.edu
Jue Jun 13 19:29:43 CEST 2013


Hola Martín,

2013/6/13 Martín Melo Godínez <nitram-210397 en hotmail.com>

> Hola que tal quisiera ver si me podría ayudar en un problema de Vectores o
> Arreglos Undimensionales. Tengo un problema el cual me dice que almacene
> vector el numero de peso de n empleados. Como podrán ver el tamaño del
> vector será el numero que introduzca en el teclado, pero no se como
> declarar esa instrucción, Si alguien me podría corregir lo agradecería
> mucho:
>
>

Veamos el código fuente.

 #include<iostream.h>
> #include<conio.h>
> #include<stdio.h>
>

Deberías usar los nombres estándares de C++ para los ficheros estándares de
cabecera, que en este caso son:

#include <iostream>
#include <cstdio>

Tendrás que usar el espacio de nombre 'std'. Lo más sencillo es escribir:

using namespace std;

Por cierto, <conio.h> no es estándar.

Ahora bien, es posible que estés usando un compilador antiguo y lo que te
acabo de decir no funcione en tu compilador.

#define tam ne
>

Esto no tiene mucho sentido. Puedes eliminar esta directiva.

 void main()
>

El estándar de C++ dicta que 'main()' debe retornar un entero. Por
convenio, retornamos 0 (cero) para indicar una terminación correcta del
programa.

{
>  int ne,x;
>    int peso[ne];
>

Esto no es correcto. El valor para la cantidad máxima de elementos debe ser
constante.

Tienes dos opciones: o bien (1) indicas una cantidad máxima - y constante -
para el array pero usando una variable para representar la cantidad actual
de elementos, o bien (2) manejas memoria dinámicamente adjudicada para
crear un array dinámico.

    cout<<"Cuantos empleados son: "<<endl;
>    cin>>ne;
>    for(x=1;x<=tam;x++)
>

Como usas 'x' como índice para el array, debes empezar por 0 (cero), y por
tanto el índice del último elemento será 1 menos de la cantidad actual de
elementos.

En este ejemplo, reescribimos la cabecera del bucle 'for' así,

for( x=0; x<ne; x++ )

   {
>     cout<<"Da el peso del empleado "<<x<<endl;
>       cin>>peso[x];
>    }
>    for(x=1;x<=tam;x++)
>

Aquí, lo mismo; los índices siempre empiezan por cero.

   {
>     if(peso[x]<=80)
>       {
>        cout<<"El peso es menor o igual de 80 kg"<<endl;
>       }
>       else if(peso[x]>80)
>

No es un error, pero no tiene mucho sentido comprobar algo que sabemos que
es verdad. Si llegamos a la parte de 'else', entonces sabemos que la
condición de la primera sentencia, 'if', es falsa. Si algo no es ni menor
ni igual a 80, por lógica debe ser mayor a 80; no es necesario comprobar
este caso.

Simplemente, escribe 'else' y elimina esta segunda sentencia 'if'.

      {
>        cout<<"El peso del empleado "<<x<<" excede de 80 kg"<<endl;
>       }
>    }
>    getch();
> }
>
>


Espero que esto te oriente.

Steven
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.conclase.net/pipermail/cconclase_listas.conclase.net/attachments/20130613/0e6615a1/attachment.html>


Más información sobre la lista de distribución Cconclase