Ayuda con doble validacion

Iniciado por alvaritoCABJ, 29 Marzo 2012, 00:04 AM

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

alvaritoCABJ

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.

david_BS

#1
amigo tu código estaba algo desordenado porque ni compilaba, si tu problema era que la sumatoria de 1 entonces así está bien


#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;
}