roesler 0 Denunciar post Postado Maio 22, 2007 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
roesler 0 Denunciar post Postado Maio 23, 2007 - 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
macro 0 Denunciar post Postado Maio 29, 2007 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