Ir para o conteúdo
  • Revista PROGRAMAR: Já está disponível a edição #60 da revista programar. Faz já o download aqui!

PsySc0rpi0n

Conteúdo estranho de um vector

Mensagens Recomendadas

PsySc0rpi0n

Boas.

Estou a usar um vector para armazenar números mas quando tnto fazer um printf deles, aparece o típico lixo da memória. Não estou a perceber porquê. . .

 
#include <stdio.h>
#define MAX 10

int main(void)
{
   int numeros[MAX];
   int i, zeros = 0, soma = 0;
   float media = 0.0;
   printf("Introduza 1000 números inteiros:\n");
   for (i = 0; i < MAX; i++)
       scanf("%f", &numeros);
   for (i = 0; i < MAX; i++)
   {
       if (numeros [i] == 0)
           zeros++;
   }
   for (i = 0; i < MAX; i++)
   {
       soma += numeros;
       printf("soma %d = %d\n", i, soma);
       printf("numero %d = %d\n", i, numeros);
   }
   media = soma / MAX;
   printf
       ("A média dos números introduzidos é %.2f e o número de zeros introduzidos é %d!\n",
        media, zeros);
   getchar();
   return 0;
}

Editado por PsySc0rpi0n
geshi fail :D

Kurt Cobain - Grunge misses you

Nissan GT-R - beast killer

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
HappyHippyHippo

antes de mais, aumenta o nível de warnings do compilador e tenta corrigir todas as mensagens que te aparecem

#include <stdio.h>
#define MAX 10

int main(void)
{
   int numeros[MAX];
   int i, zeros = 0, soma = 0;
   float media = 0.0;
   printf("Introduza 1000 números inteiros:\n");
   for (i = 0; i < MAX; i++)
       scanf("%f", &numeros[i]); // numeros é um array de inteiros e estás a dizer para ler um float

   for (i = 0; i < MAX; i++)
   {
       if (numeros[i] == 0)
           zeros++;
   }

   for (i = 0; i < MAX; i++)
   {
       soma += numeros[i];
       printf("soma %d = %d\n", i, soma);
       printf("numero %d = %d\n", i, numeros[i]);
   }
   media = soma / MAX; // isto é a divisão inteira, nunca terás um valor com casas decimais sem um cast expelícito
   printf
       ("A média dos números introduzidos é %.2f e o número de zeros introduzidos é %d!\n",
        media, zeros);
   getchar();
   return 0;
}


IRC : sim, é algo que ainda existe >> #p@p

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
PsySc0rpi0n

Acho que não tenho acesso a mais ou menos warnings porque estou no smartphone (Android) .

Onde comentaste, não percebi. A divisão inteira não é o % ? ? ?

Ali estou a dividir a soma dos números inseridos no vector pelo tamanho o vector...

O problema está nos valores que ficam guardados no vector (estou a verificar nos dois printfs que fiz...

edited;

Ok, vou ver a situa ção do tipo das variáveis. . . Deve ser isso.

edited;

Era isso mesmo. O resto está bom... Thanks

Editado por PsySc0rpi0n

Kurt Cobain - Grunge misses you

Nissan GT-R - beast killer

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
HappyHippyHippo

o operador "%" é o resto da divisão inteira.

a divisão inteira é o uso do operador "/" sobre dois números inteiros.

int a = 23, b = 10;
double resultado = 0.0;

resultado = a / b;         // resultado irá ficar com o valor de 2.0 e não 2.3 !!!
resultado = (double)a / b; // agora sim, resultado fica com 2.3


IRC : sim, é algo que ainda existe >> #p@p

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora

×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.