Ir ao conteúdo
  • Cadastre-se
Adrian Simon

C Números aleatórios em C

Posts recomendados

Boa tarde!

 

Estou tentando terminar um exercício de programação, de números aleatórios. O enunciado é:

Gerar 100 números aleatórios no intervalo de 1..10.

 

• Calcular a média e analisar a distribuição:

◦ contar quantas vezes cada número apareceu

◦ calcular a porcentagem de aparecimentos para cada número

 

A parte da geração de números eu consegui fazer, só estou tendo dificuldades pra contar quantas vezes cada número apareceu, e calcular a porcentagem. O meu código por enquanto tá assim... Se alguém puder me ajudar agradeço.

 

#include<stdio.h>
#include<stdlib.h>
#include<locale.h>
#include<time.h>
int main()
{
    setlocale(LC_ALL, "Portuguese");

    int i, j, n, media, soma=0, cont = 0;

    printf("\n\t\tO programa gera 100 números aleatórios entre 1 à 10\t\t\n\n");

    for(i = 1; i < 100; i++)
    {
        printf("\n Sequência %d: \n", i);
        srand(time(NULL));

        for(i = 1; i < 100; i++)
        {
            n = 1 + rand() % 10;
            printf("%d  \n\n", n);
            soma = soma + n;
        }
    }

    media = soma / 9;

    printf("\nA média dos números é %d", media);

return 0;
}


 

  • Amei 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

                                                
srand(time(NULL)); //so precisa chamar esta função uma unica vez, bote fora do lao
//for(i = 1; i < 100; i++) esse laco esta sendo executado 99 vezes o certo seria:
for(i = 0; i < 100; i++) //ou for(i = 1; i <= 100; i++)
   {
        //srand(time(NULL)); nao ha necesidade de chamar srand todas as vezes
        printf("\n Sequência %d: \n", i);
		n = 1 + rand() % 10;
        printf("%d  \n\n", n);
        soma = soma + n;
        /*for(i = 1; i < 100; i++) nao ha necessidade de aninhar outro laco dentro do principal, desse jeito você esta gerando 100*100 numeros aleatorios!
        {
            n = 1 + rand() % 10;
            printf("%d  \n\n", n);
            soma = soma + n;
        }*/
}        
//media = soma / 9;
media = soma / 100; //sao 100 numeros gerados, entao deve dividir por 100.

Para contar os números, crie um array de 10 elementos para armazenar a contagem de cada um:

int cont[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};

 

No laço de geração você vai somando cada um de acordo com o índice:

for(i = 0; i < 100; i++)
   {
       
        printf("\n Sequência %d: \n", i);
		n = 1 + rand() % 10;
        printf("%d  \n\n", n);
        cont[n-1]++; //cont[0] conta quantas vezes o numero 1 eh gerado, cont[1] conta o numero 2 e assim sucessivamente
        soma = soma + n;
       
}        
for (int i=0; i < 10; i++) printf("O número %d foi gerado %d vezes\n", i+1, cont[i]);

Veja se consegue terminar agora.

  • Obrigado 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

@Adrian Simon     se você puder usar vetor será mais fácil , mas sem vetor seu código poderia ser assim  :

#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
#include<locale.h>
#include<time.h>
#include <windows.h>
/*             0     1    2     3   4      5      6      7         8  */
typedef enum{black,blue,green,cyan,red,magenta,brown,lightgray,darkgray,   /* nome das cores */
lightblue,lightgreen,lightcyan,lightred,lightmagenta,yellow,white} colors;
/*  9         10         11        12        13         14    15 */

static int __BACKGROUND = 1/*BLACK*/;/*pode ser o numero ou o nome da cor*/
static int __FOREGROUND = lightgray;

void textcolor_2 (int letras, int fundo){/*para mudar a cor de fundo mude o background*/
    __FOREGROUND = letras;
    __BACKGROUND = fundo;
    SetConsoleTextAttribute (GetStdHandle (STD_OUTPUT_HANDLE),
    letras + (__BACKGROUND << 4));
}
int main()
{    
    srand(time(NULL));
    setlocale(LC_ALL, "Portuguese");
    int i, j, n, media, soma=0, cont = 0;
    int um=0,dois=0,tres=0,quatro=0,cinco=0,seis=0,sete=0,oito=0,nove=0,dez=0;
    textcolor_2(14,0);
    printf("\n\t\tO programa gera 100 números aleatórios entre 1 à 10\t\t\n\n");
    for(i=0; i<100; i++)
    {
        n = rand() % 10+1;
        printf("%d ", n);
        soma = soma + n;
        switch(n){
        case 1:
             um++;
             break;
        case 2:
            dois++;
            break;
        case 3:
            tres++;
            break;
        case 4:
            quatro++;
            break;
        case 5:
            cinco++;
            break;
        case 6:
            seis++;
             break;
        case 7:
            sete++;
            break;
        case 8:
            oito++;
            break;
        case 9:
            nove++;
            break;
        case 10:
            dez++;
        }
    }
    textcolor_2(11,0);
    printf("\n\n");
    printf("O Numero  1 Apareceu %3d Vezes ! Com a Porcentagem de %3d Por Cento .\n",um    ,um    );
    printf("O Numero  2 Apareceu %3d Vezes ! Com a Porcentagem de %3d Por Cento .\n",dois  ,dois  );    
    printf("O Numero  3 Apareceu %3d Vezes ! Com a Porcentagem de %3d Por Cento .\n",tres  ,tres  );
    printf("O Numero  4 Apareceu %3d Vezes ! Com a Porcentagem de %3d Por Cento .\n",quatro,quatro);
    printf("O Numero  5 Apareceu %3d Vezes ! Com a Porcentagem de %3d Por Cento .\n",cinco ,cinco );
    printf("O Numero  6 Apareceu %3d Vezes ! Com a Porcentagem de %3d Por Cento .\n",seis  ,seis  );
    printf("O Numero  7 Apareceu %3d Vezes ! Com a Porcentagem de %3d Por Cento .\n",sete  ,sete  );
    printf("O Numero  8 Apareceu %3d Vezes ! Com a Porcentagem de %3d Por Cento .\n",oito  ,oito  );
    printf("O Numero  9 Apareceu %3d Vezes ! Com a Porcentagem de %3d Por Cento .\n",nove  ,nove  );
    printf("O Numero 10 Apareceu %3d Vezes ! Com a Porcentagem de %3d Por Cento .\n\n",dez ,dez   );
    media = soma / 10;
    textcolor_2(10,0);
    printf("A m%cdia dos n%cmeros %c %d",130,163,130,media);
    textcolor_2(15,0);
    getch();
    return 0;
}

 

