1. Este site usa cookies. Ao continuar a usar este site está a concordar com o nosso uso de cookies. Saber Mais.

visual c++

Discussão em 'Programação' iniciada por h0nda, 5 de Março de 2008. (Respostas: 3; Visualizações: 832)

  1. h0nda

    h0nda What is folding?

    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:
    [​IMG]

    CODIGO:
    Código:
    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 ; )
     
    Última edição: 5 de Março de 2008
  2. m00s

    m00s Power Member

    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!?
     
  3. h0nda

    h0nda What is folding?

    já está editado.

    sim estou, e está a dar. só existe aquele problema.
     
  4. 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.
     

Partilhar esta Página