• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

lesiano

Números aleatórios

11 mensagens neste tópico

Boas pessoal;

Preciso de fazer um ficheiro txt com esta estrutura:

while (i!=500){
                          printf("%d)\n", i+1);
                          printf("tipo: Trabalhador\n");
                          printf("numero: %d\n", 10000 + rand()%40000 );
                          printf("nome: \n");
                          printf("media: %d.%d\n", rand()%10+10,rand()%1000 );
                          printf("experiencia profissional: \n");
                          printf("licenciatura: \n");
                          printf("\n\n\n");
                          i++;
                          }

O ficheiro terá 500 ocorrências, mas tenho aqui uns problemas:

i) O tipo poderá ser "Trabalhador","Mestrado" ou ainda "Licenciatura". Há alguma função que me escolha uma string de 3, aleatoriamente?

ii) O nome terá de ser sempre diferente, e deverá ser "real". Isto é, "Pedro" ñ chega, convém ter 4 nomes. O q estou a pensar é ter outro txt com 500 nomes completos e o programa ir sacando um a um, o q acham? Alguma ideia melhor?

iii) A média terá de ser SEMPRE MENOR Q A ANTERIOR. Ainda pensei em fazer 19.999 e ir tirando smp uma centésima. Má ideia qt ao realismo, alguém com uma melhor? O random permite gerar números nunca maiores ou iguais ao anterior?

Por agr é só.

Cumprimentos e obrigado. ;-)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

i) Associas essas 3 strings a um número (0,1,2 por exemplo) e depois fazes uma função que te dê um deles aleatoriamente.

ii) Se tens toda a informação sobre o aluno nesse ficheiro, para quê colocar o nome noutro? Ou então não percebi o efeito.

iii) Se precisas de ordenação, talvez seja melhor fazeres um array com as médias, ordená-lo e depois atribuir ao aluno.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Madbesta, eu quero gerar um nome para o aluno. Mas num ciclo de 500 iterações. A solução q tens para isso é o quê?

A minha é ter esses 500 nomes num outro ficheiro e ir sacando um a um.

Qt às outras respostas, mt bem pensado.  :ipool: Obg.  :D

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Relativamente ao ponto (i), só precisas de colocar as strings num array, e depois usas o número gerado aleatoriamente para escolher a posição do array.

Para as médias, a ideia de ordenar um vector parece-me boa.

Quanto aos nomes, procura um site onde apareça uma lista de nomes. Por exemplo, vai ao site dos SAUM, e retira de lá a lista de inscritos em LEI.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Ainda pesquisei bastante, mas ñ encontrei uma maneira a funcionar q me metesse 3 strings num array.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Como diz o Baderous está bem, mas eu prefiro meter uns `const`s na definição :)

const char * const tipo[] = {"Trabalhador", "Mestrado", "Licenciatura"};
/* ... */
printf("Tipo: %s\n", tipo[0]);

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Testem isso, sff.

Eu cá já testei ( e outras versões degeneradas das vossas ) e ñ dão para imprimir.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

#include <stdio.h>

int main(void) {
    char *array[] = {"Mestrado","Licenciatura","Trabalhador"};
    int i;
    for (i=0;i<3;i++)
        printf("%s\n",array[i]);
    return 0;
}

Funciona.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Qual é o teu código?

$ cat arrstr.c
#include <stdio.h>

int main(void) {
  const char * const tipo[] = {"um", "dois", "tres"};

  printf("T1: %s\nT2: %s\nT3: %s\n", tipo[0], tipo[1], tipo[2]);
  return 0;
}
$ gcc -std=c89 -pedantic -Wall -Wextra arrstr.c
$ ./a.out
T1: um
T2: dois
T3: tres
$

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora