Visualizzazione dei risultati da 1 a 6 su 6

Visualizzazione discussione

  1. #4
    Utente di HTML.it L'avatar di torn24
    Registrato dal
    Aug 2008
    Messaggi
    551

    ciao

    Guarda che il programma funziona, e ne sono abbastanza sicuro perché lo compilato e provato

    Gli errori erano percorso file, funziona sia la mia che la tua sintassi, è probabile che il percorso sia sbagliato, non puoi vedere il messaggio di errore visto che non metti nessuna pausa tra printf() e exit(), e il fatto che il nodo creato nel main, che tramite il tuo codice divverrà l'ultimo nodo della lista, non è inizializzato a zero, e quindi nodo->data ha valore indefinito.


    FAMMI UN FAVORE...
    controlla il percorso file, che secondo me non è corretto, per provare puoi mettere solo il nome file che ti verrà creato nella cartella progetto...
    COMPILA il tuo codice con le correzioni e dimmi se va o no... PERCHE' A ME VA


    codice:
    ///Dichiaro e definisco il tipo Node
    typedef struct Node Node;
    struct Node{
        int data;
        Node *prev;
        Node *next;
    };
    
    
    
    
    #include <stdio.h>
    #include <stdlib.h>
    #include <time.h>
    void findBiggestNode(Node* node, FILE *infoFile);
    Node *addNode(Node *oldNode);
    
    
    ///Dichiaro una variabile globale che conterrà il nodo col dato più grande
    Node *biggestNode;
    
    
    int main()
    {
        int i;
        Node *node;
       
        FILE *info;
    
    
        
        node = malloc(sizeof(Node));
        
        if(node == NULL){
            printf("Error in memory allocation");
            getchar();// SE NON METTI UNA PAUSA NON VEDRAI MAI IL MESSAGGIO
            exit(EXIT_FAILURE);
        }
         node->data=0; // DEVI INIZIALIZZARE IL NODO A ZERO, QUESTO SARA' L'ULTIMO NODO 
        
        for(i = 0; i < 10; i++){
            node = addNode(node);
            printf("%d\n", node->data);
        }
    
    
        info = fopen("c:\\users\\thisPC\\desktop\\nodeinfo.txt", "w");
        if (info == NULL){
            printf("Error while opening file.");
            getchar();// SE NON METTI UNA PAUSA NON VEDRAI MAI IL MESSAGGIO DI ERRORE
            exit(EXIT_FAILURE);
        }
        
        
        
         
        findBiggestNode(node, info);
    
    
        fclose(info);
        getchar();// PAUSA 
        
        return 0;
    }
    
    
    
    
    
    
    
    
    ///Definizione di funzione di cerca del nodo col dato più grande
    void findBiggestNode(Node* node, FILE *infoFile){
        ///Alloco memoria per la variabile globale
        biggestNode = malloc(sizeof(Node));
    
    
        ///Assegno il minimo al nodo più grande
        biggestNode->data = 0;
    
    
        ///Ciclo che scorre la lista. Se l'elemento della lista considerato ha un valore più alto di biggestNode, allora memorizzo
        ///l'indirizzo dell'elemento della lista in biggestNode
        while(node != NULL){
            if(node->data > biggestNode->data){
                biggestNode = node;
                fprintf(infoFile, "Trovato nuovo valore massimo = %d\n\n", node->data);
            }
            ///Aggiorno la lista
            node = node->next;
        }
    }
    
    
    ///Funzione di costruzione della lista
    Node *addNode(Node *oldNode){
        ///Dichiaro l'elemento della lista da collegare
        Node *newNode;
    
    
        ///Dò memoria al puntatore appena dichiarato
        newNode = malloc(sizeof(Node));
    
    
        ///Assegno un numero casuale al campo data
        newNode->data = rand() % 10;
    
    
        ///Collego l'ultimo elemento in modo che sia inserito in testa alla lista
        oldNode->prev = newNode;
        newNode->next = oldNode;
        newNode->prev = NULL;
    
    
        ///Valore di ritorno della funzione
        return newNode;
    }
    Ultima modifica di torn24; 07-08-2015 a 10:11
    Tecnologia

Tag per questa discussione

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.