Ayuda Con Problema en Dev-C++

Iniciado por JADP, 9 Octubre 2013, 18:54 PM

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

JADP

Buenos días, el algoritmo que quiero hacer es ingresar 6 números y que al final de ingresar los números me imprima los números que fueron mayores o iguales a 0 y menores o iguales a 9.  En el ejercicio que estoy haciendo estoy almacenando en un vector los números que cumplen con la condición, para al final imprimirlos, pero cuando ejecuto el programa e ingreso los números no me imprime algunos números que están repetidos.


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

using namespace std;

int numero, vect[10], a=0;

void uno()
{
for(int i=1;i<=10;i++)
{
cout<<"Ingrese el "<<i<<" numero : ";
cin>>numero;

if (numero>=0)
{
if (numero<=9)
{
vect[i] = numero;
a=a+1;
}
}
}

for(int i=1;i<=a;i++)
{
cout<<vect[i];
}
}

int main(int argc, char** argv) {
uno();
}


El programa esta hecho con la versión 5.5.1 de Dev - C++.

Agradezco Sus Ayudas.

ivancea96

En primer lugar, un error grave:
Código (cpp) [Seleccionar]
for(int i=1;i<=10;i++)
vect[i] = numero;

Un vector como ese, inicializado como "vect[10]": su primer elemnto es el 0, no el 1. Y el elemento 10 es el 9.

Segundo fallo:
Código (cpp) [Seleccionar]
vect[i] = numero;
a=a+1;
...
for(int i=1;i<=a;i++)

Ahi cada vez que consigues un número, aumentas 'a'. Luego recorres el vector por 'a' elementos (PD: aqui tienes el mismo fallo que comenté antes, sobre empezar por 0).
Ejemplo: Entrada del vector: {1,vacio,vacio,5,8,0,8,vacio,vacio,8}
'a' es igual a 6.
Salida: 1, vacio, vacio, 5, 8, 0. El resto no aparece.

Yo te recomendaría guardar TODA la entrada en el vector. La condición la pones cuando vayas a mostrar la salida.

JADP

Gracias por la ayuda ivancea96; hice las correcciones que tu dijiste pero todavía tengo un problema y agradecería que me ayudaras, cuando ingreso números repetidos que cumplen con la condición , al final, al imprimir todos los números que cumplieron con la condición y están almacenados en el vector, los imprime mal, imprime otros números o imprime el 0.



#include <iostream>

using namespace std;

int numero[10], vect[10], a;

void uno()
{
for(int i=0;i<10;i++)
{
cout<<"Ingrese el "<<i+1<<" numero : ";
cin>>numero[i];
}

for(int i=0;i<10;i++)
{
if (numero[i]>=0)
{
if (numero[i]<=9)
{
vect[i] = numero[i];
a=a+1;
}
}
}

cout<<endl;
for(int i=0;i<a;i++)
{
cout<<vect[i];
cout<<endl;
}
}

int main(int argc, char** argv) {
uno();
}

ivancea96

Cita de: JADP en 10 Octubre 2013, 00:42 AM
   
Código (cpp) [Seleccionar]

for(int i=0;i<a;i++)
{
cout<<vect[i];
cout<<endl;
}

Corregiste el error de los vectores, pero el fallo del algoritmo sigue ahí.

Lo que dije antes, 'a' guarda el numero de veces que se puso un numero bien. Pero sigues guardando en el vector cada numero en senda casilla. Deberías guardarlos todos seguidos. perdona si no me consigo expresar bien xD

Te propongo un código:
Código (cpp) [Seleccionar]
a=0;
for(int i=0;i<10;i++)
{
if (numero[i]<=9 && numero[i]>=0)
{
vect[a] = numero[i];
a++;
}
}


Lo hice así algo rápido ahora, pero pruébalo a ver.