Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Luiz Antônio 666

Problemas com o code blocks no Windows

Recommended Posts

Ola pessoal :D

sou novo no mundo da programação, estou começando a programar sozinho.

estou tentando executar o seguinte código no code blocks.

 

#include <stdio.h>

int main()
{
int p, a = 1;
float imc = 1;

printf ("Qual e seu peso.\n");
scanf ("a");
printf ("Qual e sua altura.\n");
scanf ("%d","b");
return 0;
}

 

o windows da um erro e ele para, minha duvida e o seguinte é o código que está errado ou o probema e no windows

ou code blocks ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá!

 

Sou inciante em C, além de que também estou aprendendo C por conta própria, mas como um hobby, mas acho que posso lhe ajudar . . .

 

Ao que parece o Problema é com o código mesmo . . .

 

Sem querer ser prepotente ou mesmo arrogante, mas é sempre bom você dar uma olhada nas mensagens de erro e/ou alerta que o compilador retornar e que são mostrados pela IDE, neste caso no codeblocks na parte de baixo, aqui foram retornados os seguintes alertas:

 

 

- na linha 9, eu não entendi muito bem o que aconteceu, porque aqui o Compilador e a IDE não apresentaram qualquer mensagem de erro ou alerta, talvez possa ser algum problema de configurá-los, mas estou certo que para o proposito do seu programa, essa linha está errada:

scanf ("a");

onde, correto seria:

scanf(“%f”, &a);

- os três alertas seguintes estão dizendo, que as variáveis “a” “p” “imc” foram declaradas mas não estão sendo usadas para nada ate o momento, no programa

|5|warning: unused variable ‘a’ [-Wunused-variable]|


|5|warning: unused variable ‘p’ [-Wunused-variable]|


|5|warning: unused variable ‘imc’ [-Wunused-variable]|

- os dois alertas seguintes estão relacionados ao uso incorreto do scanf() na linha 11:

scanf ("%d","b");

onde, o correto seria:

scanf("%f", &p );
|11|warning: writing into constant object (argument 2) [-Wformat=]|


|11|warning: format ‘%d’ expects argument of type ‘int *’, but argument 2 has type ‘char *’ [-Wformat=]|

- não sei qual o seu nível de conhecimento em C, além do mais quem sou eu para falar? Mas ao meu ver, no seu algoritmo você cometeu alguns equívocos com relação aos tipos declarados para as suas variáveis:

int p, a = 1;

float imc = 1;

O ideal seria, que todas as suas variáveis sejam do tipo, float:

float p, a, imc;

e se você quiser ( além de aconselhável ) iniciá-las com algum valor, principalmente para evitar problemas com lixo de memoria, você poderia depois de declará-las, iniciá-las assim:

float p,a,imc;


p = 0;

a = 0;

imc = 0;

ou mesmo iniciá-las depois de ter declarado as variáveis, e todas com o mesmo valor em comum:

float p, a, imc;


p = a = imc = 0;

sendo que acredito que o “ 1 ” que você usou, seja para iniciar as variáveis com algum valor para evitar o lixo de memoria ?!

 

O motivo para o tipo float neste caso, é o de que acredito que todos os valores vão ser do tipo ponto flutuante, ou seja, valores quebrados:

peso = 56.5


altura 1.70


imc = 20.2

Fora o que lhe falei acima, só está faltando o código referente ao calculo do imc que se não me engano deve ser:

imc = p / ( a * a )

e o printf() que irá exibir o resultado do imc . . .

 

 

Obs.: quando comecei a estudar C, sempre separava e iniciava as minhas variáveis de forma completamente separada:

float p = 0;

float a = 0;

float imc = 0;

Para mim foi e ainda é muito mais fácil para ver e administrar as diferentes variáveis desta forma, mas, claro que isso vai depender do gosto de cada pessoa!

 

 

Bom por hora é só . . .

 

 

Ubuntu 14.04 GCC 4.8 CodeBlocks 13.12

 

 

Espero Ter Ajudado ! ! !

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.