Ir para conteúdo

POWERED BY:

Arquivado

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

roesler

Algoritmo basico

Recommended Posts

Saudações!

Sou novo por aqui e em algoritmos também.

Estou precisando de ajuda com o seguinte algoritmo, se alguém puder me ajudar.

O problema é que ele não volta pro laço, fica repetindo resultado sempre, alguém poderia

corrigir esse algoritmo para mim e falar onde está errado?

Uma duvida, Não sei se a melhor forma de eu testar se é quadrado ou retângulo é a melhor, se tiver uma melhor.

E outra, na parte de não ser retangulo nem quadrado, passar a diante sem fazer nada, não sei como fazer.

Desde ja, agraadeço!

 

/*22) Faça um algoritmo que lê quatro lados de um quadrilátero L1,L2,L3,L4 e escreve uma mensagem dizendo se é um quadrado ou um retângulo. Não precisa testar se oslados formam um quadrilátero. O programa encerra quando L1 for negativo. Se forquadrado calcular e imprimir a sua área, se for retângulo calcular e imprimir oseu perímetro. Caso não seja nenhum deles ignorar e ler os dados do próximo quadrilátero. Durante o processamento contar qual foi a quantidade de quadrados e a quantidade de retângulos e por fim exibir este resultado.Não pode usar vetores, uma vez que este eassunto ainda não foi visto. Usar apenas variáveis.*/#include <stdio.h>#include <conio.h>int L1,L2, // alturasL3,L4, // basescont, // acumulador para quadradoscont1; // acumulador para retangulosfloat area, perimetro; // area do quadrado e perimetro do retangulomain(){	  cont = 0;	  cont1 = 0;	  area = 0;	  perimetro = 0;	  	  printf("Digite o lado 1: ");	  scanf("%d",&L1);	  printf("\nDigite o lado 2: ");	  scanf("%d",&L2);	  printf("\nDigite o lado 3: ");	  scanf("%d",&L3);	  printf("\nDigite o lado 4: ");	  scanf("%d",&L4);				  while (L1 >= 0)	  {			if (L1 == L2 && L1 == L3 && L1 == L4)			   {				   cont = cont + 1;				   area = L1*L3;				   printf("\nQuadrado");				   printf("\nSua area e: %1f",area);			   }			if (L1 == L2 && L1 != L3 && L3 == L4)			   {				   cont1 = cont1 + 1;				   perimetro = L1 + L2 + L3 + L4;				   printf("\nRetangulo");				   printf("\nSeu perimetro e: %1f",perimetro);			   }			if (L1 != L2 && L1 != L3 && L1 != L4 && L2 != L3 && L2 != L4 && L3 != L4)			   {				   printf("\nTodos lados diferentes");			   }	  }	  printf("\nTotal de quadrados: %d",cont);	  printf("\nTotal de retangulos: %d",cont1);	  getch();}

Compartilhar este post


Link para o post
Compartilhar em outros sites

- Editado -

 

Consegui fazer, se alguém puder analizar e ver se está correto, pois preciso entregar amanhã de manhã.

O resultado segue abaixo:

 

/*22) Faça um algoritmo que lê quatro lados de um quadrilátero L1,L2,L3,L4 e escreve uma mensagem dizendo se é um quadrado ou um retângulo. Não precisa testar se oslados formam um quadrilátero. O programa encerra quando L1 for negativo. Se forquadrado calcular e imprimir a sua área, se for retângulo calcular e imprimir oseu perímetro. Caso não seja nenhum deles ignorar e ler os dados do próximo quadrilátero. Durante o processamento contar qual foi a quantidade de quadrados e a quantidade de retângulos e por fim exibir este resultado.Não pode usar vetores, uma vez que este eassunto ainda não foi visto. Usar apenas variáveis.*/#include <stdio.h>#include <conio.h>int L1,L2, // alturasL3,L4, // basescont, // acumulador para quadradoscont1; // acumulador para retangulosfloat area, perimetro; // area do quadrado e perimetro do retangulomain(){	  cont = 0;	  cont1 = 0;	  area = 0;	  perimetro = 0;	  printf("Lado 1: Altura 1");	  printf("\nLado 2: Altura 2");	  printf("\nLado 3: Base 1");	  printf("\nLado 4: Base 2");	  printf("\n----------------------------");	  printf("\nLado 1 negativo para fechar.");	  printf("\n----------------------------");	  printf("\n\nDigite o lado 1: ");	  scanf("%d",&L1);					   	  while (L1 >= 0)	  {	  			 printf("\nDigite o lado 2: ");			 scanf("%d",&L2);			 printf("\nDigite o lado 3: ");			 scanf("%d",&L3);			 printf("\nDigite o lado 4: ");			 scanf("%d",&L4);		  	  			 if (L1 == L2 && L1 == L3 && L1 == L4)			   {				   cont = cont + 1;				   area = L1*L3;				   printf("\n-------------------------------");				   printf("\nQuadrado, sua area e: %1f",area);				   printf("\n-------------------------------");			   }			if (L1 == L2 && L3 == L4 && L1 != L3 && L1 != L4 && L2 != L3 && L2 != L4)			   {				   cont1 = cont1 + 1;				   perimetro = L1 + L2 + L3 + L4;				   printf("\n-------------------------------------");				   printf("\nRetangulo, seu perimetro e: %1f",perimetro);				   printf("\n-------------------------------------");			   }			   	  printf("\n\n\nDigite o lado 1: ");	  scanf("%d",&L1);	  	  } // fim while	  	  printf("\n---------------------------");	  printf("\nTotal de quadrados: %d",cont);	  printf("\nTotal de retangulos: %d",cont1);	  getch();}

Compartilhar este post


Link para o post
Compartilhar em outros sites

o loop fica repetindo pq você nao colocou a condição final .

 

#include <stdio.h>#include <conio.h>void main (){int a,b,c,d,contqua,contret,perimetro;float area;contqua=0,contret=0;clrscr();printf("\ninforme os lados do poligono:");scanf("%d%d%d%d",&a,&b,&c,&d);while (a >= 0){if (a == b && a == c && a == d){printf("\nquadrado");contqua++;area=(a*c);printf("\narea do quadrado:%f",area);}else if (a == b && c == d && a != c && a != d && b != c && b != d){printf("\nretangulo");contret++;perimetro=(a+b+c+d);printf("\no perimetro do retangulo vale:%d",perimetro);}elseprintf("\nnao é quadrado nem retangulo pois os lados são diferentes");[i]printf("\ninforme os lados do poligono:");scanf("%d%d%d%d",&a,&b,&c,&d);[/i] //você esqueceu apenas de inserir essas duas linhas pra acabar o loop por isso que ele não termina} //aqui acaba o loopprintf("\nquantidade de quadrados:%d",contqua);printf("\nquantidade de retangulos:%d",contret);getch();}

agora execute esse programa que o loop não vai mais ficar repetindo a não ser q você não coloque a condição.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.