Difficulty in accessing elements in a vector C

0

In the code below I try to get the largest element of a vector. However when I try to access the vector elements I can only access the index 0 and consequently I can not access the other vector elements.

Below is the source code ( main.c ):

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


int *maior;
int *comparador;
int i = 0;
int quant;
int count = 0;

int CriarVetor(int tamVetor){

    int a = 1;

    int *vetorElementos = malloc(sizeof(int *) * a);

    srand(time(NULL));

    vetorElementos = realloc(vetorElementos, sizeof(int *) * tamVetor);

    for (int i = 0; i < tamVetor; i++)
    {
        vetorElementos[i] = rand() % 100;
    }


        return *vetorElementos;

}



int AcharElemento(int *vetorElementos){

    maior = vetorElementos[0];
    printf("recebi o vetor, seu primeiro elemento e %d\n", maior);
    comparador = vetorElementos[i];
    printf("vetorElementos[i] e %d\n", comparador);

    /* 

       if (i == quant) { return maior; } else {

       if (comparador > maior) { printf("entrou no if de comparacao e
       %d\n",comparador);

       maior = comparador;


       } i++; AcharElemento(&vetorElementos);

       }

     */

   return maior;
}



int main(){

    printf("Entre a quantidade de Elementos desejada\n");
    scanf("%d", &quant);

    int *elementos = CriarVetor(quant);


    printf("Os elementos do vetor sao:{");
    for (int i = 0; i < quant; i++)
    {
        printf("%d,", &elementos[i]);

    }
    printf("}\n");

    /* Encontrar o maior numero dentro do vetor */
    int result = AcharElemento(&elementos);
    printf("Maior Elemento e: %d\n", result);

} 
    
asked by anonymous 11.06.2018 / 02:10

1 answer

1

First remove pointer from major and comparator :

int maior;
int comparador;

Then you should correct the return parameter of the CriarVetor function so that it returns int * instead of int and the return variable must be vectorElements and not * vectorElements

int* CriarVetor(int tamVetor){

    int a = 1;

    int *vetorElementos = malloc(sizeof(int *) * a);

    srand(time(NULL));

    vetorElementos = realloc(vetorElementos, sizeof(int *) * tamVetor);

    for (int i = 0; i < tamVetor; i++)
    {
        vetorElementos[i] = rand() % 100;
    }


        return vetorElementos;

}

And finally in main you should:

  • remove the & element symbol;
  • Undoing elements (not an error but good programming practice)
  • The function should look like this:

    int main(){    
        printf("Entre a quantidade de Elementos desejada\n");
        scanf("%d", &quant);
    
        int *elementos = CriarVetor(quant);
    
        printf("Os elementos do vetor sao:{");
        for (int i = 0; i < quant; i++)
        {
            printf("%d,", elementos[i]);
    
        }
        printf("}\n");
    
        /* Encontrar o maior numero dentro do vetor */
        int result = AcharElemento(elementos);
        printf("Maior Elemento e: %d\n", result);
    
        free(elementos);
    }
    

    I used two online compilers

    11.06.2018 / 06:32