O que estou errando

1. O que estou errando

renan
renanpk

(usa Outra)

Enviado em 21/10/2014 - 23:56h

olá galera, eu tenho que fazer um programa para converter decimal para binario usando apenas a biblioteca stdio e math, me ajudem! onde eu estou errando!
#include <math.h>
#include <stdio.h>

main(){
int vetor[8];
int n, r, i;
printf ("Digite um numero para converter\n");
scanf ("%d", &n);
for (i = 8; i == 0; i--){
r = n%2;
r = vetor[i];
printf ("O número é %d", vetor [i]);
}
return 0;
}


  


2. Re: O que estou errando

Paulo
paulo1205

(usa Ubuntu)

Enviado em 22/10/2014 - 03:35h

Por favor, edite sua postagem original e coloque a transcrição do código do programa entre as tags[code]” e “[/code]”. Vai facilitar a leitura e evitar confusões de formatação, uma vez que o fórum usa “[i]” como marcador de texto em caracteres itálicos.

Para o seu programa, não será necessário usar <math.h>.

Um dos erros do programa está na linha com o for. Você deve lembrar que o laço com for executa _enquanto_ a condição de controle for verdadeira. Como você inicializou i com o valor oito, sua comparação i==0 vai ser falsa logo de cara, e programa não vai entrar no laço de repetição nem mesmo uma vez.

Não entendi o papel de vetor. Você parece nunca escrever nele, mas exibe-o como resultado do programa. Ou você se equivocou na transcrição, ou fez mesmo alguma coisa errada, que tem de rever.

Parece, ainda, que falta algum pedaço do código. Você deveria fazer algum deslocamento, ou levando o valor de n até zero, ou comparando o valor lido com potências diferentes da base 2. Nem uma coisa nem outra estão presentes no seu código.

Você está com a impressão do resultado da conversão dentro do laço que a realiza. Acho, até pela mensagem que precede a exibição do valor, que você não está interessado em resultados parciais. Assim, a impressão deveria estar após o término do laço.

A função main() deve retornar um valor inteiro. Você não esqueceu do return 0;, o que é bom, mas deixou de explicitar o tipo de retorno na definição da função, o que é uma prática obsoleta, segundo o padrão do C de 1989 (as versões do padrão de 1999 e 2011 reforçam essa obsolescência, podendo até recusar seu código).

Mais ainda sobre main(): o padrão determina que, numa implementação self-hosting (que é o caso dos nossos PCs), você deve declará-la explicitamente sem receber argumento algum, ou recebendo exatamente dois argumentos, sendo um inteiro e um ponteiro de ponteiro de caracteres (ver abaixo). Do jeito como você fez, sem colocar qualquer especificação de parâmetros entre parênteses, a função poderia receber qualquer quantidade de quaisquer tipos de argumentos, abrindo espaço para (ab)usos que violam o padrão.

/*
Quando main() não recebe argumentos do ambiente de execução
(ou você não tem interesse em tratá-los).
*/
int main(void)


/*
Quando main() recebe do ambiente de execução uma lista de
argumentos, que são apresentados à função como strings de
texto.

A quantidade de argumentos é colocada no parâmetro inteiro
'argc', e 'argv' se comporta como um vetor de strings com
argc+1 elementos. Por convenção, o nome usado para invocar
o programa é considerado um argumento e é colocado em
'argv[0]'. Os demais argumentos, que vão de 'argv[1]' até
'argv[argc-1]', são os aqueles que o programa deve processar.
Por fim, 'argv[argc]' é um ponteiro nulo, e serve como mar-
cador do final da lista de argumentos.
*/
int main(int argc, char **argv)



3. tira duvida

Thiago
thiagovasconcelo

(usa Ubuntu)

Enviado em 26/10/2014 - 01:37h

1º dentro do for, a variável 'i' inicia-se com o valor 7 e não '8', o seu vetor tem indices que vão de '0' até '7'.
2º vc esta atribuindo dois valores a variavel 'r', ao invés de vc colocar r = vetor, coloque vetor = r.

espero ter ajudado, abraços


4. Re: O que estou errando

Paulo
paulo1205

(usa Ubuntu)

Enviado em 27/10/2014 - 09:24h

thiagovasconcelo escreveu:

1º dentro do for, a variável 'i' inicia-se com o valor 7 e não '8', o seu vetor tem indices que vão de '0' até '7'.


Você diz "inicia-se com o valor 7" porque pensa que realmente se inicia com esse valor, ou porque esse _deveria ser_ o valor inicial usado pelo nosso colega? Se for o primeiro caso, você está errado.

2º vc esta atribuindo dois valores a variavel 'r', ao invés de vc colocar r = vetor, coloque vetor = r.


Na verdade, ele quis dizer "vetor[i]" (ou melhor: ele disse, mas o fórum interceptou o [i] como marcador de texto em itálicos). De todo modo, a atribuição que ele fez está semanticamente errada.






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts