Linguaggio C: problema con le liste...

Collapse
X
 
  • Ora
  • Show
Clear All
new posts
  • Kitty
    Opinionista
    • 09/10/06
    • 171

    #1

    Linguaggio C: problema con le liste...

    Ciao a tutti!
    St
    File Allegati
    I'm Here
  • karin

    #2
    Non ho guardato con attenzione lo script e non ricordo benissimo il C, ma credo che potresti innestare il tutto in un ciclo iterativo su p(n-i), con i variabile tra 0 e n-1 (la lunghezza della tua lista), invece di usare i termini assoluti p1, p2... dovrebbe essere uno script simile a quello che si scrive per fare l'ordinamento di una lista di numeri, con confronti successivi tra i rimanenti non ordinati, in effetti ciò che cambia sono le variabili e l'operazione da eseguire, ma a te serve in effetti l'algoritmo per i confronti ripetuti. Ora non ricordo con precisione, ma mi sembra che si usasse un'iterazione del tipo da me citato. L'algoritmo per l'ordinamento è un classico, dovresti trovarlo facilmente e estrapolare la parte di codice che ti serve.
    Last edited by Ospite; 20-10-2006, 15:57.

    Comment

    • Anemos
      Narciso...
      • 16/10/04
      • 10243

      #3
      ma sai fare tutto te?
      [COLOR="DarkOrange"][SIZE="3"][FONT="Palatino Linotype"][B][CENTER]La pi

      Comment

      • karin

        #4
        No, so solo prendere per il naso tutti.
        Sono una sòla, tutta chiacchiere e distintivo

        Comment

        • Kitty
          Opinionista
          • 09/10/06
          • 171

          #5
          Ok credo di aver capito, adesso vado a cercare l'algoritmo per l'ordinamento e quindi provo a cambiare totalmente il ragionamento... in effetti ancora non sono riuscita a farlo funzionare in quel modo come l'ho pensato io.

          Grazie mille Karin per avermi risposto!!
          I'm Here

          Comment

          • Kitty
            Opinionista
            • 09/10/06
            • 171

            #6
            Ancora non sono riuscita a risolvere questo esercizio...

            se nel frattempo che continuo a provarci qualcuno ha la soluzione e mi spiega come devo impostare l'algoritmo ... ne sarei davvero felice!

            I'm Here

            Comment

            • skyll
              Lenta metamorfosi
              • 03/05/06
              • 2935

              #7
              Ho dato un'occhiata al listato completo.
              La funzione io l'avrei scritta così:

              void eliminaRipetizioni(struct elemento *p)
              {
              struct elemento *p1, *p2, *INDICE, *aux; \*aux puoi anche ometterlo in quanto ci pensa il compilatore a rilasciare la memoria occupata da una variabile inutilizzata *\

              INDICE, p1=p;

              while(INDICE != NULL) {
              p2 = p1->pun;

              while(p2 != NULL) {
              if ((strcmp (INDICE->nome, p2->nome)) == 0) { \*l'intero x puoi anche ometterlo perchè restituisce un valore che viene subito confrontato - variabili inutili occupano memoria e risorse*\

              printf("......UGUALI......");
              p1->pun = p2->pun;
              aux = p2;
              p2 = p1->pun;
              free(aux); \*istruzione facoltativa*\
              printf(".....");
              printf("......");
              else {
              printf(".......DIVERSI........");
              p1 = p2; <--------------
              p2 = p2->pun;
              printf(".......");
              }
              }
              printf("Fine contronto del primo elemento con gli altri\n");

              INDICE = INDICE->pun; <-----------

              p1 = INDICE; <------------

              }

              A me sembra che funzioni, fammi sapere comunque.

              Ciao.
              Last edited by skyll; 23-10-2006, 11:01.
              Mercatone Italia

              Comment

              • Iena
                Banned
                • 13/06/26
                • 11949

                #8
                Sta roba l'ho fatta l'anno scorso ma adesso sono un po' arruginita... sar&#224; meglio che riprenda su gli appunti di info -_-

                Comment

                • Kitty
                  Opinionista
                  • 09/10/06
                  • 171

                  #9
                  Ciao skyll... ho provato la tua funzione e a me non funziona bene... dipende dalla senquenza dei nomi nella lista a volte produce una lista senza ripetuti a volte invece no...

                  io intanto ho provato a fare un'altra funzione che come ragionamento
                  I'm Here

                  Comment

                  • skyll
                    Lenta metamorfosi
                    • 03/05/06
                    • 2935

                    #10
                    Va meglio la tua perch&#232; ci sono due istruzioni in meno. Io ho utilizzato un puntatore in pi&#249;.
                    Io l'ho provata su carta (proprio con il disegnino di un caso d'uso), e mi pare che funzioni egregiamente.
                    Non l'ho compilata e quindi nemmeno eseguita.
                    Appena ho un p&#242; di tempo, ci voglio provare. Se intento hai risolto.....diccelo!
                    Ciao
                    Mercatone Italia

                    Comment

                    • Kitty
                      Opinionista
                      • 09/10/06
                      • 171

                      #11
                      Anche io prima faccio le prove su carta con i disegnini...
                      I'm Here

                      Comment

                      • skyll
                        Lenta metamorfosi
                        • 03/05/06
                        • 2935

                        #12
                        Cos
                        File Allegati
                        Mercatone Italia

                        Comment

                        • skyll
                          Lenta metamorfosi
                          • 03/05/06
                          • 2935

                          #13
                          Originariamente Scritto da skyll Visualizza Messaggio

                          Ti allego il sorgente liste.txt e anche il .exe zippato.
                          Ho dimenticato di inserire l'altra condizione nell'if del secondo ciclo while nella funzione eliminaRipetizioni.
                          Quella che controlla l'eta:

                          ...... && (INDICE->eta == p2->eta))
                          Mercatone Italia

                          Comment

                          • Kitty
                            Opinionista
                            • 09/10/06
                            • 171

                            #14
                            Funziona!!!

                            Finalmente l'esercizio
                            I'm Here

                            Comment

                            • skyll
                              Lenta metamorfosi
                              • 03/05/06
                              • 2935

                              #15
                              Figurati. Quando vuoi.
                              Mercatone Italia

                              Comment

                              Working...