Dúvidas com o C [RESOLVIDO]

1. Dúvidas com o C [RESOLVIDO]

Israel Filho
iebf

(usa Ubuntu)

Enviado em 13/03/2013 - 19:37h

Pessoal,

Estou com um pequeno problema, seguinte eu tenho um simulador em C a cada rodada que eu executo o programa ele apresenta um resultado, ou seja, os valores de vez em quando mudam.
EX: 5 sucesso, 3 Colisões, e 2 Vazios,

Ta acontece que eu preciso fazer 1000 simulações, ou seja ao invés de executar manualmente 1000 vezes gostaria de executar apenas uma vez as 1000 simulações, como devo proceder?

Grato


  


2. Re: Dúvidas com o C [RESOLVIDO]

Paulo
paulo1205

(usa Ubuntu)

Enviado em 13/03/2013 - 19:51h

Coloque um laço com for, while ou do/while em volta do código com a simulação.


3. Re: Dúvidas com o C [RESOLVIDO]

Israel Filho
iebf

(usa Ubuntu)

Enviado em 13/03/2013 - 19:56h

Em volta de todo o codigo é isso?



4. Re: Dúvidas com o C [RESOLVIDO]

???
gokernel

(usa Linux Mint)

Enviado em 14/03/2013 - 07:07h

nao sei como funciona esse seu simulador (vc nao passou muitas infos), mas acredito que tenha um ponto para iniciar/resetado ...

tenta algo similar a isso:



int i;

for(i=0; i < 1000; i++)
{
seu_simulador_init (); // ou reset

// umas coisas e outras coisas, bla bla bla ...

seu_simulador_zerar (); // tipo ...
}




5. Re: Dúvidas com o C [RESOLVIDO]

Israel Filho
iebf

(usa Ubuntu)

Enviado em 14/03/2013 - 10:49h

Segue o código para analise

#include <stdio.h>

#define QTD_TAGS 50
#define TAM_TAG 64

//matriz que armazena as tags
int tags[QTD_TAGS][TAM_TAG];

//variáveis globais
int valor, nivel, colisoes; //colisoes por leitura
int caminho[TAM_TAG];
int total_sucessos, total_vazios, total_colisoes; //metricas
int tags_colididas[QTD_TAGS]; //a cada rodada armazena o indice das
//tags que colidiram

//prototipo das funções
int leitura();
int le_tags();
int desce_esquerda();
int desce_direita();
int sobe(int n);
void imprime_caminho();
void refaz_tags_colididas();
void gerar_tags();


int main(int argc, char **argv)
{
gerar_tags();
int i;
//inicializações
nivel = -1;
valor = 0;
total_sucessos = total_vazios = 0;
total_colisoes = 0;
colisoes = QTD_TAGS;
leitura();

printf("\nVazios.....: %d\n", total_vazios);
printf("Colisões ..: %d\n", total_colisoes);
printf("Sucessos...: %d\n", total_sucessos);
getchar();

return 0;
}

int leitura(){
if(nivel > -1){
caminho[nivel] = valor;
colisoes = le_tags();
printf("\ntags: %d caminho: ",colisoes);
imprime_caminho();
}

if(colisoes == 0){
total_vazios++;
printf("Vazio \n");
}else if(colisoes == 1){
total_sucessos++;
printf("Sucesso \n");
}else{
total_colisoes++;
printf("Colisão \n");
if(nivel+1 < TAM_TAG){
desce_esquerda();
sobe(1);
desce_direita();
sobe(1);
}
}
return 1;
}

int le_tags(){
int i, j = 0;
refaz_tags_colididas();
for(i = 0; i < colisoes; i++ ){
if(tags[tags_colididas[i]][nivel] == valor){
tags_colididas[j] = tags[i][nivel];
j++;
}
}
return j;
}

int desce_esquerda(){
nivel++;
valor = 0;
leitura();
return 1;
}

int desce_direita(){
nivel++;
valor = 1;
leitura();
return 1;
}

int sobe(int n){
nivel -= n;
}

void imprime_caminho(){
int i;
for (i = 0; i <= nivel; i++)
printf("%d", caminho[i]);
printf("\n");
}

