Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Marvel's Wolverine, la recensione: Logan torna protagonista in un'avventura brutale e intensa
Marvel's Wolverine, la recensione: Logan torna protagonista in un'avventura brutale e intensa
Marvel's Wolverine porta Logan in un'avventura inedita, violenta e fortemente narrativa, costruita attorno alla sua natura di combattente e al difficile rapporto con il proprio passato. Insomniac Games punta su combattimenti spettacolari, progressione e personalizzazione, inserendo l'azione in un mondo segnato dalla persecuzione dei mutanti. Un viaggio intenso, che alterna mattanza, esplorazione e momenti sorprendentemente emotivi.
DJI Romo 2: tante novità lo rendono un robot completo
DJI Romo 2: tante novità lo rendono un robot completo
Romo 2 è la seconda generazione di robot lavapavimenti di DJI, un modello che si caratterizza per la precisione nel sistema di navigazione e per il funzionamento particolarmente silenzioso. Con le modifiche introdotte in questa seconda versione, e un posizionamento di prezzo più allineato alla concorrenza, rappresenta una valida alternativa sul mercato delle soluzioni di pulizia domestica
Sony Bravia 9 II: il True RGB alla prova, dove l'LCD sfida l'OLED
Sony Bravia 9 II: il True RGB alla prova, dove l'LCD sfida l'OLED
Il primo Sony con retroilluminazione True RGB alla prova del banco di misura e dei contenuti: luminanza enorme, colori accurati in HDR e un antiriflesso molto efficace. I limiti sono due sole HDMI 2.1 e il blooming fuori asse
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 27-05-2010, 15:48   #1
ciusss89
Senior Member
 
L'Avatar di ciusss89
 
Iscritto dal: Jul 2008
Città: mondovi
Messaggi: 1491
[C] Liste di liste.

Salve,

Ho un problema nella definizione della struttura dati. Vorrei fare una lista di liste.

Tale necessità è dattata dalla sistuzione seguente:
ho un file che contiene un numero indefinito di paziente, sul quale su ogni riga è riportato paziente è temperatura.

Esempio del file in ingresso.

1 36.3 ROSSI
1 36.6 BIANCHI
2 37.1 ROSSI
3 36.1 BIANCHI
4 39.2 ROSSI
5 34.1 ROSSI

HO pensato la struttura dati cosi:
Una lista principale che contiene soldanto i nomi dei pazienti (in questo caso solo 2), e una lista secondaria che dipenda dalla prima, la quale contiene per ogni pazienete la serie delle temperatura lette sullo stesso paziente.

per accedere alla seconda lista intendo seguire qualcosa tipo:
pntA->pntB->campo

Vorrei chiarimenti su come definere le strutture. grazie

Il mio sviluppato per il momento:
Codice:
#include    <stdio.h>
#include    <stdlib.h>
#include    <string.h>
#define     L_nome 20+1
#define     db 1
// Gestione acquisizione dati CAMPI di CC.DAT [Giorno rilevazione] [Temp paziente] [Nome]
// Lista secondaria contenente le "misurazioni sui pazienti" sui pazienti.
struct newT{
    int day;
    float temperature;
    struct newT *nextT;
    };
// Lista principale contenente la lista pazienti.
struct newP{
    int **T;
    char paziente[L_nome];
    struct newP *nextP;
    };

//*****************MAIN FUNCTIONS*****************
struct newP* scanDATA(struct newP *, FILE*);
struct newP* buildP();
struct newT* buildT();
struct newP* Move(struct newP *, char *);
struct newP* Wiev_list(struct newP *);
//*************AND OF MAIN FUNCTIONS**************

int main (){

//**********************VAR**********************
    FILE *fin1;

    struct newP *ptopP;

    ptopP=NULL;
//*******************END OF VAR******************

    if((fin1=fopen("cc.dat","r"))==NULL){
        fprintf(stderr,"\nERROR!: I can't open your file ");
        exit(EXIT_FAILURE);
      }
    ptopP=scanDATA(ptopP,fin1);


    return 0;
    }


//**************Details of Funcitions****************
struct newP* scanDATA(struct newP *ptopP, FILE* dati){
    //**debug
    if(db==1)
        printf("\n-----------FUNZIONE scanDATA-----------\n");

    int Day;
    float Temp;
    char Nome[L_nome];
    while (fscanf(dati,"%d %f %s",&Day,&Temp,Nome)!=EOF){
        //**debug
        if(db==1)
           printf("%d  %f  %s \n",Day,Temp,Nome);

        ptopP=Move(ptopP,Nome);


        }
        if(db==1)
            Wiev_list(ptopP);
    //**debug
    if(db==1)
        printf("\n-----------END OF scanDATA-------------");
    return (ptopP);
    }

