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 Red_Beret » Sexta Jan 20, 2006 15:04
Ppl, alguem sabe fazer isto em VS2005
- Código: Seleccionar todos
void preencher(){
int l,b,c;
long a;
time(&a);
srand ((unsigned) a);
for(l=0;l<21;l++){
for(c=0;c<21;c++){
b=rand()%31;
matriz[l][c]=b;
}
}
}
Como é obvio, isto é so um pedaço do programa. É para preencher uma matriz com nºs aleatorios. Funciona perfeitamente nas versoes anteriores do VS. Mas no 2005 da sempre o erro
Error 1 error C2664: 'time' : cannot convert parameter 1 from 'long *' to 'time_t *' c:\....cpp 10
Ja me disseram que tinha algo a ver com o VS 2005 estar a tentar fazer isso em 64 bits, e que havia maneira de o por a fazer isso em 32 bits. Mas não percebi muito bem como era.
-
Red_Beret
- Membro Vitalício

-
- Mensagens: 2334
- Registado: Sexta Set 17, 2004 11:13
por Cannibal_Devil » Sexta Jan 20, 2006 19:48
Penso que isso tem somente a ver com o compilador e com a versão das bibliotecas standarts que ele tem que devem diferenciar um pouco.
Assim sendo e pelo erro que está a dar, a função time recebe como parametro um apontador para uma estrutura time_t e não um long.
Agora o que tens que fazer é criar uma estrutura time_t, para isso vai ver o manual da função time e do time_t. Depois de criares bem essa estrutura ela vai receber o valor que pretendes e depois passas como tens feito no srand.
Resumindo crias uma estrutura time_t, fazes malloc dela ou não??? e deixas o resto do código como já tens.
time_t *a;
malloc(a,sizeof(time_t));
time(a);
Se nao estiver errado deve ser uma coisa assim parecida se não for preciso o malloc então deve ser assim:
time_t a;
time(&a);
Depois diz qualquer coisa.
Vamos todos para o PARAÍSO porque o INFERNO é aqui!

-
Cannibal_Devil
- Novato

-
- Mensagens: 13
- Registado: Sábado Set 27, 2003 17:52
- Localização: Leiria / FCT-UNL Caparica
por Red_Beret » Sábado Jan 21, 2006 10:59
no Max-PT responderam-me isto
Darklord Escreveu:I've run into the same thing and have reverted back to VC6 for this
and other reasons. One change that might be really signitificant is
that the time_t is now a 64 bit number and that "time()" doesn't
return seconds since the epoche by default any more. You can force it
to be 32 bits again but, you have to define:
#define _USE_32BIT_TIME_T
in every situation where you use "time" and time_t's. The default
structure alignment is different between VC6 and VS2005 as well.
http://blog.gmane.org/gmane.comp.db.sql ... y=20060101Em alternativa, podes tentar mudar a variavel a para long long ou double, embora não tenha a certeza de funcionar.
Lembra-te é de mudar o cast do srand para unsigned int (doubles não teem unsigned).
agora a duvida é, onde é que se poe essa linha de codigo?
-
Red_Beret
- Membro Vitalício

-
- Mensagens: 2334
- Registado: Sexta Set 17, 2004 11:13
por deathseeker25 » Sábado Jan 21, 2006 22:03
No cabeçalho então. Estás a criar um define ou seja uma macro...
Vai
aqui que o pessoal dá-te uma ajuda em alguns minutos...
-
deathseeker25
- Membro de Prata

-
- Mensagens: 153
- Registado: Terça Set 20, 2005 14:09
Voltar para Programação
Quem está ligado:
Utilizador a ver este Fórum: Nenhum utilizador registado e 1 visitante