Jump to content
  • 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

Recommended Posts

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;
}

Edited by PsySc0rpi0n
geshi fail :D

Kurt Cobain - Grunge misses you

Nissan GT-R - beast killer

Share this post


Link to post
Share on other 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

Share this post


Link to post
Share on other 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

Edited by PsySc0rpi0n

Kurt Cobain - Grunge misses you

Nissan GT-R - beast killer

Share this post


Link to post
Share on other 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

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.