Ir ao conteúdo

Posts recomendados

Postado

Bom dia pessoal, desde já agradeço a qualquer ajuda. 

sou iniciante de programação em C, e estou tendo problemas com vetores. eu preciso pedir ao usuario o tamanho do vetor, e depois disso por meio de numero aleatorio, o vetor se preencha (não pode ser numero repetido). mas eu não estou conseguindo fazer funcionar!

(ele até funciona, mas somente quando digito entre 1 a 4)

 

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

int main(){
	int i, j, igual,soma=0,p,vet[p];

	printf("Insira o tamanho do vetor\n");
    scanf("%d",&p);

	srand((unsigned)time(NULL));
do{
	vet[i] = rand() % 100;
		igual = 0;
		for(j=0;j<i;j++){
				if (vet[j] == vet[i])
					igual = 1;
		}
		if(igual==0)
			i++;
}while(i<p);

        printf("ordem regular\n");
for(i=0;i<p;i++){

		printf("%d ", vet[i]);

 

qualquer ajuda é bem vinda

  • Obrigado 1
Postado

Olá, tudo bem? Espero que esteja bem!

(Para mim) a impressão é que você partiu para construção do código as cegas. 

Veja

7 horas atrás, bryan_carvalhal disse:
int i, j, igual,soma=0,p,vet[p];

O que é a variável p e o que significa vet[p] na declaração (acima)?

7 horas atrás, bryan_carvalhal disse:
	printf("Insira o tamanho do vetor\n");
    scanf("%d",&p);

Qual o sentido|razão para definir|capturar um valor em p depois que já declarou a VLA vet, por que uma variável que alberga a capacidade de um 'array type' se chama 'p'?

Essa rotina (acima) funcionou, testou, ativou os alerta do compilador e não teve alerta? 

Logo

7 horas atrás, bryan_carvalhal disse:

eu preciso pedir ao usuario o tamanho do vetor

Informe mín-máx da capacidade|variáveis no vetor, mas aloque o máximo permitido ou se utilizar de VLA, construa na ordem correta sendo primeiro a captura do número de capacidade  em seguida a declaração do vetor, semelhante à:

  1 /* Club-do-Hardware: Operação sobre vetores; VLA */
  2 #include"stdio.h"
  3 int
  4 main( void ){
  5   printf("%s","Ola, por favor informe o tamanho do vetor [1-100]: ");
  6   int tamanho_vetor = 0;
  7   scanf("%d",&tamanho_vetor);
  8   if(tamanho_vetor<0){
  9     tamanho_vetor = (-tamanho_vetor) % 100;}
 10   else if(tamanho_vetor>100){
 11     tamanho_vetor %= 100;}
 12   else if(tamanho_vetor==0){
 13     tamanho_vetor = 100;}
 14   int vetor_vla[tamanho_vetor];
 15   vetor_vla[tamanho_vetor - 1] = 2022;
 16   printf("%s\n","Operação-sucedida!");
 17   printf("%s%d%s%d\n",
 18   "Vetor[",tamanho_vetor,"] = ",vetor_vla[tamanho_vetor - 1]);
 19   return 0;}

image.png.cd95fed58e15fda08e4f408e4007bf96.png

OU

  1 /* Club-do-Hardware: Operação sobre vetores; VLA */
  2 #include"stdio.h"
  3 int
  4 main( void ){
  5   printf("%s","Ola, por favor informe o tamanho do vetor [1-100]: ");
  6   int tamanho_vetor = 0;
  7   scanf("%d",&tamanho_vetor);
  8   if(tamanho_vetor<0){
  9     tamanho_vetor = -tamanho_vetor % 100;}
 10   else if(tamanho_vetor>100){
 11     tamanho_vetor %= 100;}
 12   else if(tamanho_vetor==0){
 13     tamanho_vetor = 100;}
 14   static int vetor[100];
 15   vetor[tamanho_vetor - 1] = 2022;
 16   printf("%s\n","Operação-sucedida!");
 17   printf("%s%d%s%d\n",
 18   "Vetor[",tamanho_vetor,"] = ",vetor[tamanho_vetor - 1]);
 19   return 0;}

Nesse caso há uma escolha (VLA ou static) que depende do assunto que estudou.

  • Obrigado 1
Postado

@bryan_carvalhal     seu código funciona mas não mostra nenhum resultado ,  por que você colocou um vetor de tamanho desconhecido ,  então primeiro precisa pegar o tamanho informado pelo usuário e depois  a criação desse vetor com a qtd de elementos ,  e corrigindo essa parte , seu código poderia ser assim  :

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main()
{
  int i = 0, j, igual,soma=0,p;///,vet[p];

  printf("Insira o tamanho do vetor\n");
  scanf("%d",&p);
  int vet[p];   // cria o vetor com a qtd de elementos inf
  srand((unsigned)time(NULL));
  do
  {
    vet[i] = rand() % 100;    /// gerar numeros de zero ate 99
    igual = 0;
    for(j=0; j<i; j++)
    {
      if (vet[j] == vet[i])
        igual = 1;
    }
    if(igual == 0)  /// não eh repetido
      i++;
  }while( i < p );

  printf("ordem regular\n");
  for(i=0; i<p; i++)
  {
    printf("%d ", vet[i]);
  }
  return 0;
}

 

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!