Jump to content
Fórum Script Brasil
  • 0

Matriz que Faz somatório e Fatorial em C


saless

Question

Fazer um programa onde se leiam 10 elementos de uma matriz A do tipo vetor. Construir 2 matrizes B e C de mesmo tipo, observando a seguinte lei de formação: todo elemento de B deverá ser o fatorial do elemento de A correspondente e todo elemento de C deverá ser o somatório do elemento de A correspondente. Montar uma rotina de pesquisa binária, para pesquisar os elementos armazenados na matriz A e a resposta deve mostrar o valor do fatorial correspondente armazenado na matriz B e o somatório correspondente armazenado na matriz C. A rotina de pesquisa deverá dar ao usuário a opção de continuar pesquisando ou não ao final de cada pesquisa.

Ex.: A[1] = 3 // B[1] = 6 // C[1]=6, A[2] = 4 // B[2]= 24 // C[3]=10...

Link to comment
Share on other sites

5 answers to this question

Recommended Posts

  • 0

Baseado no que você falou, acho que o código abaixo pode te ajudar, ele cria uma matriz A e a preenche com valores aleatórios de 1 a 10 (podendo se repetir), e baseado nessa matriz constrói as matrizes B e C, após isso imprime as trés matrizes no console.

#include <stdio.h>
#include <time.h>

unsigned int factorial(unsigned int x)
{
    if(x == 1) return 1;

    return (x * factorial(x - 1));
}

unsigned int sum(unsigned int x)
{
    return ((x * x + x) / 2);
}

void buildMatrizA(unsigned int *a)
{
    int i;

    srand(time(NULL));

    for(i = 0; i < 10; i++)
    {
        // limita os valores da matriz A ao intervalo [1, 10]
        // apenas por questoes de simplicidade

        a[i] = (rand() % 10) + 1; 
    }
}

void buildMatrizB(const unsigned int *a, unsigned int *b)
{
    int i;

    for(i = 0; i < 10; i++)
    {
        b[i] = factorial(a[i]);
    }
}

void buildMatrizC(const unsigned int *a, unsigned int *c)
{
    int i;

    for(i = 0; i < 10; i++)
    {
        c[i] = sum(a[i]);
    }
}

int main()
{
    unsigned int matrizA[10];
    unsigned int matrizB[10];
    unsigned int matrizC[10];

    buildMatrizA(matrizA);
    buildMatrizB(matrizA, matrizB);
    buildMatrizC(matrizA, matrizC);

    printf("MatrizA = {%d, %d, %d, %d, %d, %d, %d, %d, %d, %d}\n",
        matrizA[0], matrizA[1], matrizA[2], matrizA[3], matrizA[4], matrizA[5],
        matrizA[6], matrizA[7], matrizA[8], matrizA[9]);

    printf("MatrizB = {%d, %d, %d, %d, %d, %d, %d, %d, %d, %d}\n",
        matrizB[0], matrizB[1], matrizB[2], matrizB[3], matrizB[4], matrizB[5],
        matrizB[6], matrizB[7], matrizB[8], matrizB[9]);

    printf("MatrizC = {%d, %d, %d, %d, %d, %d, %d, %d, %d, %d}\n",
        matrizC[0], matrizC[1], matrizC[2], matrizC[3], matrizC[4], matrizC[5],
        matrizC[6], matrizC[7], matrizC[8], matrizC[9]); 
    
    return 0;
}

Link to comment
Share on other sites

  • 0

Perfeito, funcionou... agora ao invés de gera valores aleatórios gostaria que o algoritmo solicitasse a digitação dos valores ao usuário e ao invés de mostrar todas as matrizes fizesse uma pesquisa binária nos valores e digitados e mostrasse o fatorial e o somatório daquele valor depois do valor mostrado o programa perguntaria se o usuário deseja continuar ou não.. me desculpe é que estou iniciando em C e não sei fazer essas coisas ainda .

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



  • Forum Statistics

    • Total Topics
      152.2k
    • Total Posts
      652k
×
×
  • Create New...