Não use float para fazer contas, use double. Usar int para fazer contas também não funciona muito bem.
Dei uma corrigida no seu código (que estava quase certo). Pus uns comentários onde eu tive de ajeitar seu código.
#include<stdio.h>
#include<math.h>
int main(int argc, char *argv[]) // não use "main" sem retorno, use "int main()", ou melhor, "int main(int argc, char *argv[])
{
double a,b,c,d,x1,x2,D; // use double, não int, para fazer contas
printf("digite os valores dos coeficientes a,b e c.\n");
scanf("%lf",&a);
scanf("%lf",&b);
scanf("%lf",&c);
d=(b*b)-(4*a*c);
D=sqrt(d);
if(d>=0)
{
x1=((b*(-1))+D)/2*a;
x2=((b*(-1))-D)/2*a;
printf("as raizes são %4.2f e %4.2f",x1,x2);
}
return 0;
}
Eu acho bem melhor declarar a variavel no inicio do programa da um melhor senso de localização, apesar que eu não sei tb se é por que já se tornou um vicio seguir este “padrão”
Discordo. A variável deve ser declarada o mais próximo possível de onde for usada. Isso reduz o escopo e evita problemas.
A dica de reduzir o escopo é dada em vários livros, como Refatoração, do Martin Fowler. [/quote]
+1
Quanto menor o escopo para uma variável, há vantagens reais no C++:
O compilador pode gerar código muito melhor
Os destrutores podem ser chamados mais rápido, porque o escopo é menor, e isso vai acabar usando menos recursos da máquina.
No Java e no C# é mais ou menos a mesma coisa - use o menor escopo possível.
Declarar todas as variáveis no começo de um bloco era uma exigência da linguagem-mãe do C++ (a linguagem C), mas mesmo essa restrição está sendo considerado para ser eliminado na próxima versão do C (a última é C99).
Sinceramente, isso é novidade para mim!
Atualmente faço faculdade de Ciencia da Computação e os professores exigem
a declaração de variaveis no incio do código, ou melhor dizendo, aconselham isso.
Em relação ao escopo, isso tem lógica!
Se pensarmos em uma empresa, onde você trabalhasse,
facilitaria a manutenção ou compreenção do codigo pela equipe.
Abrimos uma outra discução interessante neste tópico!
haha…
[quote=diogofabri]Sinceramente, isso é novidade para mim!
Atualmente faço faculdade de Ciencia da Computação e os professores exigem
a declaração de variaveis no incio do código, ou melhor dizendo, aconselham isso.
Em relação ao escopo, isso tem lógica!
Se pensarmos em uma empresa, onde você trabalhasse,
facilitaria a manutenção ou compreenção do codigo pela equipe.
Abrimos uma outra discução interessante neste tópico!
haha…
[/quote]
Eu também fiz Ciência da Computação e os professores diziam a mesma coisa: declare as variáveis no início do código. Mas depois que me formei e fui fazer código para a vida real, percebi que isso é inútil e mais atrapalha que ajuda. Um exemplo é para fazer refatoração para extrair método, outro é para ler o código para fazer manutenção.
Enfim, não siga isso à risca. E aproveitando, esse mesmo professor vai te dizer para não usar break. Ignore essa recomendação, pois a opção estruturada costuma ser mais verbosa.
[quote=diogofabri]Sinceramente, isso é novidade para mim!
Atualmente faço faculdade de Ciencia da Computação e os professores exigem
a declaração de variaveis no incio do código, ou melhor dizendo, aconselham isso.
Em relação ao escopo, isso tem lógica!
Se pensarmos em uma empresa, onde você trabalhasse,
facilitaria a manutenção ou compreenção do codigo pela equipe.
Abrimos uma outra discução interessante neste tópico!
haha…
[/quote]
Isso é porque grande parte dos professores universitários não programam há anos, apenas dão aula. As linguagens mais antigas, como o C, te obrigam a fazer todas as declarações no início do código. Apesar das linguagens mais novas possibilitarem que as declarações sejam feitas em qualquer parte do código, esses professores já criaram a cultura de declarar no início, mesmo que não saibam porque orientam os alunos a fazerem o mesmo…
Alguns professores ensinam a declaração no início do método porque é mais didático. Não significa que depois que você começar a compreender o assunto, vai continuar fazendo isso. Mas, quem está aprendendo a programar tem muitas dificuldades, para ainda se incomodar com o escopo.
Particularmente, essa não seria a minha abordagem e, mesmo que fosse, não exigiria isso dos alunos que já manjam.
Mas, declarar as variáveis no menor escopo possível foi um recurso intencionalmente inserido no C++.
E não foi a toa.
Declarar a variável no início do método, em vez de no menor escopo possível:
É realmente mais didático;
Permite aquela comparação com uma “receita de bolo” que às vezes se faz quando se ensina programação estruturada.
Quem já seguiu uma receita de bolo (na vida real, na cozinha) sabe que é importante ter uma lista de ingredientes bem definida; às vezes você vê receitas menos estruturadas onde alguns dos ingredientes são supostos ou aparecem só no meio da receita, e isso é meio perturbador, porque você tem de ler a receita completa (em vez de só a lista de ingredientes) para poder ir ao mercado fazer as compras.
Mas como não trabalhamos com bolos, e sim com programas, eu prefiro usar o menor escopo possível.