Ir ao conteúdo
  • Cadastre-se

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
Link para o comentário
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
Link para o comentário
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;
}

 

Link para o comentário
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
Link para o comentário
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisa ser um usuário 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 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...

 

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!