Visualizzazione dei risultati da 1 a 3 su 3
  1. #1
    Utente di HTML.it
    Registrato dal
    Nov 2007
    Messaggi
    24

    aiuto e consigli su esercizio liste doppiamente concatenate

    salve ragazzi devo svolgere un esercizio sulle liste a doppi puntatori.l esercizio dice: creare una funzione in C che permetti di inserire un nodo all interno di una lista a doppi puntatori contenente un elenco studenti. il nodo dovrà contenere nome, cognome matricola,esami da sostenere, esami sostenuti con data e voto. infine la lista dovrà essere ordinata in basa al nome e cognome.
    spero che qualcuno mi riesca ad aiutare.
    grazie!

  2. #2
    Utente di HTML.it
    Registrato dal
    Nov 2007
    Messaggi
    24
    io per il momento ho scritto qualkosa ma nn va bene
    ho provato a fare una funzione crea lista :
    #include <stdio.h>
    #include <malloc.h>
    #include <string.h>

    #define MAX 30

    struct studente {
    char nome[MAX];
    char cognome[MAX];
    int matricola;
    struct studente *next;
    struct studente *prew;
    struct esame *esa;
    }


    struct Data{
    int giorno;
    char mese[MAX];
    int anno;
    };

    struct Esame {
    char nomesa[30];
    int votoesa;
    struct Data *date;
    }
    typedef struct Data date;
    struct studente* Crealista();

    struct studente* Crealista()
    {
    struct studente *testa;
    struct studente *pun;
    int j, n, i;

    printf ("di quanti elementi è composta la lista:");
    scanf("%d", &n);

    if (n==0)
    testa ==NULL;
    else{
    testa=(struct studente*)malloc(sizeof(struct studente));
    printf("inserisci nome studente: ");
    scanf("%s", &testa->nome);
    printf("Inserisci il cognome: ");
    scanf("%s", &testa->cognome);
    printf("Inserisci la matricola: ");
    scanf("%d", &testa->matricola);
    printf("inserisci nome esame:");
    scanf("%s", &testa->esa.nomesa);
    printf("inserisci 0 se e da sostenere, 1 se e sostenuto");
    scanf("%d",& j);
    if (j==0)
    {
    printf("immetti data che vuoi sostenere l esame");
    printf("immetti il giorno:");
    scanf("%d",& testa->esa->date.giorno);
    printf("immetti mese:");
    scanf("%d",& testa->esa->date.mese);
    printf("immetti anno:");
    scanf("%d",& testa->esa->date.anno);
    }
    else
    {
    printf("immetti data esame sostenuto");
    printf("immetti il giorno:");
    scanf("%d",& testa->esa->date.giorno);
    printf("immetti mese:");
    scanf("%d",& testa->esa->date.mese);
    printf("immetti anno:");
    scanf("%d",& testa->esa->date.anno);
    printf("immetti voto:");
    scanf("%d",& testa->esa.votoesa);

    pun=testa;

    for(i=0; i<n; i++)
    {
    pun->next=(struct studente*)malloc(sizeof(struct esame));
    pun =pun->next;
    printf("inserisci nome studente: ");
    scanf("%s", &pun->nome);
    printf("Inserisci il cognome: ");
    scanf("%s", &pun->cognome);
    printf("Inserisci la matricola: ");
    scanf("%d", &pun->matricola);
    printf("inserisci nome esame:");
    scanf("%s", &pun->esa.nomesa);
    printf("inserisci 0 se e da sostenere, 1 se e sostenuto");
    scanf("%d",& j);
    if (j==0)
    {
    printf("immetti data che vuoi sostenere l esame");
    printf("immetti il giorno:");
    scanf("%d", &pun->esa->date.giorno);
    printf("immetti mese:");
    scanf("%d", &pun->esa->date.mese);
    printf("immetti anno:");
    scanf("%d", &pun->esa->date.anno);
    }
    else
    {
    printf("immetti data esame sostenuto");
    printf("immetti il giorno:");
    scanf("%d", &pun->esa->date.giorno);
    printf("immetti mese:");
    scanf("%d", &pun->esa->date.mese);
    printf("immetti anno:");
    scanf("%d", &pun->esa->date.anno);
    printf("immetti voto:");
    scanf("%d", &pun->esa.votoesa);
    }

    }


    }


    int main(int argc, char *argv[])
    {

    system("PAUSE");
    return 0;
    }





    sicuramente sarà quasi totalmente sbagliato l esercizio. se qualkuno saprebe darmi qualke consiglio gliene sarei grato.

  3. #3
    Utente di HTML.it
    Registrato dal
    Nov 2007
    Messaggi
    24
    ragazzi spero in un vostro aiuto, ho cambiato il programmino precedente e l ho fatto piu semplice, ma nn so come collegare il puntatore all elemento precedente e nemmeno ordinare la lista. help-me!:

    #include <stdio.h>
    #include <malloc.h>
    #include <string.h>

    #define MAX 30

    struct studente {
    char nome[MAX];
    char cognome[MAX];
    int matricola;
    char nomesa[MAX];
    int voto;
    char data[MAX];
    struct studente *next;
    struct studente *prev;
    };

    struct studente *crealista();
    void visualizza(struct studente*);


    struct studente *crealista()
    {
    struct studente *testa;
    struct studente *pun;
    int n, i;

    printf("da quanti elementi è formata la lista?:");
    scanf("%d", &n);

    if(n==0)
    testa = NULL;

    else
    {

    testa=(struct studente*)malloc(sizeof(struct studente));
    printf("inserisci nome studente:");
    scanf("%s", &testa->nome);
    printf("inserisci cognome studente:");
    scanf("%s", &testa->cognome);
    printf("inserisci matricola studente:");
    scanf("%d", &testa->matricola);
    printf("inserisci nome esame:");
    scanf("%s", &testa->nomesa);
    printf("inserisci voto esame:");
    scanf("%d", &testa->voto);
    printf("inserisci data esame:");
    scanf("%s", &testa->data);

    pun=testa;


    for(i=2;i<=n;i++)
    {
    pun->next=(struct studente*)malloc(sizeof(struct studente));
    pun = pun->next;

    printf("\ninserisci nome %d studente:", i);
    scanf("%s", &pun->nome);
    printf("inserisci cognome %d studente:", i);
    scanf("%s", &pun->cognome);
    printf("inserisci matricola %d studente:", i);
    scanf("%d", &pun->matricola);
    printf("inserisci nome %d esame:", i);
    scanf("%s", &pun->nomesa);
    printf("inserisci voto %d esame:", i);
    scanf("%d", &pun->voto);
    printf("inserisci data %d esame:", i);
    scanf("%s", &pun->data);
    }
    pun->next = NULL;
    }
    return (testa);
    }

    void visualizza(struct studente* testa)
    {
    printf("\npun_lista--->");

    while(testa!=NULL)
    {
    printf("%s", testa->nome);
    printf("-->");
    printf("%s", testa->cognome);
    printf("-->");
    printf("%d", testa->matricola);
    printf("-->");
    printf("%s", testa->nomesa);
    printf("-->");
    printf("%d", testa->voto);
    printf("-->");
    printf("%s", testa->data);
    printf("-->");
    testa = testa->next;
    }
    printf("NULL\n\n");
    }

    int main()
    {
    struct studente *pun_lista;

    pun_lista = crealista();

    visualizza(pun_lista);

    system("PAUSE");
    return 0;
    }

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