struct newP* buildP(){
    struct newP *newPTR;
    newPTR=(struct newP*)malloc(sizeof (struct newP));
    if(newPTR==NULL){
        fprintf(stderr,"Memory denied");
        exit(EXIT_FAILURE);
        }
    return(newPTR);
    }

struct newT* buildT(){
    struct newT *newPTR;
    newPTR=(struct newT*)malloc(sizeof (struct newT));
    if(newPTR==NULL){
        fprintf(stderr,"Memory denied");
        exit(EXIT_FAILURE);
        }
    return(newPTR);
    }

struct newP* Move(struct newP *ptopP, char *PAZIENTE){
    int add=1;
    struct newP *ptmpSERCH;
    struct newP *ptmp;
    ptmpSERCH=ptopP;
    //CHECK!
    while(ptmpSERCH!=NULL){
        if(strcmp(PAZIENTE,ptmpSERCH->paziente)==0)
            add=0;
        ptmpSERCH=ptmpSERCH->nextP;
        }
    //NUOVO paziente
    if(add==1){
        ptmp=buildP();
        strcpy(ptmp->paziente,PAZIENTE);
        ptmp->nextP=ptopP;
        add=1;
        ptopP=ptmp;
        }
    //Dati per paziente?

    return (ptopP);
    }

struct newP* Wiev_list(struct newP *punt){
    printf("\nLista pazienti della lista:");
    while(punt!=NULL){
        printf("\n%s",punt->paziente);
        punt=punt->nextP;
        }
    }
__________________
MB: Aw9d-max CPU: E6600 @ 3,32ghz (vcore default 1,275), DDR2 2x1gb 3/4/4/12 @ 2,10V , VGA: POV 8800 GTS 320mb 648/1458/975. RAFFREDDAMENTO A LIQUIDO ARTIGINALE ...
Vendo : ROUTER STATION PRO, SISTEMA EMEDDED.
ciusss89 è offline   Rispondi citando il messaggio o parte di esso
Old 27-05-2010, 16:57   #2
simXD
Junior Member
 
Iscritto dal: May 2010
Messaggi: 7
In sintesi, non ho capito bene , vorresti una struttura che ti contenga nome e temperatura x ogni paziente?
simXD è offline   Rispondi citando il messaggio o parte di esso
Old 27-05-2010, 17:17   #3
ciusss89
Senior Member
 
L'Avatar di ciusss89
 
Iscritto dal: Jul 2008
Città: mondovi
Messaggi: 1491
Quote:
Originariamente inviato da simXD Guarda i messaggi
In sintesi, non ho capito bene , vorresti una struttura che ti contenga nome e temperatura x ogni paziente?
NO una lista che contiene solo i nomi e il puntatore ad una seconda lista che contine 2 campi.

Non si conosce a priori la dimensione ne della prima che della seconda...mi sono spiegato?
__________________
MB: Aw9d-max CPU: E6600 @ 3,32ghz (vcore default 1,275), DDR2 2x1gb 3/4/4/12 @ 2,10V , VGA: POV 8800 GTS 320mb 648/1458/975. RAFFREDDAMENTO A LIQUIDO ARTIGINALE ...
Vendo : ROUTER STATION PRO, SISTEMA EMEDDED.
ciusss89 è offline   Rispondi citando il messaggio o parte di esso
Old 27-05-2010, 20:12   #4
ciusss89
Senior Member
 
L'Avatar di ciusss89
 
Iscritto dal: Jul 2008
Città: mondovi
Messaggi: 1491
UP ragazzi???

Almeno consigliatemi...se dovreste gestire due campi, di cui non è possibile conoscere a priori le dimensioni di tali strutture cosa usereste? ricordati che una deve fare capo a quella principale.
__________________
MB: Aw9d-max CPU: E6600 @ 3,32ghz (vcore default 1,275), DDR2 2x1gb 3/4/4/12 @ 2,10V , VGA: POV 8800 GTS 320mb 648/1458/975. RAFFREDDAMENTO A LIQUIDO ARTIGINALE ...
Vendo : ROUTER STATION PRO, SISTEMA EMEDDED.
ciusss89 è offline   Rispondi citando il messaggio o parte di esso
Old 27-05-2010, 20:39   #5
simXD
Junior Member
 