Compartilhar este post


Link para o post
Compartilhar em outros sites
15 horas atrás, devair1010 disse:

@Adrian Simon     se você puder usar vetor será mais fácil , mas sem vetor seu código poderia ser assim  :


#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
#include<locale.h>
#include<time.h>
#include <windows.h>
/*             0     1    2     3   4      5      6      7         8  */
typedef enum{black,blue,green,cyan,red,magenta,brown,lightgray,darkgray,   /* nome das cores */
lightblue,lightgreen,lightcyan,lightred,lightmagenta,yellow,white} colors;
/*  9         10         11        12        13         14    15 */

static int __BACKGROUND = 1/*BLACK*/;/*pode ser o numero ou o nome da cor*/
static int __FOREGROUND = lightgray;

void textcolor_2 (int letras, int fundo){/*para mudar a cor de fundo mude o background*/
    __FOREGROUND = letras;
    __BACKGROUND = fundo;
    SetConsoleTextAttribute (GetStdHandle (STD_OUTPUT_HANDLE),
    letras + (__BACKGROUND << 4));
}
int main()
{    
    srand(time(NULL));
    setlocale(LC_ALL, "Portuguese");
    int i, j, n, media, soma=0, cont = 0;
    int um=0,dois=0,tres=0,quatro=0,cinco=0,seis=0,sete=0,oito=0,nove=0,dez=0;
    textcolor_2(14,0);
    printf("\n\t\tO programa gera 100 números aleatórios entre 1 à 10\t\t\n\n");
    for(i=0; i<100; i++)
    {
        n = rand() % 10+1;
        printf("%d ", n);
        soma = soma + n;
        switch(n){
        case 1:
             um++;
             break;
        case 2:
            dois++;
            break;
        case 3:
            tres++;
            break;
        case 4:
            quatro++;
            break;
        case 5:
            cinco++;
            break;
        case 6:
            seis++;
             break;
        case 7:
            sete++;
            break;
        case 8:
            oito++;
            break;
        case 9:
            nove++;
            break;
        case 10:
            dez++;
        }
    }
    textcolor_2(11,0);
    printf("\n\n");
    printf("O Numero  1 Apareceu %3d Vezes ! Com a Porcentagem de %3d Por Cento .\n",um    ,um    );
    printf("O Numero  2 Apareceu %3d Vezes ! Com a Porcentagem de %3d Por Cento .\n",dois  ,dois  );    
    printf("O Numero  3 Apareceu %3d Vezes ! Com a Porcentagem de %3d Por Cento .\n",tres  ,tres  );
    printf("O Numero  4 Apareceu %3d Vezes ! Com a Porcentagem de %3d Por Cento .\n",quatro,quatro);
    printf("O Numero  5 Apareceu %3d Vezes ! Com a Porcentagem de %3d Por Cento .\n",cinco ,cinco );
    printf("O Numero  6 Apareceu %3d Vezes ! Com a Porcentagem de %3d Por Cento .\n",seis  ,seis  );
    printf("O Numero  7 Apareceu %3d Vezes ! Com a Porcentagem de %3d Por Cento .\n",sete  ,sete  );
    printf("O Numero  8 Apareceu %3d Vezes ! Com a Porcentagem de %3d Por Cento .\n",oito  ,oito  );
    printf("O Numero  9 Apareceu %3d Vezes ! Com a Porcentagem de %3d Por Cento .\n",nove  ,nove  );
    printf("O Numero 10 Apareceu %3d Vezes ! Com a Porcentagem de %3d Por Cento .\n\n",dez ,dez   );
    media = soma / 10;
    textcolor_2(10,0);
    printf("A m%cdia dos n%cmeros %c %d",130,163,130,media);
    textcolor_2(15,0);
    getch();
    return 0;
}

eu nao fiz esse tipo eu fiz de hexadecimal ficou boa a minha e graças ao flavio, me ajudou bastante

 

 

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora





Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações 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...

GRÁTIS: minicurso “Como ganhar dinheiro montando computadores”

Gabriel TorresGabriel Torres, fundador e editor executivo do Clube do Hardware, acaba de lançar um minicurso totalmente gratuito: "Como ganhar dinheiro montando computadores".

Você aprenderá sobre o quanto pode ganhar, como cobrar, como lidar com a concorrência, como se tornar um profissional altamente qualificado e muito mais!

Inscreva-se agora!