Problema num programa

PHP, Java, JavaScript, XML, XHTML, HTML, CSS, ASP, Delphi, Assembly, LaTeX, C, UML, Flash, Perl, SQL, Python, Zope, Pascal, WML. Se conhece mais de 3 siglas referidas, este é o forum para si.

Moderadores: Administradores, Moderadores

Problema num programa

Mensagempor s1nnless » Quarta Nov 14, 2007 15:39

Eu tenho um trabalho para fazer até domingo. O problema é o seguinte: criar um programa em ANSI C que dê ao utilizador a hipotese de escolher x números, que diga quantos desses números são pares, faça a média e diga qual é o máximo dos pares.

Criei o seguinte código:

Código: Seleccionar todos
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>

int main()
{
    int xNum, Max=0, Soma=0, NumPares=0, Num, z, i;
    float Media, x;
    printf("Quantos numeros deseja colocar no conjunto?\n");
    scanf("%d", xNum);
   
    for(i=0; i<xNum; i++){       
             printf("Introduza %d numeros", i+1);
             scanf("%d", Num);
           
             x=Num/2;
             z=int(x);
           
             if(x==z){
                      NumPares+=1;
                      if(Num>Max){Max=Num;}
                      }
             Soma+=Num;
    }
   Media=Soma/xNum;
   
    printf("Media: %f, Numeros pares: %d, Max: %d",Media, NumPares, Max);
}


No entanto, ao executar o programa em Vista, através do Devcpp 4.9.9.2, dá erro, o programa empanca, logo após eu introduzir o xNum na janela. Alguém me pode ajudar?
AMD Phenom II X4 940BE @ Titan Amanda;
Asus M3A79T-Deluxe; 2x2GB Gskill PI PC8000; Leadtek PX8800GTS 320MB; 2x250GB WD @ Raid 0; Seasonic S-12 600W; NZXT Lexa;
Intel P8400; 2x2GB PC6400; HP P45M; 9600M GT 512MB DDR2; 320GB SATA;
s1nnless
Moderador
Moderador
 
Mensagens: 9622
Registado: Terça Abr 05, 2005 22:55
Localização: Santo Tirso / Guimarães

Mensagempor vamosAeles » Quarta Nov 14, 2007 16:15

qd fazes scanf() o que passas é o endereço para onde queres ler, e não o valor desse inteiro como tas a fazer. Tens de fazer scanf(...., &varInt);

No caso de char*, pe, como o valor da variavel já o endereço para o seu conteúdo não pões o &.
vamosAeles
Membro de Prata
Membro de Prata
 
Mensagens: 206
Registado: Quarta Jan 04, 2006 21:29
Localização: Lisboa/Proença

Mensagempor vamosAeles » Quarta Nov 14, 2007 16:21

Já agora, penso q tb tens ai um float=int/2. Normalmente (a não ser que isto não se acontece com esse compilador, que nunca usei) a conta de dividir é feita primeiro e só depois esse inteiro passa para float, ie, o resultado vai ser sempre um número inteiro. Para resolver isso faz cast de um dos seus operandos . float x;int a; x = a/(float)2
vamosAeles
Membro de Prata
Membro de Prata
 
Mensagens: 206
Registado: Quarta Jan 04, 2006 21:29
Localização: Lisboa/Proença

Mensagempor bvmzinho » Quarta Nov 14, 2007 17:33

porque não verificas se eles são pares através do resto da divisão!?

x=Num%2;

se x ficar com 0 então o Num é par, caso contrário é ímpar.
e como disse o vamosAeles falta-te o & no scanf.
bvmzinho
Membro de Prata
Membro de Prata
 
Mensagens: 362
Registado: Sábado Jan 15, 2005 17:25


Voltar para Programação

Quem está ligado:

Utilizador a ver este Fórum: Nenhum utilizador registado e 1 visitante

cron