View Full Version : visual c++


h0nda
05-03-2008, 00:03
estou a fazer um pequeno programa no qual se calcula áreas e perímetros, mas estou com um problema

PROBLEMA:
quando eu selecciono área e perímetro, o programa só me dá o perímetro. quando selecciono os 3, só me dá a ultima opção.

INTERFACE:
http://img253.imageshack.us/img253/5932/imagem1ud6.png

CODIGO:

void CResolucaoDlg::OnButton2()
{
CString CS1, CS2;
CString CSresult;
double n1, n2, result;
float hip;
char str[20];

if (m_tri.GetCheck()==BST_CHECKED){
if (m_area.GetCheck()==BST_CHECKED){
m_comp.GetWindowText (CS1);
m_larg.GetWindowText (CS2);
n1 = atof (CS1);
n2 = atof (CS2);
result = n1 * n2;
_gcvt (result, 10, str);
CSresult = str;
m_result.SetWindowText (CSresult);
}

if (m_perim.GetCheck()==BST_CHECKED){
m_comp.GetWindowText (CS1);
m_larg.GetWindowText (CS2);
n1 = atof (CS1);
n2 = atof (CS2);
result = 2*n1 + 2*n2;
_gcvt (result, 10, str);
CSresult = str;
m_result.SetWindowText (CSresult);
}

if (m_hip.GetCheck()==BST_CHECKED){
m_comp.GetWindowText (CS1);
m_larg.GetWindowText (CS2);
n1 = atof (CS1);
n2 = atof (CS2);
result = sqrt((n1*n1)+(n2*n2));
_gcvt (result, 10, str);
CSresult = str;
m_result.SetWindowText (CSresult);
}
}
if (m_rect.GetCheck()==BST_CHECKED){
if (m_area.GetCheck()==BST_CHECKED){
m_comp.GetWindowText (CS1);
m_larg.GetWindowText (CS2);
n1 = atof (CS1);
n2 = atof (CS2);
result = n1 * n2 / 2;
_gcvt (result, 10, str);
CSresult = str;
m_result.SetWindowText (CSresult);


}
if (m_perim.GetCheck()==BST_CHECKED){
m_comp.GetWindowText (CS1);
m_larg.GetWindowText (CS2);
n1 = atof (CS1);
n2 = atof (CS2);
hip = sqrt((n1*n1)+(n2*n2));
result = n1 + n2 + hip;
_gcvt (result, 10, str);
CSresult = str;
m_result.SetWindowText (CSresult);
}
if (m_hip.GetCheck()==BST_CHECKED){
m_comp.GetWindowText (CS1);
m_larg.GetWindowText (CS2);
n1 = atof (CS1);
n2 = atof (CS2);
result = sqrt((n1*n1)+(n2*n2));
_gcvt (result, 10, str);
CSresult = str;
m_result.SetWindowText (CSresult);
}
}

}


gostava de ter uma ajudita.

Obrigado ; )

m00s
05-03-2008, 01:07
podias ter inserido o código com a formatação # ou ["code"]...[\"code"], assim mantinhas a identação para se visualizar correctamente o código


é impressão minha ou tas a usar a mesma string para o resultado!?

h0nda
05-03-2008, 13:53
já está editado.

sim estou, e está a dar. só existe aquele problema.

Manoo
05-03-2008, 14:22
Oi
Penso que o teu problema é enviares logo para m_result o resultado do cálculo. O que te acontece é que o programa vai colocando os valores uns em cima dos outros, pelo que apenas vês o ultimo calculado. Para veres o q te estou a dizer experimenta, em vez de colocares logo no m_result o valor do cálculo, fazê-lo aparecer, por exemplo, numa janela de mensagem. Só para veres q ele fez o cálculo, topas?
Boa sorte e vai dizendo alguma coisa.