loop

1. loop

lucas
ljparaujo

(usa Debian)

Enviado em 04/05/2015 - 14:05h

por favor ajudem
criei um algoritmo pra calcular o raio e o diametro de uma circunferencia o problema e que eu nao sei o por que que o loop que eu colouqei nao funciona pois no final o programa deve perguntar ao usuario se ele deseja continuar mas eu escolher sim o programa encerra aqui esta o algoritmo:
#include <stdio.h>
int main ()
{
float comprimento,raio,diametro;
char tecla,s,S;


while(tecla == s || tecla == S )
{

printf("\nCalculo do raio e do diametro da circunferencia\n");

printf("\nDigite o comprimento desejado : \n");

scanf("%f",&comprimento);

raio = comprimento/(3.14*2);

diametro = raio * 2;

printf("\nValor do raio : %.2f\nValor do diametro : %.2f\n",raio,diametro);

printf("Deseja continuar, [S,N] ? : ");

tecla = getchar();

scanf("%c",&tecla);

if(tecla != s || tecla != S)
{
break;
}

}

return 0;
agradeço de ane mao pela ajuda


  


2. Re: loop

thinomar
thinomar

(usa Linux Mint)

Enviado em 04/05/2015 - 15:00h

Cara, não entendi essa linha:
char tecla,s,S; 

Você não usa nenhuma variável s ou S. Pelo que entendi, você precisa dos dois como valores, não variáveis. Então atribua, no início, 's' a tecla e elimine as variáveis s e S. Em seguida, como s é char, coloque-o dentro de apóstrofos sempre que for usá-los em atribuições, laços ou condições. Outra questão: o problema real está nesse if, pois você fez algo meio confuso. Você disse que se tecla for diferente de s ou tecla for diferente de S, ele deveria parar, mas a questão é que S é diferente de s e vice-versa, então isso, creio eu, que causava a parada. Para resolver o problema, converti tecla para lower case e excluí S de tudo :). Além disso, deixei o while infinito, por que o if já faz a condicional, então não é necessário que o while também faça.
Ficou assim:
#include <stdio.h>
int main ()
{
float comprimento,raio,diametro;
char tecla='s';

while(1)
{
printf("\nCalculo do raio e do diametro da circunferencia\n");
printf("\nDigite o comprimento desejado : \n");
scanf("%f",&comprimento);
raio = comprimento/(3.14*2);
diametro = raio * 2;
printf("\nValor do raio : %.2f\nValor do diametro : %.2f\n",
raio,diametro);
printf("Deseja continuar, [S/N] ? : ");
tecla = getchar();
scanf("%c",&tecla);
tecla = tolower(tecla);

if(tecla != 's')
{
break;
}
}

return 0;
}

--
The flames warm my languid soul


3. obrigado

lucas
ljparaujo

(usa Debian)

Enviado em 04/05/2015 - 15:44h

muito obrigado cara funcionou mas como eu posso fazer esse loop sem usar o break e o if so o while
mas uma vez obrigado



4. Re: loop

thinomar
thinomar

(usa Linux Mint)

Enviado em 04/05/2015 - 18:03h

Se quer fazer sem o if, utilize, ao invés de apenas o while, a estrutura do while, onde ele irá primeiro fazer (do) e testar apenas no fim do bloco (while).

Fica assim:

#include <stdio.h>
int main ()
{
float comprimento,raio,diametro;
char tecla='s';

do
{
printf("\nCalculo do raio e do diametro da circunferencia\n");
printf("\nDigite o comprimento desejado : \n");
scanf("%f",&comprimento);
raio = comprimento/(3.14*2);
diametro = raio * 2;
printf("\nValor do raio : %.2f\nValor do diametro : %.2f\n",
raio,diametro);
printf("Deseja continuar? [S/N]: ");
tecla = getchar();
scanf("%c",&tecla);
tecla = tolower(tecla);

} while(tecla == 's');

return 0;
}

--
The flames warm my languid soul


5. Re: loop

thinomar
thinomar

(usa Linux Mint)

Enviado em 05/05/2015 - 12:14h

Se seu problema foi solucionado, marque o tópico como Resolvido :)
--
The flames warm my languid soul






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts