Ir ao conteúdo
  • Cadastre-se

sorteio e conversao de string para int


Bruno Aarao

Posts recomendados

boa noite, abaixo postarei o codigo que estou usando.
preciso que a funcao rand gere um numero entre 0 e 9, e, a partir desse numero (i por exemplo) converta o conteudo da linha (i) da matriz para inteiro. Se 2 entre os 3 valores gerados a partir da conversao forem iguais, executar de novo. O erro que aparece é que quando executa o sorteio pela primeira vez, parece que a conversao nao é bem feita, atribuindo valores errados no final. Se alguem puder executar o codigo (recortei um pouco para evitar excesso) e ver o erro pra me ajudar....Obrigado desde ja
 
 
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include <time.h>

//funcao que sorteia o inicio do jogo

 

int sorteadora1(int aleatorio)
  {
    srand(time(NULL));
    aleatorio =rand()%10;
        if(aleatorio==9 || aleatorio==10){aleatorio=0;}
 return(aleatorio);
 }

//funcao principal

int main()

{
      char roleta[10][10];
strcpy(roleta[0],"100");
strcpy(roleta[1],"200");
strcpy(roleta[2],"300");
strcpy(roleta[3],"400");
strcpy(roleta[4],"500");
strcpy(roleta[5],"600");
strcpy(roleta[6],"700");
strcpy(roleta[7],"800");
strcpy(roleta[8],"passa a vez");
strcpy(roleta[9],"perde tudo");

//fim do banco de dados

//declaracao de variaveis
int count1, sorteio, conversor, aleatorio;
char vetaux[15], letra;
struct Jogadores
 {
    char nome[25];
    int pontos;
 };
struct Jogadores jogadores[3];

// fim da declaracao

//identificaçao e sorteio de valores iniciais
 do{
    for(count1=1; count1 < 4 ; count1++){
      printf("bem vindo ao jogo roletrando, identifique-se  \n");
     gets(jogadores[count1].nome);

    sorteio= sorteadora1(aleatorio);
        

//conversao do conteudo da string para inteiro (uso da funçao atoi)
    conversor=atoi(roleta[sorteio]);
    jogadores[count1].pontos=conversor;

 

printf("aleatorio: %d \n", sorteio);
        printf("pontos do jogador %d iniciais: %d\n", count1, jogadores[count1].pontos);
     }//fim do for

} while(jogadores[1].pontos==jogadores[2].pontos || jogadores[1].pontos==jogadores[3].pontos || jogadores[3].pontos==jogadores[2].pontos);

 

return 0;

}

Link para o comentário
Compartilhar em outros sites

Veja esse exemplo que eu fiz . . .

#include<stdio.h>#include<stdlib.h>#include <string.h>typedef struct Jogador{	char nome[10];	Jogador *JogadorProx;	int pontos;}Jogador;typedef struct Time{	Jogador *jogadores;}Time;Time *CriaTime(){	Time *time = (Time*) malloc(sizeof(Time));	time->jogadores = NULL;	return time;}void AdicionaJogador(Time *time, char nome[]){	Jogador *jogadorTmp = (Jogador*) malloc(sizeof(Jogador));	if(time->jogadores == NULL){		strcpy(jogadorTmp->nome,nome);		jogadorTmp->JogadorProx = NULL;		time->jogadores = jogadorTmp;	} else{		Jogador* JogadorAux;		Jogador *aux;		JogadorAux = time->jogadores;				while(JogadorAux != NULL){			aux = JogadorAux;			JogadorAux = JogadorAux->JogadorProx;		}		JogadorAux = aux;		JogadorAux->JogadorProx = jogadorTmp;		strcpy(jogadorTmp->nome,nome);		jogadorTmp->JogadorProx = NULL;	}}void VerTime(Time *time){	Jogador *JogadorTmp = time->jogadores;	int i = 1;	while(JogadorTmp != NULL){		printf("Jogador %d: %s\n", i++, JogadorTmp->nome);		JogadorTmp = JogadorTmp->JogadorProx;	}}int main(){	Time *time = CriaTime();	char nome[10];	int nJogadores = 5;	for(int i = 0; i < nJogadores; i++){		printf("Digite o nome do jogador: ");		scanf("%s", &nome);		printf("\n");		AdicionaJogador(time,nome);	}	VerTime(time);	system("PAUSE");	return 0;}
Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!