Ir ao conteúdo

Posts recomendados

Postado

Tenho que fazer o seguinte exercício, mas tenho muita dificuldade em declarar funções

Escreva uma função em linguagem C que receba um número inteiro, e que retorne 1 se o número for triangular ou 0 se não for triangular, além de um vetor de inteiros (por referência) contendo: a sequência numérica caso o número inteiro recebido seja triangular, ou zeros em caso contrário: int verifica_triangular(int n, int vetor[]); 2)Escreva uma função em linguagem C que preencha um vetor de números inteiros, com dimensão 200, sem números repetidos; void preenche_vetor(int vetor[], int tamanho); 3)Com as duas funções acima, crie um programa em linguagem C que, a partir do vetor preenchido utilizando a função escrita no item 2), mostre um relatório, como o descrito abaixo, para cada número deste vetor que for triangular: Exemplo para um vetor 0 54 2 24 236 288 120 106 38 196 210 280 6 Saída de tela 24 é o produto de 2 * 3 * 4 120 é o produto de 4 * 5 * 6 210 é o produto de 5 * 6 * 7 6 é o produto de 1 * 2 * 3

 

Fiz o seguinte programa:

 

#include <stdio.h>

#define Q 200

int verifica_triagular (int, int []);
void preencher_vetor(int [], int);

int main()
{
    int vetor[4], n, numero;
    
     preencher_vetor(vetor, 200);
    if (verifica_triangular (n, Q)){
    
        printf("%d e' o produto %d*%d*%d\n", numero, n, n+1, n+2);
    
    }else
    return 0;
}

int verifica_triangular(int n, int vetor[]){
    
    int a= 0, b=1, c=12;
    
    do
    {
        if (a*b*c < n)
        {
            a++;
            b++;
            c++;
            
        }
    }while (a*b*c <n);
    if (a*b*c ==n)
    {
        vetor [0]=a;
        vetor [1]=b;
        vetor [2]=c;
        return 1;
    }else{
        vetor [0]=0;
        vetor [1]=0;
        vetor [2]=0;
        return 0;
    }
}

void preencher_vetor(int v[], int q)
{
 srand(time(NULL));
  int x, i, j, n;
  i = 0;
  while (i <= Q){
    x = rand()/10;
    n = 0;
    for(j = 0; j < i; j++)
      if (v[j] == x){
        n = 1;
        j = i + 1;
      }
     if (n == 0) {
      v[i] = x;
      i++;
    }
  }
}

 

Ele executa, mas na compilação não apresenta nada. Alguém poderia me ajudar? 

  • Obrigado 1
Postado

@Melissa12    tem algum erro na função preenche_vetor ,  e ele demora uns quinze segundos para começar a funcionar , e  se não usar essa função  o código compila normal ,  

#include <stdio.h>
#include <time.h>
#define Q 200
int  verifica_triagular( int , int* );
void preencher_vetor   ( int , int* );
int main()
{
  int vetor[4000] = {0}, n = 32768,/// seu vetor tem poucas posições causando erro
      i , numero = 4096;
  printf("\t\tTecle  . . !\n\n");
  system("pause");
  printf("\n\n");
  preencher_vetor( 200 , vetor );  /// tem algum bug nessa funcao
  if (verifica_triangular (numero, vetor ) )
  {
    printf("%d e' o produto %d*%d*%d\n", numero, n, n+1, n+2);
  }
  else
  {
    printf("\n\nRetornou zero , o conteudo do vetor eh ->\n");
    for(i=0; i<3; i++)
      printf("posicao %d = %d\n",i,vetor[i]);
  }
  printf("\n\n\n");
  return 0;
}
int verifica_triangular( int n , int* vetor )
{
  int a= 0, b=1, c=12;
  do
  {
    if (a*b*c < n)
    {
      a++;
      b++;
      c++;
    }
  }while (a*b*c <n);
  if (a*b*c ==n)
  {
    vetor [0]=a;
    vetor [1]=b;
    vetor [2]=c;
    return 1;
  }
  else
  {
    vetor[0] = 0;
    vetor[1] = 0;
    vetor[2] = 0;
    return     0;
  }
}
void preencher_vetor( int q , int* v )
{
  printf("esta na Funcao preenche vetor\n");
  srand(time(NULL));        /// precisa da biblioteca #include <time.h>
  int x, i, j, n;
  i = 1;                    /// o erro é por que i igual a zero
  while (i <= Q)
  {
    x = rand() / 10;        /// creio que o certo seria  ( x = rand() % q / 10 )
    ///x = rand() % q / 10;
    n = 0;
    for(j = 0; j < i; j++)  /// esse Loop nunca seria executado
    {                       /// pois j = 0 e i = 0 assim j nunca será menor que i
      if (v[j] == x)
      {
        n = 1;
        j = i + 1;
      }
      if (n == 0)
      {
        v[i] = x;
        i++;
      }
      printf("Valor de i = %5d\n", i);
    }
  }
}

 

  • Curtir 1
Postado

@devair1010

1 hora atrás, devair1010 disse:

@Melissa12    tem algum erro na função preenche_vetor ,  e ele demora uns quinze segundos para começar a funcionar , e  se não usar essa função  o código compila normal ,  

#include <stdio.h>
#include <time.h>
#define Q 200
int  verifica_triagular( int , int* );
void preencher_vetor   ( int , int* );
int main()
{
  int vetor[4000] = {0}, n = 32768,/// seu vetor tem poucas posições causando erro
      i , numero = 4096;
  printf("\t\tTecle  . . !\n\n");
  system("pause");
  printf("\n\n");
  preencher_vetor( 200 , vetor );  /// tem algum bug nessa funcao
  if (verifica_triangular (numero, vetor ) )
  {
    printf("%d e' o produto %d*%d*%d\n", numero, n, n+1, n+2);
  }
  else
  {
    printf("\n\nRetornou zero , o conteudo do vetor eh ->\n");
    for(i=0; i<3; i++)
      printf("posicao %d = %d\n",i,vetor[i]);
  }
  printf("\n\n\n");
  return 0;
}
int verifica_triangular( int n , int* vetor )
{
  int a= 0, b=1, c=12;
  do
  {
    if (a*b*c < n)
    {
      a++;
      b++;
      c++;
    }
  }while (a*b*c <n);
  if (a*b*c ==n)
  {
    vetor [0]=a;
    vetor [1]=b;
    vetor [2]=c;
    return 1;
  }
  else
  {
    vetor[0] = 0;
    vetor[1] = 0;
    vetor[2] = 0;
    return     0;
  }
}
void preencher_vetor( int q , int* v )
{
  printf("esta na Funcao preenche vetor\n");
  srand(time(NULL));        /// precisa da biblioteca #include <time.h>
  int x, i, j, n;
  i = 1;                    /// o erro é por que i igual a zero
  while (i <= Q)
  {
    x = rand() / 10;        /// creio que o certo seria  ( x = rand() % q / 10 )
    ///x = rand() % q / 10;
    n = 0;
    for(j = 0; j < i; j++)  /// esse Loop nunca seria executado
    {                       /// pois j = 0 e i = 0 assim j nunca será menor que i
      if (v[j] == x)
      {
        n = 1;
        j = i + 1;
      }
      if (n == 0)
      {
        v[i] = x;
        i++;
      }
      printf("Valor de i = %5d\n", i);
    }
  }
}

 

Realmente, está dando erro nessa função de preencher função, tô tentando resolver, mas não consigo kkk, e não posso apagar ela, porque é necessária no exercicio

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

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!