Originariamente inviato da oregon
Devi chiedere 3 valori, i parametri a, b e c della parabola per inserirli in un nodo della lista.

La scanf deve prevedere 3 variabili che devi inserire nella linea separati da uno spazio e terminati dall'invio, ad esempio

1 2 3
Innanzitutto ti ringrazio per l'aiuto che mi stai dando

Dunque, io ho realizzato questo codice...

codice:
#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>

struct PB {
       int a;
       int b;
       int c;
       struct PB *next;
};

struct PB *crea_parabole();
void visualizza_parabole(struct PB *, int x, int y);


int main() {
    struct PB *parabole;
    int x;
    int y;
    
    parabole = crea_parabole();
    printf("Inserire le coordinate x ed y: ");
    scanf("%d %d", &x, &y);
    visualizza_parabole(parabole, x, y);
}

struct PB *crea_parabole(){
       struct PB *p, *punt;
       int i, n;
       
       printf("Specificare il numero di nodi: ");
       scanf("%d", &n);
       
       if (n == 0) {
          p = NULL;
       } else {
              p = (struct PB *)malloc(sizeof(struct PB));
              printf("Inserisci l'elemento nel nodo 1: ");
              scanf("%d %d %d", &p->a, &p->b, &p->c);
              punt = p;
              
              for (i = 2; i <= n; i++) {
                  punt->next = (struct PB *)malloc(sizeof(struct PB));
                  punt = punt->next;
                  printf("Inserisci l'elemento nel nodo %d: ", i);
                  scanf("%d %d %d", &p->a, &p->b, &p->c);
              }
              punt->next = NULL;
       }
       return(p);
}

void visualizza_parabole(struct PB *p, int x, int y) {
     while (p != NULL) {
           if ( y == ((p->a)*x*x) + ((p->b)*x) + (p->c) ) {
              printf("Parabola trovata");
              printf("%d %d %d\n", p->a, p->b, p->c);
           }
           p = p->next;
     }
     printf("NULL");
}
... che, ahimè, non funziona

1) Prima di tutto sai dirmi quale libreria devo usare per malloc? Chi dice malloc.h, chi dice che basta stdlib.h

2) Logicamente parlando, l'espressione per vedere se i punti corrispondo alla parabola è giusta oppure no (ovviamente parlando della logica del C, almeno l'equazione matematica della parabola la so )

3) La parte dell'inserimento delle parabole mi sembra funzioni, ma se la funzione visualizza_parabole la scrivo in modo semplice solo per visualizzare i dati, cioè

codice:
void visualizza_parabole(struct PB *p) {
     while (p != NULL) {
           printf("%d %d %d\n", p->a, p->b, p->c);
           p = p->next;
     }
     printf("NULL");
}
mi visualizza questo (ipotizzando di voler inserire tre parabole)


Dov'è che sbaglio?
PS: ho usato gli int per comodità...