Ir ao conteúdo

Posts recomendados

Postado

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
Postado

                                                
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
Postado

@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;
}

 

Postado
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

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...