Jump to content


Photo

Erro De Logica ?


  • Faça o login para participar
1 reply to this topic

#1 ejrsga

ejrsga

    Novato no fórum

  • Usuários
  • 11 posts
  • Sexo:Não informado
  • Localidade:Gama-DF
  • Interesses:programaçao lig C

Posted 17/12/2004, 00:20

Por favor !!!
eu nao manjo nada de logica e muito menos de C, mas to tentando apreender:
a ideia desse programa é apenas informar se os valores fornecidos pelo usuario sao variaveis de uma equaçao 2º grau, no caso positivo ele informa se existem raizes reais (duas diferentes ou iguais) ou nao. Só que mesmo quando a=0, ele calcula delta e informa que existem raizes. Eu sei que pra voces isso é moleza , por favor me ajudem !!!

#include<stdio.h>
#include<stdlib.h>
main()
{
float d,a,b,c;

printf("Equaçao do 2 grau entre com os valores\n a: ");
scanf("%f",&a);

if(a==0) // analisa se a=0
printf("\na nao pode ser igual a zero");// eu queria que ele parasse por aqui
// no caso de a=0

else
if(a!=0)
{

printf("\nagora b: ");
scanf("%f",&b);

printf("\ne por ultimo c: ");
scanf("%f",&c);

d=(b*b)-4*a*c;
printf("\ndelta = %f ",d);
}

if(d<0)
printf("\nnao existem raizes reais, delta menor que 0\n");

if(d==0)
printf("existem duas raizes reais e iguais!\n");

if(d>0)
printf("existem duas raizes reais e diferentes!\n");

system ("pause");
return(0);
}

Edição feita por: ejrsga, 19/12/2004, 23:07.

ELIAS JÚNIOR

CRUZEIRO : MURO DE CONCRETO, RUIM DE DERRUBAR !!!


Feliz Natal a todos!!!!
Que Cristo possa renascer no coraçao de todos nós,
e ai permanecer para sempre!!!!!

#2 HDc

HDc

    Turista

  • Usuários
  • 59 posts
  • Sexo:Não informado
  • Localidade:Rondonópolis-MT
  • Interesses:hard and soft, hckz,freeware..&lt;br&gt;casemoding

Posted 20/12/2004, 05:55

realmente muito simples de resolver.. o código correto é esse:

#include<stdio.h>
#include<stdlib.h>
main()
{
float d,a,b,c;

printf("Equaçao do 2 grau entre com os valores\n a: ");
scanf("%f",&a);

if(a==0) // analisa se a=0
printf("\na nao pode ser igual a zero");// eu queria que ele parasse por aqui
// no caso de a=0

else
if(a!=0)
{

printf("\nagora b: ");
scanf("%f",&B);

printf("\ne por ultimo c: ");
scanf("%f",&c);

d=(b*B)-4*a*c;
printf("\ndelta = %f ",d);


if(d<0)
printf("\nnao existem raizes reais, delta menor que 0\n");

if(d==0)
printf("existem duas raizes reais e iguais!\n");

if(d>0)
printf("existem duas raizes reais e diferentes!\n");
} //<<<<========================== local correto da alteracao
system ("pause");
return(0);
}


onde está a diferença.. vc fechou o IF, antes de percorrer todas as outras alternativas..

#include<stdio.h>
#include<stdlib.h>
main()
{
float d,a,b,c;

printf("Equaçao do 2 grau entre com os valores\n a: ");
scanf("%f",&a);

if(a==0) // analisa se a=0
printf("\na nao pode ser igual a zero");// eu queria que ele parasse por aqui
// no caso de a=0

else
if(a!=0)
{

printf("\nagora b: ");
scanf("%f",&B);

printf("\ne por ultimo c: ");
scanf("%f",&c);

d=(b*B)-4*a*c;
printf("\ndelta = %f ",d);
}//<<<<<======================== local errado pra fechar

if(d<0)
printf("\nnao existem raizes reais, delta menor que 0\n");

if(d==0)
printf("existem duas raizes reais e iguais!\n");

if(d>0)
printf("existem duas raizes reais e diferentes!\n");

system ("pause");
return(0);
}


isso resolve.. teh a proxima
Louve a Deus sobre todas as coisas, sob e sobre os montes e vales eu ergo o meu louvor..




1 user(s) are reading this topic

0 membro(s), 1 visitante(s) e 0 membros anônimo(s)

IPB Skin By Virteq