Newsgroup: it.comp.lang.c
Titolo: quesito

 temperatura minima rilevata quella giornata.
Basta un ordinamento della lista, e una funzione che trova l'elemento con la
temperatura minima, ecc. (ricerca su lista.)
Se mandi un esempio del file, si può scrivere un mini-programmino. (bastano
poche righe del file)
--
Alessandro Monti

ora (dall'1 alle 24)presa da diverse citta'
/*******************
 * meteo.c         *
 * --------------- *
 * a.laforgia 1999 *
 * --------------- *
 * DJGPP           *
 *******************/
#include <stdio.h>
#include <stdlib.h>
#define TEMPNUM     24
/* struttura contenente le informazioni minime */
/* per ogni citta' :                           */
typedef struct {
                   char *name ;
                   double min_temp ;
               }   city_info ;
/* definizione del nodo dell'albero binario : */
typedef struct city_info_tag {
                                city_info data ;
                                struct city_info_tag * left ;
                                struct city_info_tag * right ;
                             } * city_info_tree_node ;
void btree_insert ( city_info_tree_node * p, const city_info rec )
/* funzione che inserisce le informazioni relative     */
/* ad ogni citta' in un albero binario che le mantiene */
/* ordinate alfabeticamente :                          */
{
     if ( NULL == *p )
     {
        *p = malloc( sizeof * * p ) ;
        (*p)->
data.name
 = malloc( strlen( 
rec.name
 ) + 1 ) ;
        strcpy ( (*p)->
data.name
, 
rec.name
 ) ;
        (*p)->data.min_temp = rec.min_temp ;
        (*p)->left = (*p)->right = NULL ;
     }
     else
     if ( strcmp( 
rec.name
, (*p)->
data.name
 ) < 0 )
	btree_insert ( &(*p)->left, rec ) ;
     else
     	btree_insert ( &(*p)->right, rec ) ;
} /* btree_insert */
int read_next_city( city_info * rec )
/* legge la prossima citta' nell'elenco   */
/* e restituisce le informazioni relative */
{
     int i ;
     char s[20], t[80] ;
     double temp[TEMPNUM] ;
     /* lettura del nome della citta' */
     if ( fgets( t, sizeof t , stdin ) )
     {
        t[ strlen( t ) - 1 ] = '\0' ;
        rec->name = malloc( strlen( t ) + 1 ) ;
        strcpy( rec->name, t ) ;
 
        /* lettura delle temperature :                       */
        /* si potrebbe usare fscanf() ma nelle fasi di input */
        /* e' meglio conservare una certa compatibilita' tra */
        /* le funzioni.                                      */
        for ( i = 0 ; i < TEMPNUM ; i++ )
        {
            fgets( s, sizeof s, stdin ) ;
            temp[i] = atof( s ) ;
        }
 
        /* assumiamo per assurdo che la temperatura minima */
        /* sia la prima che compare nella lista, tanto...  */
        rec->min_temp = temp[0] ;
 
        /* ...si puo' sempre cambiare confrontandola con le */
        /* altre :                                          */
        for (i = 1 ; i < TEMPNUM ; i++ )
            if ( temp[i] < rec->min_temp )
               rec->min_temp = temp[i] ;
        /* ok, e' andato tutto bene */
        return 1 ;
     }
     else return EOF ;
} /* read_next_city */
void btree_write( city_info_tree_node p )
/* scrive il contenuto dell'albero binario */
{
     if ( p != NULL )
     {
        btree_write( p->left ) ;
        printf ( "citta\' : %s ; temp. min. : %5.3f\n", \
                 p->
data.name
, p->data.min_temp ) ;
        btree_write( p->right ) ;
     }
} /* btree_write */
void btree_destroy ( city_info_tree_node p )
/* distrugge l'albero binario */
{
     if ( p != NULL )
     {
        btree_destroy ( p->left ) ;
        btree_destroy ( p->right ) ;
        free ( p->
data.name
 ) ;
        free ( p ) ;
     }
} /* btree_destroy */
int main()
{
    city_info CurrentCity ;
    city_info_tree_node Tree = NULL ;
    while ( read_next_city ( &CurrentCity ) != EOF )
    {
          btree_insert( &Tree, CurrentCity ) ;
    }
    btree_write( Tree ) ;
    btree_destroy ( Tree ) ;
    return 0 ;
} /* main */
--------------------------------------------------------
* Andrea Laforgia        (
andrea_...@bigfoot.com
) *
--------------------------------------------------------

Cosa ne pensi? Ho provato a risolverli ma non ci sono riuscito. Fammi sapere
Evidentemente il tuo compilatore non č impostato per compilare il
codice ANSI, in quanto, secondo lo standard, il "casting" non č piů
necessario e le conversioni avvengono in automatico.
--
Andrea Laforgia        (
andrea_...@bigfoot.com
)

 Andrea Laforgia        (
andrea_...@bigfoot.com
)

you wrote :

--
Andrea Laforgia        (
andrea_...@bigfoot.com
)

>so dove mettere mano!-(.
Chiedo scusa per i messaggi senza contenuto che partono in automatico,
ma ho la brutta abitudine di mettere nella cassetta in uscita i
messaggi a cui risponderò successivamente alla lettura di tutti gli
altri e a volte partono insieme a quelli già scritti.
Cercherò di evitarlo in futuro.
Dunque, io non conosco il Borland C++ 4.5, ma ho il 5.02 e nel menù
Options trovi la voce Project, la quale apre una finestra con le
opzioni del compilatore, entrando in Compiler/Source compare un
riquadro in cui è possibile specificare il tipo di conformità del
codice sorgente ("Language Compliance") scegliendo tra :
- Borland extensions
- ANSI
- Unix V
- Kernighan & Ritchie
Nel mio caso (anche se non uso BC++) è settato su ANSI.
--
Andrea Laforgia        (
andrea_...@bigfoot.com
)

 wrote in message
3824479f...@diesel.cu.mi.it...

OK! l'ho trovato, l'ho settato su ANSI....ma continua dopo la compilazione a
darmi gli stessi errori di prima (impossibile convertire....etc.), in tutto
sono solo tre.
Comunque non ti preoccupare di rispondermi....è un conto tra me e questo
compilatore dispettoso!
Forse è un po' antiquato.....Pensi che debba procurarmi la versione 5.02?
Grazie.
Ciao.

Forse è un po' antiquato.....Pensi che debba procurarmi la versione 5.02?
E' strano, il mio compila correttamente il seguente codice, pur senza
una esplicita indicazione di trasformazione di tipo :
#include <stdlib.h>
main()
{
    int * p ;
    p = malloc( 10 ) ;
}
--
Andrea Laforgia        (
andrea_...@bigfoot.com
)