Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: alvaritoCABJ en 29 Marzo 2012, 00:04 am



Título: Ayuda con doble validacion
Publicado por: alvaritoCABJ en 29 Marzo 2012, 00:04 am
Hola soy nuevo en el foro.
Estoy haciendo un programa, y tengo un pequeño problema:
El programa consiste de un vector de 11 elementos, al cual se le ingresan valores menores que 1. Entonces valido con while, que todo valor que se ingrese, debe ser menor que 1 o si no el programa vuelve a pedir ese elemento del vector LIQST. Hasta ahí funciona bien, después la siguiente validación consiste en que la sumatoria de los elementos del vector LIQST, debe ser igual a 1.
Esto funciona para distintas casos. Ejemplo:


LIQST[0]=0.2
LIQST[1]=0.2
LIQST[2]=0
LIQST[3]=0
LIQST[4]=0
LIQST[5]=0.2
LIQST[6]=0.2
LIQST[7]=0
LIQST[8]=0
LIQST[9]=0
LIQST[10]=0.2

Y el resto de combinaciones.
pero no me funciona para una en particular:

LIQST[0]=0.1
LIQST[1]=0.1
LIQST[2]=0.1
LIQST[3]=0.1
LIQST[4]=0.1
LIQST[5]=0.1
LIQST[6]=0.1
LIQST[7]=0.1
LIQST[8]=0.1
LIQST[9]=0.1
LIQST[10]=0.0

La sumatoria es igual a 1

Sin importar Donde se ponga el valor igual a 0, el programa no pasa cuando se le ingresan esos datos.
No se si sea el compilador que uso, u otra cosa. Por cierto uso Dev-C++
Aqui el programa
Citar
#include<iostream.h>
#include<string.h>
int main()
{float GASSEP[11],GASST[11],LIQST[11],M=0,V=0,c, PMA[11],SGC7,VM[11],D,SG,API,Densidades[11]={50.032,51.044,19.98,29.34,31.62,35.11,36.42,38.96,39.36,41.40,53.11};
short i,j,k,PM[11]={34,44,16,30,44,58,58,72,72,86};
char comp[11][15]={"CO2","H2S","C1","C2","C3","iC4","nC4","iC5","nC5","C6","C7+"};

cout<<"DATOS DEL STOK TANK\nComposicion liqido:\n";
do{for(i=0;i<=10;i++)
{cout<<comp<<"\t";
cin>>LIQST;
while(LIQST>1)
{cout<<comp<<"\t";
cin>>LIQST;}
while(LIQST>1);}
system ("cls");
c=0;
for(j=0;j<=10;j++)
c=c+LIQST[j];
cout<<"\n";}
while(c!=1);
system ("pause");
}

Si alguien me puede ayudar, agradeceria.


Título: Re: Ayuda con doble validacion
Publicado por: david_BS en 4 Abril 2012, 23:00 pm
amigo tu código estaba algo desordenado porque ni compilaba, si tu problema era que la sumatoria de 1 entonces así está bien

Código:
#include<iostream>
#include<string.h>
using namespace std;

int main()
{
float //GASSEP[11],
//GASST[11],
LIQST[11],
M=0,
V=0,
c,
//PMA[11],
//SGC7,
//VM[11],
//D,
//SG,
//API,
Densidades[11]={50.032f,51.044f,19.98f,29.34f,31.62f,35.11f,36.42f,38.96f,39.36f,41.40f,53.11f};

unsigned int i=0,j=0,k=0;
short PM[11]={34,44,16,30,44,58,58,72,72,86};

char comp[11][15]={"CO2","H2S","C1","C2","C3","iC4","nC4","iC5","nC5","C6","C7+"};

cout<<"DATOS DEL STOK TANK\nComposicion liqido:\n";

do{

for(i=0;i<=10;i++)
{
cout<< "comp: "<< comp[i]<<"\t";
fflush(stdin);
cin>>LIQST[i];
fflush(stdin);

while(LIQST[i]>=1)
{
system ("cls");
cout<<"DATOS DEL STOK TANK\nComposicion liqido:\n";
cout<< "comp: "<< comp[i]<<"\t";
fflush(stdin);
cin>>LIQST[i];
fflush(stdin);
}

//while(LIQST[i]>1);
}

//system ("cls");

c=0;
for(j=0;j<=10;j++)//sumatoria
c=c+LIQST[j];

cout<<"\n";
if(c==1)break;

system ("cls");
printf("La sumatoria no ha dado 0 !\n");

} while(1);//while(c!=1);

printf("Resultado: %f\n", c);
system ("pause");
return 0;
}