Funzioni c

di il
22 risposte

Funzioni c

Ciao a ttt ragazzi. Mi potreste aiutare con le funzioni cerca e ordinamento in una lista di liste.

TLista_primaria cerca(TLista_primaria l, char x){
while(!null_primaria(l)){
c=strcmp(l->dato.elemento_cercato,x);
if(c==0)
printf("elemento trovato\n");
l=l->succ;
}
return l;
}

void insord1(TLista_primaria *l,TAtomo_primaria e){
strcmp(car(*l).elemento_speciale,e.elemento_speciale);
if(null1(*l)||c>0)
cons_primaria(l,e);
else
insord(&((*l)->succ),e);
}

con null intendo una funzione che mi dice se la lista è vuota e con car una funzione che restituisce l'elemento in testa alla lista.
Grazie mille ragazzi

22 Risposte

  • Re: Funzioni c

    Se non usi i tag code il codice non si capisce e nessuno ti risponde ...

    E poi non ho capito il problema del codice in questione. Errori? Malfunzionamenti? Cosa ??
  • Re: Funzioni c

    Scusami, ma cosa sono i tag code? xD
    comunque nn riesco a compilare il programma e di conseguenza nn lo esegue.
    Dev mi segnale l'errore nelle due funzioni c=strcmp presenti in entrambe le funzioni.
    Spero di essere stato più chiaro
  • Re: Funzioni c

    Intendevate questo per tag code???
    TLista_primaria cerca(TLista_primaria l, char x){
    while(!null_primaria(l)){
    c=strcmp(l->dato.elemento,x);
    if(c==0)
    printf("elemento trovato\n");
    l=l->succ;
    }
    return l;
    }
    
    void insord1(TLista_primaria *l,TAtomo_primaria e){
    c=strcmp(car(*l).elemento,e.elemento);
    if(null1(*l)||c>0)
    cons_primaria(l,e);
    else
    insord(&((*l)->succ),e);
    }
  • Re: Funzioni c

    Sì, per i tag code.

    Adesso sappiamo che il problema è in compilazione e che c'è un errore ...

    A questo punto manca che tu ci riporti l'errore del compilatore ...

    P.S. Nella seconda funzione non viene usata

    c= ...

    Perché?
  • Re: Funzioni c

    Per l'insord mi dice invalid use of non-Lvalue array ed è sul rigo riguardante il strcmp.
    per la funzione cerca invece, passing arg2 of strcmp makes pointer from integer without a cast.

    il primo penso di averlo risolto tramite questa modifica:
    
    void insord1 (TLista_primaria *l,TAtomo_primaria e){
         char c;
         TAtomo_primario tmp;
         tmp=car(*l);
         c=strcmp(tmp.elemento,e.elemento);
         if(null(*l)||c>0)
         cons(l,e);
         else
         insord1(&((*l)->succ),e);
         }
  • Re: Funzioni c

    oregon ha scritto:


    Sì, per i tag code.

    Adesso sappiamo che il problema è in compilazione e che c'è un errore ...

    A questo punto manca che tu ci riporti l'errore del compilatore ...

    P.S. Nella seconda funzione non viene usata

    c= ...

    Perché?
    l'ho dimenticato a scriverlo qui xD in realtà c'è
  • Re: Funzioni c

    Dicci qualcosa di più ... ad esempio, di che tipo sono gli argomenti delle strcmp nella funzione cerca?
    E per la prima funzione, sicuro che c=... era presente nel codice che ti ha dato l'errore?
  • Re: Funzioni c

    Sono di tipo char.
    Esempio targhe di automobili.
    E per quanto riguarda la c, confermo che c'è nel programma.
  • Re: Funzioni c

    Char o puntatori a char? E' possibile vedere le strutture?
  • Re: Funzioni c

    
    typedef struct{
            int alfa;
            int beta;
            char elemento [B];
            TLista2 lista2;
            }TAtomo_primaria;
            
    typedef struct elem_lista_primaria{
            TAtomo_primaria dato;
            struct elem_lista_primaria *succ;
            }ELista_primaria,*TLista_primaria;
  • Re: Funzioni c

    Scusa ma l'elemento che chiami

    terzo

    dove sta?
  • Re: Funzioni c

    Scusami, siccome sono due funzioni di compiti diversi mi sono confuso.
    ho sostituito tutto con il nome elemento, cosi da non creare dubbi.
    scusami ancora
  • Re: Funzioni c

    Quando hai proposto il problema mancava una

    c=

    e usavi un elemento (terzo) di cui non si sapeva nulla.

    Corretti quei due problemi ...

    Quindi, adesso controlla il codice che stai compilando, ricompilalo e, eventualmente mostra completamente il codice (con il numero di linea) e i messaggi d'errore con relativo numero di linea.
    (anche uno screenshot non guasterebbe)

    Attenzione ... ... in

    c=strcmp(l->dato.elemento,x);

    x è un semplice char e quindi non va bene ...
  • Re: Funzioni c

    oregon ha scritto:


    Quando hai proposto il problema mancava una

    c=

    e usavi un elemento (terzo) di cui non si sapeva nulla.

    Corretti quei due problemi ...

    Quindi, adesso controlla il codice che stai compilando, ricompilalo e, eventualmente mostra completamente il codice (con il numero di linea) e i messaggi d'errore con relativo numero di linea.
    (anche uno screenshot non guasterebbe)

    Attenzione ... ... in

    c=strcmp(l->dato.elemento,x);

    x è un semplice char e quindi non va bene ...
    è proprio in quest'ultima parte il problema.
    Cosa dovrei fare per risolvere il tutto? Cosa devo mettere apposto del char? Grazie per la pazienza
Devi accedere o registrarti per scrivere nel forum
22 risposte