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
por 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

-
- Mensagens: 9622
- Registado: Terça Abr 05, 2005 22:55
- Localização: Santo Tirso / Guimarães
por 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

-
- Mensagens: 206
- Registado: Quarta Jan 04, 2006 21:29
- Localização: Lisboa/Proença
por 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

-
- Mensagens: 206
- Registado: Quarta Jan 04, 2006 21:29
- Localização: Lisboa/Proença
por 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

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