Ir ao conteúdo
  • Cadastre-se

Erro em programa em C.


Posts recomendados

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);
}
 
}
 
Link para o comentário
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

Link para o comentário
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    }}
Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber 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...