When I type 1 he doesn’t ask the questions dnv, and I can’t fix it

Asked

Viewed 40 times

0

When the user chooses to continue (option 1) not appearing to type the sides of the triangle again

#include <stdio.h>
#include <stdlib.h>

int main()
{   
    int x, y ,z, o;
    
    printf ("Informe o valor do primeiro lado: ");
    scanf ("%i", &x);
    printf ("Informe o valor do segundo lado: ");
    scanf ("%i", &y);
    printf ("Informe o valor do terceiro lado: ");
    scanf ("%i", &z);

    if ( x == y && x == z)
    {
        printf ("Esse é um triângulo EQUILÁTERO.");
    }
    else if ( x == y && x != z || x == z && x != y){
        printf ("Esse é um triângulo ISÓSCELES.");
    }
    else if ( x != y && x != z && y != z){
        printf ("Esse é um triângulo ESCALENO.");
    }
    
    while (o != 2){
        printf ("\nDigite 1 para CONTINUAR \nDigite 2 para SAIR");
        scanf ("%i", &o);
    }
    system ("pause");
}
  • 1

    What’s the matter?

  • When the user type 1 to continue, the options for him to enter the value of the triangle do not appear...

  • it’s hard I have no way to test

2 answers

0

Within the while no questions

while (o != 2){
   printf ("\nDigite 1 para CONTINUAR \nDigite 2 para SAIR");
   scanf ("%i", &o);
}

You have to put your 'type the sides of the triangle' within the while:

#include <stdio.h>
#include <stdlib.h>
 
int main(){
 
    int x, y ,z, o;
 
    while (o != 2){  /// ; verifica se continua
        printf ("Informe o valor do primeiro lado: ");
        scanf ("%i", &x);
        printf ("Informe o valor do segundo lado: ");
        scanf ("%i", &y);
        printf ("Informe o valor do terceiro lado: ");
        scanf ("%i", &z);
 
        if ( x == y && x == z){
            printf ("Esse é um triângulo EQUILÁTERO.");
        }
        else if ( (x == y && x != z) || (x == z && x != y) ){
            printf ("Esse é um triângulo ISÓSCELES.");
        }
        else
        if ( x != y && x != z && y != z){
            printf ("Esse é um triângulo ESCALENO.");
        }
        printf ("\nDigite 1 para CONTINUAR \nDigite 2 para SAIR");
        scanf ("%i", &o);

    } /// ; fim do loop
    system ("pause");
}

See the code working on repl it.

Now note that the while already starts by checking if he should enter the loop. As in his logic he has to enter the while at least 1 time a better option would be to use the do-while that makes this check at the end of the loop, see the code below:

#include <stdio.h>
#include <stdlib.h>
 
int main(){
 
    int x, y ,z, o;
 
    do{  /// ; inicio do loop
        printf ("Informe o valor do primeiro lado: ");
        scanf ("%i", &x);
        printf ("Informe o valor do segundo lado: ");
        scanf ("%i", &y);
        printf ("Informe o valor do terceiro lado: ");
        scanf ("%i", &z);
 
        if ( x == y && x == z){
            printf ("Esse é um triângulo EQUILÁTERO.");
        }
        else if ( (x == y && x != z) || (x == z && x != y) ){
            printf ("Esse é um triângulo ISÓSCELES.");
        }
        else
        if ( x != y && x != z && y != z){
            printf ("Esse é um triângulo ESCALENO.");
        }
        printf ("\nDigite 1 para CONTINUAR \nDigite 2 para SAIR");
        scanf ("%i", &o);

    }while (o != 2); /// ; verifica se continua
 
    system ("pause");
}

See the code working on repl it.

Reference: while, do-while()

0

Hello, for logic to work put everything inside a do{}while();

#include <stdio.h>
#include <stdlib.h>

int main(){

int x, y ,z, o;

do{
  printf ("Informe o valor do primeiro lado: ");
  scanf ("%i", &x);
  printf ("Informe o valor do segundo lado: ");
  scanf ("%i", &y);
  printf ("Informe o valor do terceiro lado: ");
  scanf ("%i", &z);
  if ( x == y && x == z){
    printf ("Esse é um triângulo EQUILÁTERO.");
  }
  else 
  if ( (x == y && x != z) || (x == z && x != y)){
   printf ("Esse é um triângulo ISÓSCELES.");
  }
  else
  if ( x != y && x != z && y != z){
   printf ("Esse é um triângulo ESCALENO.");
  }
  printf ("\nDigite 1 para CONTINUAR \nDigite 2 para SAIR");
  scanf ("%i", &o);
 } while (o != 2);
 system ("pause");
 }
  • don’t know where to use do{}while

  • In the postage code you have 1 example of use.

Browser other questions tagged

You are not signed in. Login or sign up in order to post.