void refaz_tags_colididas(){
int i,j,k,acerto;
k=0;
//printf("\n ---- refaz_tags_colididas ---- ");
for (i=0; i < QTD_TAGS; i++){
acerto = 0;
//printf("\ni = %d\nj = ", i);
for (j=0 ; j <= nivel; j++){
//printf("%d", j);
if(caminho[j] == tags[i][j]){
acerto++;
}else{
//printf("saiu");
break;
}
}
if (acerto == nivel+1){
//printf("\n-------------- K = %d", k);
tags_colididas[k] = i;
k++;
}
}
// printf("\nvalor de k = %d", k);
colisoes = k;
}


//código para gerador de tags
void gerar_tags(){
int vtemp[TAM_TAG];
// int tags[QTD_TAGS][TAM_TAG];
int i, j, k, l, iguais;
srand(time(NULL));
for(j=0; j < QTD_TAGS; j++ ){
for(i=0; i < TAM_TAG;i++){
vtemp[i]=(int)rand()&1;
}
if(j==0){
for(k=0; k < TAM_TAG; k++){
tags[j][k] = vtemp[k];
}
}else{
for(l=0; l < j; l++ ){
iguais = 0;
for(k = 0; k < TAM_TAG; k++){
if(tags[l][k] == vtemp[k]){
iguais++;
}
}
if(iguais == TAM_TAG){
l = j;
j--;
}else{
for(k=0; k < TAM_TAG; k++){
tags[j][k] = vtemp[k];
}
}

}

}
}
for(j = 0; j < QTD_TAGS; j++){
printf("\n");
for(i = 0; i < TAM_TAG; i++ ){
printf("%d", tags[j][i]);
}
}

}



6. Re: Dúvidas com o C [RESOLVIDO]

???
gokernel

(usa Linux Mint)

Enviado em 14/03/2013 - 11:43h


vixe, nem li ;)

para ajudar o cerebro a entender essa parada melhor, dica:

usar a tag ( code ) ou um site do tipo similar ao ( http://codepad.org ) e enviar o link.

info: geralmente tento ajudar(com códigos) só nos finais de semanas ... muitas vezes não tenho saco para ligar o note ao chegar em casa a noite ...


7. Re: Dúvidas com o C [RESOLVIDO]

???
gokernel

(usa Linux Mint)

Enviado em 14/03/2013 - 16:41h

cara, o que vc tem que fazer é pegar o que esta dentro da funcao (main) e colocar dentro do loop(for) com 1000 execucoes ...

pergunta:
A quanto tempo +ou- vc é/foi iniciado em C ?

e fique a vontade para responder se quiser .


8. Re: Dúvidas com o C [RESOLVIDO]

Israel Filho
iebf

(usa Ubuntu)

Enviado em 15/03/2013 - 15:55h

+ ou - 2 meses


9. Re: Dúvidas com o C [RESOLVIDO]

ian cléver sales fernandes
ianclever

(usa Arch Linux)

Enviado em 15/03/2013 - 16:12h

como você tem um numero exato de vezes que quer executar, basta usar o for.
declare uma variável qualquer inteira para ser contador e faça o seguinte:

[code]for(cont=0;cont<1000;cont++)
{
...(código que você precisa repetir)...
}

lembrando que o cont esta iniciando do zero.


10. Re: Dúvidas com o C [RESOLVIDO]

???
gokernel

(usa Linux Mint)

Enviado em 15/03/2013 - 16:19h

ok, 2 meses é comum esses casos ... vou ser gentil e te ajudar(isso mesmo, fazer para vc) ...



int main(int argc, char **argv)
{
int count;

for (count = 0; count < 1000; count++)
{
gerar_tags();
int i;
//inicializações
nivel = -1;
valor = 0;
total_sucessos = total_vazios = 0;
total_colisoes = 0;
colisoes = QTD_TAGS;
leitura();

printf("\nVazios.....: %d\n", total_vazios);
printf("Colisões ..: %d\n", total_colisoes);
printf("Sucessos...: %d\n", total_sucessos);
getchar();
}

return 0;
}



Para testar, diminua o valor do loop para nao ficar apertando a tecla(getchar) 1000 vezes ate terminar o programa


11. Re: Dúvidas com o C [RESOLVIDO]

Israel Filho
iebf

(usa Ubuntu)

Enviado em 15/03/2013 - 16:31h

Valeu Brother Resolvido deu certo mesmo Obrigado!


12. Re: Dúvidas com o C [RESOLVIDO]

???
gokernel

(usa Linux Mint)

Enviado em 15/03/2013 - 18:37h

Disponha caro colega, fico feliz em ajudar !

E siga a dica que te informei ao postar códigos ...

Bom aprendizado para vc !!!






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts