Ir ao conteúdo
  • Cadastre-se
Matheus Ribak

Erro em programa em C.

Recommended Posts

Olá, este programa funciona o principal dele que é somar, mas quando digito "s", continua somando. Alguem pode me dizer qual o erro? Obs: ele nao fica em loop, chega a um numero X e depois para. Obrigado. 

 

#include <stdio.h>
 
main ( ) {
 
float soma, num;
float opcao;
 
 
soma = 0;
 
 
for (opcao; opcao != 's' ; opcao++) { 
printf ("Informe o numero: \n");
scanf ("%f", &num);
soma = soma + num;
 
printf ("a soma é : \n %2.f", soma);
}
 
}
 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá tudo bem?!

 

Cara você esta querendo que o programa pare quando for digitado "S" ? se sim ficaria melhor colocar "n" de não.
Exemplo simples:

#include <stdio.h>int main() {	float a, b, total;	total = 0;	int i = 0;	Char condi = 'S';	while(condi == 'S') 	{		scanf("%d %d", a, ;		total = a + b;		printf("Deseja continuar?!");		scanf("%b", condi);			if(condi == 'N') 			break; //sair 		}}

Att

Compartilhar este post


Link para o post
Compartilhar em outros sites

@, tem vários pontos com problemas no seu código.

 

Primeiro, considerando o modo como a variável "opcao" está sendo usada ela deveria ser do tipo char não do tipo float.

 

Depois a variável "opcao" não está recebendo valor inicial algum, portanto ela iniciará o ciclo for com algum valor aleatório que estiver no espaço da memória que foi reservado para ela.

 

Do jeito que o código está o que ele faz é verificar se o valor atual da variável "opcao" é diferente do caractere 's', se não for igual ele prossegue para fazer a soma, e depois de fazer a soma ele adiciona 1 ao valor atual de "opcao" (me refiro a parte opcao++ do for), e então faz a verificação novamente pra ver se opcao ainda é diferente do caractere 's' e ver se deve continuar no ciclo. Mas note que como o valor inicial de "opcao" é algo aleatório que não sabemos o que é, o programa ficará somando 1 a este valor até que a condição " opcao != 's' " se torne falsa (o que só acontecerá por sorte quando o valor aleatório inicial for convenientemente numericamente menor que 's'), e é aí que o loop acaba.

 

Em momento algum o programa está tentando verificar se o usuário digita 's', a fim de parar o loop.

 

 

Aqui está o programa com as correções necessárias e comentários nas partes relevantes:

#include <stdio.h> main ( ) {    float soma, num;    char opcao;   //"opcao" é do tipo char    soma = 0;    opcao = 'n'            //Inicializa "opcao" com o valor 'n'    while (opcao != 's') {  //Modificado para while por conveniência        printf ("Informe o numero: \n");        scanf ("%f", &num);        soma = soma + num;        printf ("a soma é : \n %2.f", soma);        printf ("\nDeseja parar de somar? \n");        scanf ("%c", &opcao);   //Aqui o usuário pode digitar 's' para parar de somar    }}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora





Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações 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

×