Ir ao conteúdo

Ajuda no C++


leandrocorreap

Posts recomendados

Postado

Bom dia pessoal.

Estou com algumas duvidas com um codigo, precisa de alguns comandos mas nao sei como fazer, se alguem puder ajudar, eu agradeço... é o seguinte:

1 - Preciso de um comando que ao digitar um numero que seja diferente das opções que tenho no programa, ele retorne para que o valor seja digitado novamente.


printf ("Digite 1 para area do Quadrado\n");
printf ("Digite 2 para area do Circulo\n");
printf ("Digite 3 para area do Triangulo\n");

scanf("%d", &opcao);

2 - Esse programa calcula a area do quadrado, circulo e triangulo, então, ao escolher uma opção, digitar os valores e achar o resultado gostaria que tivesse uma opção de sair ou voltar a escolher as opções:


printf ("Digite 1 para area do Quadrado\n");
printf ("Digite 2 para area do Circulo\n");
printf ("Digite 3 para area do Triangulo\n");

Segue o codigo completo:

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

int main(int argc, char *argv[]) {

int opcao;
float Lado_C, Lado_A, Lado_B, lado_A, lado_B, lado_C, raio, area, altura, perimetro;

Lado_A=0.0;
Lado_B=0.0;
Lado_C=0.0;
lado_A=0.0;
lado_B=0.0;
lado_C=0.0;
raio=0.0;
area=0.0;
altura=0.0;
perimetro=0.0;


printf ("Digite 1 para area do Quadrado\n");
printf ("Digite 2 para area do Circulo\n");
printf ("Digite 3 para area do Triangulo\n");

scanf("%d", &opcao);

if (opcao == 1) {
printf("Digite o lado A \t");
scanf("%f", &Lado_A);
printf("Digite o lado B \t");
scanf("%f",&Lado_;
area=Lado_A*Lado_B;
printf(" Area do quadrado = %f \n", area);


} else if (opcao == 2) {
printf("Digite o raio \t");
scanf("%f", &raio);
area=3.1415*raio*raio;
printf(" Area do circulo = %f \n", area);

} else if (opcao == 3) {
printf("Digite o lado A \t");
scanf("%f", &lado_A);
printf("Digite o lado B \t");
scanf("%f", &lado_;
printf("Digite o lado C \t");
scanf("%f", &lado_C);
}if ((lado_A < lado_B + lado_C) && (lado_B < lado_A + lado_C) && (lado_C < lado_A + lado_) {

if((lado_A == lado_ && (lado_B == lado_C)){
altura= lado_A*sqrt(3)/2;
area=altura*lado_A/2;
printf(" Area do triangulo = %f \n", area);
}
else if ((lado_A == lado_ || (lado_A == lado_C) || (lado_B == lado_C)){
if(lado_A == lado_{
altura=sqrt(pow(lado_A,2) - pow(lado_C,2) / 4);
area = (lado_C*altura) / 2;
printf("Area do triangulo = %f.\n",area);
}
else if (lado_A == lado_C){
altura=sqrt(pow(lado_A,2) - pow(lado_B,2) / 4);
area = (lado_B*altura) / 2;
printf("Area do triangulo = %f.\n",area);
}
else if (lado_B == lado_C){
altura = sqrt(pow(lado_B,2) - pow(lado_A,2) / 4);
area = (lado_A*altura) / 2;
printf("Area do triangulo = %f.\n",area);
}
else {
perimetro = lado_A + lado_B + lado_C;
altura = sqrt(perimetro*(perimetro - lado_A)*(perimetro - lado_*(perimetro - lado_C));
area = altura;
printf("Area do triangulo = %f.\n",area);
}





}


system("PAUSE");
}
return 0;}


[B]3[/B] - quando escolho a opção triangulo, existe uma condiçao para que ele seja de fato um triangulo (em negrito):

printf("Digite o lado A \t");
scanf("%f", &lado_A);
printf("Digite o lado B \t");
scanf("%f", &lado_;
printf("Digite o lado C \t");
scanf("%f", &lado_C);
}[B]if ((lado_A < lado_B + lado_C) && (lado_B < lado_A + lado_C) && (lado_C < lado_A + lado_) [/B]

Se os valores nao corresponderem a um triangulo, o programa volta um printf e pedi novamente os lados, como faço isso?

Valeu galera.

Postado

printf("Operador escolhido: %c\n", op);
switch(op)
{
case '1':
printf ("Digite 1 para area do Quadrado\n");
break;

case '2':
printf ("Digite 2 para area do Circulo\n");
break;

case '3':
printf ("Digite 3 para area do Triangulo\n");
break;


agora mete as formulas de calculo.

Postado

Você deve usar um loop para isso.

No código abaixo usei um loop infinito, que termina (break) apenas quando a = -1. Caso contrário volta a solicitar os valores de a e b.


#include <stdio.h>

int main(void){
int a, b;

printf("\nPara sair a = -1\n");
while(1){
printf("Entre com o valor de a: ");
scanf(" %d", &a);

if(a == -1)
break;

printf("Entre com o valor de b: ");
scanf(" %d", &;
printf("\n a + b = %d\n", (a + );
}
return 0;
}

Postado

Entendi como ficaria, porém, pelas especificações do trabalho, não posso usar switch...

Mas valeu pela dica, me ajudara futuramente.

Você deve usar um loop para isso.

No código abaixo usei um loop infinito, que termina (break) apenas quando a = -1. Caso contrário volta a solicitar os valores de a e b.


#include <stdio.h>

int main(void){
int a, b;

printf("\nPara sair a = -1\n");
while(1){
printf("Entre com o valor de a: ");
scanf(" %d", &a);

if(a == -1)
break;

printf("Entre com o valor de b: ");
scanf(" %d", &;
printf("\n a + b = %d\n", (a + );
}
return 0;
}

Olliver, como não conheço bem o programa, fiquei um pouco na duvida.

Caso eu coloque assim funcionaria?:

printf ("Digite 1 para area do Quadrado\n");

printf ("Digite 2 para area do Circulo\n");

printf ("Digite 3 para area do Triangulo\n");

scanf("%d", &opcao);

if (opcao == 1) || (opcao == 2) || (opcao == 3) {

codigo

}

else

break;

Se eu digitar um valor diferente de 1, 2 ou 3 ele volta a pedir o valor. Isso falando das opções, no inicio do programa.

Caso eu escolha um tipo (quadrado, circulo ou triangulo) e após digitar os valores e receber o resultado eu queira voltar a escolher um outro tipo (quadrado, circulo ou triangulo) ou sair do programa, eu usaria esse codigo que passou?

Adaptando:

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

int main(int argc, char *argv[]) {

int opcao, saida;
float Lado_C, Lado_A, Lado_B, lado_A, lado_B, lado_C, raio, area, altura, perimetro;

printf ("Digite 1 para area do Quadrado\n");
printf ("Digite 2 para area do Circulo\n");
printf ("Digite 3 para area do Triangulo\n");

scanf("%d", &opcao);

if (opcao == 1) || (opcao == 2) || (opcao == 3) {
[B]codigo[/B] {
printf("\n Digite 1 para voltar ou qualquer tecla para sair: \n");
scanf(" %d", &saida);
if (saida == 1){
break;}
return 0;

}
else
break;

}

Parece ****** eu perguntar assim, mas é que estou no trabalho e aqui eu tenho um MAC que não tenho o Dev C++ instalado, só vou testar em casa.


printf("Operador escolhido: %c\n", op);
switch(op)
{
case '1':
printf ("Digite 1 para area do Quadrado\n");
break;

case '2':
printf ("Digite 2 para area do Circulo\n");
break;

case '3':
printf ("Digite 3 para area do Triangulo\n");
break;


agora mete as formulas de calculo.

Valeu cara, mas pela especificação do trabalho eu não posso usar switch..

Obrigado pela atençao..

Postado

Você pode fazer dessa forma


int opcao;

do{
printf ("Digite 1 para area do Quadrado\n");
printf ("Digite 2 para area do Circulo\n");
printf ("Digite 3 para area do Triangulo\n");
scanf("%d", &opcao);

}while(!(opcao >= 1 && opcao <= 3));

Ou seja, enquanto opção não for >= 1 e <= 3, o loop continua

Postado
Você pode fazer dessa forma


int opcao;

do{
printf ("Digite 1 para area do Quadrado\n");
printf ("Digite 2 para area do Circulo\n");
printf ("Digite 3 para area do Triangulo\n");
scanf("%d", &opcao);

}while(!(opcao >= 1 && opcao <= 3));

Ou seja, enquanto opção não for >= 1 e <= 3, o loop continua

Boa.

Vou testar em casa.

Tomara que funcione..

Muito obrigado.

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...