Iscritto dal: May 2010
Messaggi: 7
beh... forse io una piccola idea ce l'avrei... non ho capio bene cosa vuoi fare con le struct ma non è importante, proviamo così:
hai un numero indefinito di pazienti da inserire in un vettore quindi... potresti dichiarare un vettore di grandezza ad esempio 100 e in seguito potresti eseguire un controllo ogni volta che viene inserito un paziene, per esempio, tu dichiari il tuo vettore a 100, lo carichi con il primo paziente, alla fine con un do-while potresti chiedere se ci sono altri pazienti e continuare ad eseguirlo fino a quando la risposta non sarà un no, a quel punto esce dal ciclo e finisce il programma... ora spero di non aver scritto qualcosa di errato il mio è solo un consiglio, che A MIO PARERE dovrebbe funzionare
simXD è offline   Rispondi citando il messaggio o parte di esso
Old 27-05-2010, 22:19   #6
ciusss89
Senior Member
 
L'Avatar di ciusss89
 
Iscritto dal: Jul 2008
Città: mondovi
Messaggi: 1491
Cerco di spiegarmi meglio:

Gli esercizi che ci propongono a questo livello, da come si prentano i file di imput ci rendiamo conto se usare strutture statiche o dinamiche.

I dati sono i seguenti:
DATA TEMP NOME

Si ha un numero indefinito di nomi, potrebbero esserci piu temp per lo stesso nome...

Quindi come procedo?...acquisisco i dati in modo da fare una liista PRIMARIA i cui campi sono soltanto i NOMI senza doppioni, e vorrei che il secondo campo fosse il puntatore ad una seconda struttura o sottostruttora figlia della prima contente la data e la temp.

Non posso utilizzare metedodi che prevedono di stabilire a priori le dimensioni.
__________________
MB: Aw9d-max CPU: E6600 @ 3,32ghz (vcore default 1,275), DDR2 2x1gb 3/4/4/12 @ 2,10V , VGA: POV 8800 GTS 320mb 648/1458/975. RAFFREDDAMENTO A LIQUIDO ARTIGINALE ...
Vendo : ROUTER STATION PRO, SISTEMA EMEDDED.
ciusss89 è offline   Rispondi citando il messaggio o parte di esso
Old 28-05-2010, 09:30   #7
simXD
Junior Member
 
Iscritto dal: May 2010
Messaggi: 7
ah ho capito ora scusami ma non penso davvero di avere le conoscenze necessarie x aiutarti errore mio
simXD è offline   Rispondi citando il messaggio o parte di esso
Old 28-05-2010, 09:31   #8
ciusss89
Senior Member
 
L'Avatar di ciusss89
 
Iscritto dal: Jul 2008
Città: mondovi
Messaggi: 1491
Quote:
Originariamente inviato da simXD Guarda i messaggi
ah ho capito ora scusami ma non penso davvero di avere le conoscenze necessarie x aiutarti errore mio
GRazie lo stesso..

RAGA NESSUNO??
__________________
MB: Aw9d-max CPU: E6600 @ 3,32ghz (vcore default 1,275), DDR2 2x1gb 3/4/4/12 @ 2,10V , VGA: POV 8800 GTS 320mb 648/1458/975. RAFFREDDAMENTO A LIQUIDO ARTIGINALE ...
Vendo : ROUTER STATION PRO, SISTEMA EMEDDED.
ciusss89 è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Marvel's Wolverine, la recensione: Logan torna protagonista in un'avventura brutale e intensa Marvel's Wolverine, la recensione: Logan torna p...
DJI Romo 2: tante novità lo rendono un robot completo DJI Romo 2: tante novità lo rendono un ro...
Sony Bravia 9 II: il True RGB alla prova, dove l'LCD sfida l'OLED Sony Bravia 9 II: il True RGB alla prova, dove l...
Geely EX5, un mese al volante: il SUV elettrico cinese che ci ha sorpreso (quasi) senza riserve Geely EX5, un mese al volante: il SUV elettrico ...
Mova Z70 Ultra Roller Complete: motore potente, rullo di lavaggio e l'IA a guidare Mova Z70 Ultra Roller Complete: motore potente, ...
Roblox sfida l'ecosistema gaming: app st...
OpenAI accusata di plagio dai migliori m...
Altro attacco hacker dell'IA: gli agenti...
Stiamo davvero perdendo il controllo del...
Microsoft perde un pilastro: Frank Shaw ...
Diablo V annunciato a sorpresa: il colpo...
Meno di 5 euro per il 5G: l'offerta Kena...
World of Warcraft: Forever è il Classic+...
La Serie A con DAZN e Amazon Prime con l...
Giochi Ubisoft su Steam senza Ubisoft Co...
Miami Beach ha autorizzato la maxi opera...
Apple regala un altro anno di funzioni s...
Alla fine è successo davvero: Vol...
Il meglio di Amazon del weekend in uno s...
Speciale TV in offerta su Amazon: Hisens...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 11:18.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Served by www3v