0
Hello, I have a function that should receive values from an intersection and if you enter a value I should relocate more memory and return this pointer. Analyzing the problem, it seems to me to be time to relocate and return the pointer.
follows the code
#include <stdio.h>
#include <stdlib.h>
#define tam 10
void InsertVetorValores(int vetor[], int comprimento, char *frase);
int* intersecao(int valor, int *p);
int main()
{
int A[tam];
int B[tam];
int *vetor = (int *) malloc(sizeof(int));
vetor[0] = NULL;
// injetando valores no vetor A
InsertVetorValores(A, tam, "º valor, vetor A:\n");
// injetando valores no vetor B
InsertVetorValores(B, tam, "º valor, vetor B:\n");
// linha do vetor A
for (int i = 0; i < tam; i++)
{
// liha do vetor B
for (int j = 0; j < tam; j++)
{
// verificando a existência de uma interseção
if (A[i] == B[j])
{
vetor = intersecao(A[i], vetor);
}
}
}
printf("INTERSEÇÃO: ");
int comprimento = sizeof(vetor) / sizeof(int);
for (int i = 0; i < comprimento; i++)
{
if (vetor[i] != NULL)
{
printf("%d ", vetor[i]);
}
}
printf("\n");
free(vetor);
return 0;
}
void InsertVetorValores(int vetor[], int comprimento, char *frase)
{
for (int i = 0; i < comprimento; i++)
{
printf("%d %s\n", i+1, frase);
scanf("%d", &vetor[i]);
printf("\n");
}
}
int* intersecao(int valor, int *p)
{
int aux = 0;
int comprimento = sizeof(p) / sizeof(int);
printf("comprimento: %d\n", comprimento);
if (p[0] == NULL)
{
comprimento++;
p = (int *) realloc(p, sizeof(int) * comprimento);
p[0] = valor;
return p;
}
for (int i = 0; i < comprimento; i++)
{
if (p[i] == valor)
{
aux = 1;
}
}
if (aux == 0)
{
for (int i = 0; i < comprimento; i++)
{
if (p[i] == NULL)
{
comprimento++;
p = (int *) realloc(p, sizeof(int) * comprimento);
p[i] = valor;
return p;
}
}
}
return p;
}