Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 12

Discussione: [C] liste

  1. #1
    Utente di HTML.it
    Registrato dal
    Dec 2009
    Messaggi
    9

    [C] liste

    Riesco ad inserire i valori, poi alla fine non li stampa di seguito; uso dev C++
    il problema penso sia nella funzione inserisciTesta...
    perchè se elimino quella funzione e aggiungo nella funzione costruisciLista:
    N->next=L;
    L=N;
    mi funziona.


    codice:
    #include <stdio.h>
    #include<stdlib.h>
    
    typedef struct nodo *lista;
    typedef struct nodo{
            int val;
            lista next;
            } nodo;
            
    
    lista costruisciLista (void);
    lista inserisciTesta(lista L, nodo *N);
    void stampaLista (lista L);
    
    int main (void)
    {
        lista lis;
        nodo *n;
        lis=costruisciLista();
        lis=inserisciTesta(lis,n);
        stampaLista(lis);
        system("PAUSE");
        return 0;
    }   
        
    
    
    lista costruisciLista(void)
    {
          lista N,L=NULL;
          int val;
          printf("inserisci il primo valore: ");
          scanf("%d", &val);
          
          while (val)
          {
                N=(nodo*)malloc(sizeof (nodo));
                N->val=val;
                L=inserisciTesta(L,N);
                
                printf("\nInserisci prossimo valore <0 per terminare>: ");
                scanf("%d", &val);
          }
    return L;
    }      
    
    
    lista inserisciTesta(lista L, nodo *N)
    {
          N->next = L;
          L=N;
          return L;
    }
    
    
    void stampaLista(lista L)
    {
         while (L!=NULL)
         {
               printf("%d\n", L->val);
               L=L->next;
         }
    }

  2. #2
    Utente di HTML.it
    Registrato dal
    Jul 2008
    Messaggi
    1,326

    Re: [C] liste

    Originariamente inviato da clock2
    il problema penso sia nella funzione inserisciTesta...
    Il problema sta nel fatto che, dopo aver costruito la lista con l'apposita funzione, in main(), richiami la funzione "inserisciTesta()" prima della stampa, solo che a questa passi la testa della lista "lis" e un puntatore n che non ha ragione di esistere: non gli hai allocato spazio e non gli hai assegnato alcun valore. Per questo, quando poi nella funzione tenti di accedere al suo campo "next" con l'istruzione N -> next, giustamente si rompe tutto.

    Elimina la riga "inserisciTesta()" da main() e tutto si risolve.

    Comunque non è molto carino scrivere funzioni che restituiscano uno stesso parametro di input dopo averlo modificato. Per fare queste cose si usano i puntatori. Prova a sostituire

    codice:
    lista inserisciTesta(lista L, nodo *N);
    con

    codice:
    void inserisciTesta(lista *L, nodo *N);
    e cerca di scrivere la funzione per modificare il puntatore L sfruttando il (cosiddetto) passaggio per riferimento.

    Originariamente inviato da clock2
    uso dev C++
    Disinstàllalo.

    http://www.codeblocks.org/
    http://www.microsoft.com/Express/VC/
    every day above ground is a good one

  3. #3

    Re: Re: [C] liste

    Originariamente inviato da YuYevon
    Il problema sta nel fatto che, dopo aver costruito la lista con l'apposita funzione, in main(), richiami la funzione "inserisciTesta()" prima della stampa, solo che a questa passi la testa della lista "lis" e un puntatore n che non ha ragione di esistere: non gli hai allocato spazio e non gli hai assegnato alcun valore. Per questo, quando poi nella funzione tenti di accedere al suo campo "next" con l'istruzione N -> next, giustamente si rompe tutto.

    Elimina la riga "inserisciTesta()" da main() e tutto si risolve.

    Comunque non è molto carino scrivere funzioni che restituiscano uno stesso parametro di input dopo averlo modificato. Per fare queste cose si usano i puntatori. Prova a sostituire

    codice:
    lista inserisciTesta(lista L, nodo *N);
    con

    codice:
    void inserisciTesta(lista *L, nodo *N);
    e cerca di scrivere la funzione per modificare il puntatore L sfruttando il (cosiddetto) passaggio per riferimento.



    Disinstàllalo.

    http://www.codeblocks.org/
    http://www.microsoft.com/Express/VC/
    Ma con visual c++ è possibile creare anche un progetto in C?
    "Estremamente originale e fantasioso" By darkiko;
    "allora sfiga crepuscolare mi sa che e' meglio di atmosfera serale" By NyXo;
    "per favore, già è difficile con lui" By fcaldera;
    "se lo apri te e invece di "amore" ci metti "lavoro", l'effetto è lo stesso" By fred84

  4. #4
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,481

    Re: Re: Re: [C] liste

    Originariamente inviato da Neptune
    Ma con visual c++ è possibile creare anche un progetto in C?
    Perchè no?
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  5. #5

    Re: Re: Re: Re: [C] liste

    Originariamente inviato da oregon
    Perchè no?
    Ma parliamo di Visual C++ contenuto in vusal studio che lavora sul framework? Perchè a me fa creare solo progetti visual c++ ove, se gli metto un codice in C, mi da svariati errori. Oppure sono io che sbaglio qualcosa?
    "Estremamente originale e fantasioso" By darkiko;
    "allora sfiga crepuscolare mi sa che e' meglio di atmosfera serale" By NyXo;
    "per favore, già è difficile con lui" By fcaldera;
    "se lo apri te e invece di "amore" ci metti "lavoro", l'effetto è lo stesso" By fred84

  6. #6
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,481

    Re: Re: Re: Re: Re: [C] liste

    Originariamente inviato da Neptune
    Ma parliamo di Visual C++ contenuto in vusal studio che lavora sul framework?
    Sì, ma non devi lavorare necessariamente con il framework. Puoi anche creare progetti nativi Win32.

    Perchè a me fa creare solo progetti visual c++ ove, se gli metto un codice in C, mi da svariati errori. Oppure sono io che sbaglio qualcosa?
    Quali errori ?
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  7. #7

    Re: Re: Re: Re: Re: Re: [C] liste

    Originariamente inviato da oregon
    Sì, ma non devi lavorare necessariamente con il framework. Puoi anche creare progetti nativi Win32.



    Quali errori ?
    Ho visaul studio 2010, creo un nuovo progetto di tipo CLR: Console Application benchè me lo segna come visual C++.

    A questo punto mi ha creato un template vuoto del tipo:

    codice:
    // Prova.cpp : main project file.
    
    #include "stdafx.h"
    
    using namespace System;
    
    int main(array<System::String ^> ^args)
    {
        Console::WriteLine(L"Hello World");
        return 0;
    }
    Io però devo fare un programma in C, quindi non in visual C++, quindi cancelo questa struttura e ci incollo la struttura di un programma in C, un semplice:

    codice:
    #include <stdio.h>
    #include <stdlib.h>
    
    int main()
    {
      printf("hello world");	
      return 0;
    }

    Facendo Debug > Start Debuging, ottengo il seguente output di errore:

    codice:
    1>------ Build started: Project: Prova, Configuration: Debug Win32 ------
    1>Build started 15/12/2009 18:41:13.
    1>_PrepareForBuild:
    1>  Creating "Debug\Prova.unsuccessfulbuild" because "AlwaysCreate" was specified.
    1>GenerateTargetFrameworkMonikerAttribute:
    1>Skipping target "GenerateTargetFrameworkMonikerAttribute" because all output files are up-to-date with respect to the input files.
    1>ClCompile:
    1>  stdafx.cpp
    1>  AssemblyInfo.cpp
    1>  Prova.cpp
    1>Prova.cpp(1): warning C4627: '#include <stdio.h>': skipped when looking for precompiled header use
    1>          Add directive to 'StdAfx.h' or rebuild precompiled header
    1>Prova.cpp(2): warning C4627: '#include <stdlib.h>': skipped when looking for precompiled header use
    1>          Add directive to 'StdAfx.h' or rebuild precompiled header
    1>Prova.cpp(9): fatal error C1010: unexpected end of file while looking for precompiled header. Did you forget to add '#include "StdAfx.h"' to your source?
    1>  Generating Code...
    1>
    1>Build FAILED.
    1>
    1>Time Elapsed 00:00:01.91
    ========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========
    Ora ho sbaglio nel tipo di progetto che creo o c'è qualcosa che non va.
    "Estremamente originale e fantasioso" By darkiko;
    "allora sfiga crepuscolare mi sa che e' meglio di atmosfera serale" By NyXo;
    "per favore, già è difficile con lui" By fcaldera;
    "se lo apri te e invece di "amore" ci metti "lavoro", l'effetto è lo stesso" By fred84

  8. #8
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,481
    Non devi creare un progetto managed (CLR) perchè tu non vuoi usare il framework.

    Usa un progetto console Win32.

    P.S. Ma perchè il 2010 che è in beta? Meglio il 2008 ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  9. #9
    Ok ho risolto, dovevo fare un progetto vuoto
    "Estremamente originale e fantasioso" By darkiko;
    "allora sfiga crepuscolare mi sa che e' meglio di atmosfera serale" By NyXo;
    "per favore, già è difficile con lui" By fcaldera;
    "se lo apri te e invece di "amore" ci metti "lavoro", l'effetto è lo stesso" By fred84

  10. #10
    Originariamente inviato da oregon
    Non devi creare un progetto managed (CLR) perchè tu non vuoi usare il framework.

    Usa un progetto console Win32.

    P.S. Ma perchè il 2010 che è in beta? Meglio il 2008 ...
    Sisi ho risolto facendo un progetto vuoto.
    Ad ogni modo la 2010 perchè questa ce l'ho già installata (dovevo provarlo per vedere le nuove funzionalità in visualbasic.net e asp.net).
    "Estremamente originale e fantasioso" By darkiko;
    "allora sfiga crepuscolare mi sa che e' meglio di atmosfera serale" By NyXo;
    "per favore, già è difficile con lui" By fcaldera;
    "se lo apri te e invece di "amore" ci metti "lavoro", l'effetto è lo stesso" By fred84

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 © 2026 vBulletin Solutions, Inc. All rights reserved.