0
Hello,
I’m having problems in an exercise where I want to pursue a certain age in an ordered vector. The error you are giving is "Expression: result_pointer != nullptr"
I did a search, and I saw that it is a pointer error, however, I am not using pointer in variable X, and even when I use, it still gives problem. Could be some library error?
Follow the code below:
#include <stdio.h>
struct dados
{
    int idade;
    int peso;
};
typedef struct dados Dados;
int compara(Dados d1, Dados d2) {
    int dif;
    dif = d1.idade - d2.idade;
    if (dif != 0)
        return dif;
    return d1.peso - d2.peso;
}
void ordenaDados(Dados *v, int n) {
    int a, b;
    Dados temp, pivo;
    if (n > 1) {
        a = 1; b = n - 1; pivo = v[0];
        do
        {
            while (a < n && compara(v[a], pivo) <= 0) a++;
            while (compara(pivo, v[b]) < 0) b--;
            if (a < b)
            {
                temp = v[a];
                v[a] = v[b];
                v[b] = temp;
                a++; b--;
            }
        } while (a <= b);
        v[0] = v[b];
        v[b] = pivo;
        ordenaDados(v, b);
        ordenaDados(&v[a], n - a);
    }
}
int buscaPesoMenor(float *v, int n, int el) {
    int ini, fim, meio;
    ini = 0; fim = n - 1;
    while (ini <= fim)
    {
        meio = (ini + fim) / 2;
        if (el < v[meio])
            fim = meio - 1;
        else if (el > v[meio])
            ini = meio + 1;
        else
            return meio;
    }
    return -1;
}
int main(void) {
    Dados v[] = { { 25 , 50 }, { 20 , 30 }, { 30 , 40 }, { 20 , 65 }, { 20 , 40 }, { 18 , 60 }, { 30 , 45 }, { 18 , 65 } };
    int i, x, k;
    x = 0;
    printf("Dados iniciais:\n\n");
    for (i = 0; i < 8; i++)
        printf("Idade:%d Peso:%d\n", v[i].idade, v[i].peso);
    ordenaDados(v, 8);
    printf("\nDados ordenados:\n\n");
    for (i = 0; i < 8; i++)
        printf("Idade:%d Peso:%d\n", v[i].idade, v[i].peso);
    printf("Digite a idade que voce quer procurar");
    scanf("%d", x);
    k = buscaPesoMenor(v, 8, x);
    if (k == -1)
        printf("A idade procurada nao foi encontrada");
    else
        printf("A posicao eh %d\n", k);
        printf("Referente a Idade:%d Peso:%d\n", v[k].idade, v[k].peso);
    return 0;
}
						
Hello, I was able to understand the mistakes! Thank you so much for your help! I just copied the search function from another exercise and did not pay attention, my mistake! Thanks!
– Tovisck
Hello friend, for nothing! Remember if your problem has been solved by my reply, please accept it and mark that it was useful.
– Bruno Hryniewicz