Jump to content
  • 0
Alex Douglas

Alguém poderia me ajudar com esse programa em C? A questão é a seguinte :

Question

2. Dados três valores X, Y e Z, verifique se eles podem ser os comprimentos dos lados de um triângulo e, se forem, verifique se é um triângulo eqüilátero, isósceles ou escaleno. Se eles não formarem um triângulo, escreva uma mensagem. Considere que: a) o comprimento de cada lado de um triângulo é menor que a soma dos outros dois lados b) chama-se eqüilátero o triângulo que tem três lados iguais c) denomina-se isósceles o triângulo que tem o comprimento de dois lados iguais d) recebe o nome de escaleno o triângulo que tem os três lados diferentes.

 

 

O meu algoritmo é esse:

 

 

#include <stdio.h>


int main()

{


    /*O comprimento de um lado do triângulo é sempre menor do que a soma dos outros dois.
Eqüilátero > Todos lados iguais
Isósceles > Dois lados iguais
Escaleno > Todos os lados diferentes*/

 

    int l1, l2, l3, triangulo;
    printf("Digite o tamanho do primeiro lado do triangulo: ");
    scanf("%d",&l1);
    printf("Digite o tamanho do segundo lado do triangulo: ");
    scanf("%d",&l2);
    printf("Digite o tamanho do terceiro lado do triangulo: ");
    scanf("%d",&l3);
    printf("\n");
        
        if ((l1 < (l2 + l3)) && (l2 < (l1 + l3)) && (l3 < (l1 + l2)))
        {
            printf("E um triangulo\n");
            triangulo=1;
        }
        else
        {
            printf("Nao e um triangulo\n\n");
                triangulo=0;
        }
        
        if(triangulo==1)
        {
            if((l1==l2)&&(l2==l3))
            { 
                printf("Equilatero\n\n");
            }
            else        
                if(triangulo==1)
                {
                   if(  ((l1==l2)  &&  (l1||l2<!l3))  ||  ((l2==l3)  &&  (l2||l3<!l1)) || ((l3==l1)  &&  (l1||l3<!l2)) )
                    {
                    printf("Isoceles\n\n");
                    }
                }
                else 
                    if(triangulo==1)
                    {
                       if((l1<!l2) && (l1<!l3) && (l2<!l3))
                        {
                        printf("Escaleno");
                        }
                    }    
        }   
    system("pause");
    return 0;
}

                    O erro está aparecendo na última parte, a parte do triangulo escaleno. Eu executo tudo e não aparece nada na parte de escaleno. Eu executo e aparecem os dois primeiros triangulos mas quando eu tento fazer o escaleno não aparece nada. Alguém poderia me ajudar a corrigir esse erro? Porfavor. :'D É de uma lista de exercícios que tenho que terminar o mais rápido possível. kk desde já agradeço. :D

Share this post


Link to post
Share on other sites

1 answer to this question

Recommended Posts

  • 0

Eae champs blz?

 

Eu consegui arrumar seu código aqui, e tava bem tretinha msm ein kkk

Enfim, A principio achei que fosse a lógica que tivesse errada, tanto que no código troquei pra uma diferente, mas não funcionou. Em seguida inverti a posição das funções, coloquei o Isoceles por ultimo, e aí ele que parou de funcionar. Sendo assim, suspeitei que aquele monte de if else estivesse confundindo o compilador de alguma forma, então substitui alguns if else por um while que seria ativado caso o triangulo=1 e após a mensagem fosse igual a 0.
E deu certo, segue a parte que eu alterei.

if ((l1 < (l2 + l3)) && (l2 < (l1 + l3)) && (l3 < (l1 + l2)))
        {
            printf("E um triangulo\n");
            triangulo=1;
        }
        else
        {
            printf("Nao e um triangulo\n\n");
                triangulo=0;
        }
        
        while(triangulo==1)
        {
            if((l1==l2)&&(l2==l3))
            { 
                printf("Equilatero\n\n");
                triangulo=0;
            }
            else
                    if((l1 > l2 || l1 < l2) && (l1 > l3 || l1 < l3) && (l2 > l3 || l2 < l3))
                        {
                        printf("Escaleno\n\n");
                        triangulo=0;
                        }
               else        
                       if(  ((l1==l2)  &&  (l1||l2<!l3))  ||  ((l2==l3)  &&  (l2||l3<!l1)) || ((l3==l1)  &&  (l1||l3<!l2)) )
                   {
                        printf("Isoceles\n\n");
                        triangulo=0;
                        }
                   
                }

 Eu não testei a função escaleno com a sua logica, mas suponho que deva funcionar.
 

Abraços!

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Similar Content

    • By xenonPT
      ola gostava de saber se alguem sabe um video sem ser foto do pinterest que me ajudasse a melhor o meu esboço do corpo humano tanto masculino com feminino  com por exemplo formas geométricas 
      se tiverem outras dicas podem dar
    • By adolfo-moro
      Tenho um sistema feito em C# em Windows Form, gostaria de saber se tem algum jeito Do sistema abrir o navegador padrão do sistema Operacional, direcionar para meu site onde terá uma tela de login, a pessoa efetua o login e quando o mesmo for validado, o navegador fechar e voltar para o sistema com o valor do cookie gerado pelo site ou com um código do login, para efetuar posteriores operações por webservice.
      Não seria utilizando o WebBrowser
    • By frlopes
      Pessoal, boa tarde. 
       
      Estou com alguns probleminhas, se alguém puder me ajudar, agradeço imensamente!
      Tenho uma aplicação windows form em c# que tem um DataGridView, neste DataGridView tenho 2 colunas que são DataGridViewComboBoxColumn.
      O que eu espero que aconteça? Quando selecionado o valor de um, jogar o "Value" na coluna anterior. Enfim, Tentei com o código abaixo, porém, estou com alguns problemas:
       
      1 - Só consigo selecionar um item do grid, clicando 2 x no mesmo, a primeira vez que eu clico, não abre a lista de seleção, somente na segunda vez.
       
      2 - As vezes, retorna o valor "System.Data.DataRowView" na coluna anterior.
       
      3 - Os combos, coincidentemente, serão carregados com o mesmo valor, mas caso não fossem, como eu deveria fazer?
       
      4 - Existe uma forma de eu adicionar um item manualmente, por exemplo, como estão trazendo uma lista do banco de dados, supondo que eu traga "Santos", "São vicente", "Guarujá" e queira que o primeiro item seja "<selecione>", que não faz parte do banco de dados, não está no meu DataTable, como faço neste caso? 
       
       
      Obrigada, pessoal... 

       
       
      public FrmAlterarTipoAcomodacao() { InitializeComponent(); } TipoAcomodacao tipoAcomodacao = new TipoAcomodacao(); public void CarregarTipoAcomodacao() { DataTable dtbTipoAcomodacao = tipoAcomodacao.ListarTipoAcomodacao(); col1TipoAcomodacao.ValueMember = "TIS_TAC_CD_TIPO_ACOMODACAO"; col1TipoAcomodacao.DisplayMember = "TIS_TAC_DS_TIPO_ACOMODACAO"; col1TipoAcomodacao.DataSource = dtbTipoAcomodacao; col1TipoAcomodacaoAutorizada.ValueMember = "TIS_TAC_CD_TIPO_ACOMODACAO"; col1TipoAcomodacaoAutorizada.DisplayMember = "TIS_TAC_DS_TIPO_ACOMODACAO"; col1TipoAcomodacaoAutorizada.DataSource = dtbTipoAcomodacao; } private void FrmAlterarTipoAcomodacao_Load(object sender, EventArgs e) { dgvProfissional.Rows.Add(); dgvProfissional.Rows.Add(); dgvProfissional.Rows.Add(); dgvProfissional.Rows.Add(); CarregarTipoAcomodacao(); dgvProfissional.EditingControlShowing += new DataGridViewEditingControlShowingEventHandler(dgvProfissional_EditingControlShowing); } public FrmAlterarTipoAcomodacao() { InitializeComponent(); } TipoAcomodacao tipoAcomodacao = new TipoAcomodacao(); public void CarregarTipoAcomodacao() { DataTable dtbTipoAcomodacao = tipoAcomodacao.ListarTipoAcomodacao(); col1TipoAcomodacao.ValueMember = "TIS_TAC_CD_TIPO_ACOMODACAO"; col1TipoAcomodacao.DisplayMember = "TIS_TAC_DS_TIPO_ACOMODACAO"; col1TipoAcomodacao.DataSource = dtbTipoAcomodacao; col1TipoAcomodacaoAutorizada.ValueMember = "TIS_TAC_CD_TIPO_ACOMODACAO"; col1TipoAcomodacaoAutorizada.DisplayMember = "TIS_TAC_DS_TIPO_ACOMODACAO"; col1TipoAcomodacaoAutorizada.DataSource = dtbTipoAcomodacao; } private void FrmAlterarTipoAcomodacao_Load(object sender, EventArgs e) { dgvProfissional.Rows.Add(); dgvProfissional.Rows.Add(); dgvProfissional.Rows.Add(); dgvProfissional.Rows.Add(); CarregarTipoAcomodacao(); dgvProfissional.EditingControlShowing += new DataGridViewEditingControlShowingEventHandler(dgvProfissional_EditingControlShowing); } ComboBox combo; private void dgvProfissional_EditingControlShowing(object sender, DataGridViewEditingControlShowingEventArgs e) { ComboBox comboBox = e.Control as ComboBox; if (comboBox != null) { comboBox.SelectedIndexChanged -= new EventHandler(combo_SelectedIndexChanged); comboBox.SelectedIndexChanged += combo_SelectedIndexChanged; } } private void combo_SelectedIndexChanged(object sender, EventArgs e) { if ((sender as ComboBox).SelectedIndex > 0) { string selected = (sender as ComboBox).SelectedValue.ToString(); if (dgvProfissional.CurrentCell.ColumnIndex == 11) { dgvProfissional.Rows[dgvProfissional.CurrentRow.Index].Cells["col1CodigoTipoAcomodacao"].Value = selected; } if (dgvProfissional.CurrentCell.ColumnIndex == 18) { dgvProfissional.Rows[dgvProfissional.CurrentRow.Index].Cells["col1CodigoTipoAcomodacaoAutorizada"].Value = selected; } } }  

    • By Rui PG
      Boa tarde, Amigos!
      Por favor, alguém poderia me ajudar nessa questão, sou novo em desenvolvimento e estou a semanas tentando resolver esse problema.
      Desenvolvi um DataGrid emWPF preciso que quando o usuário clicar no "botão adicionar", gere automaticamente uma espécie de numeração sequencial no campo "followup", porém ao decorrer dos lançamentos dos dados no DataGrid, gere um numero sequencial ordenado do maior para o menor, ou seja, o último registro incluído no datagrid vai receber a última posição, conforme a prototipação da tela abaixo.
       
      Prototipação:

       
      XAML da Construção do DATAGRID:

       
      Código em C# do evento do botão adicionar, só falta colocar esse tipo de contador para o campo “follow-up”, na qual está destacado na figura:

       
      segue o código do botão adicionar onde tenho que programar essa auto numeração.
             public class JogaDadoNoGrid  
              {
                  public string bdgDtRegistro { get; set; }
                  public string bdgFollowup { get; set; }
                  public string bdgDtAgendamento { get; set; }
                  public string bdgHorario { get; set; }
                  public bool bdgVisitaRealizada { get; set; }
                  public bool bdgNaoRealizada { get; set; }
                  public bool bdgDesistiu { get; set; }
                  public string bdgMotivo { get; set; }
                  public string bdgObservacao { get; set; }
              }

              private void btnAddGrid_Click(object sender, RoutedEventArgs e)
              {
                JogaDadoNoGrid DadosTemporario = new JogaDadoNoGrid();

                  DadosTemporario.bdgDtRegistro = txtDataAtual.Text;
                  DadosTemporario.bdgFollowup = "AQUI QUE EU PRECISO GERAR O 1º, 2º, 3º ...."; 
                  DadosTemporario.bdgHorario = txtHorario.Text;
                  DadosTemporario.bdgDtAgendamento = txtDataAgendamento.Text;
                  DadosTemporario.bdgVisitaRealizada = chkVisitaRealizada.IsChecked.Value;
                  DadosTemporario.bdgNaoRealizada = chkNaoRealizada.IsChecked.Value;
                  DadosTemporario.bdgDesistiu = chkDesistiu.IsChecked.Value;
                  DadosTemporario.bdgMotivo = "Teste... Teste... Teste";
                  
                  DtgCadastroVisitantes.Items.Add(DadosTemporario);

                  txtDataAtual.Text = "";
                  txtDataAgendamento.Text = "";
                  txtHorario.Text = "";
                  chkDesistiu.IsChecked = false;
                  chkNaoRealizada.IsChecked = false;
                  chkVisitaRealizada.IsChecked = false;           
              }
       
       
       
      Agradeço aos amigos, pela ajuda.
       
    • By andre2654
      Boa tarde, eu preciso de ajuda de vocês, estou com um problema que é o seguinte, eu preciso que quando a pessoa clicar na lixeira, exclua essa linha do banco de dados, mas como posso fazer? perdoem a minha inexperiência, mas já busquei bastante a respeito e nada.
×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.