Esame di ingegneria informatica aiuto grazie mille

di il
36 risposte

36 Risposte - Pagina 2

  • Re: Esame di ingegneria informatica aiuto grazie mille

    Ecco il mio prog completo... dopo devo mettere i commenti e i files... che non ho capito ninete di questi ultimi!!!!!!

    /*Programma per la creazione di una rubrica telefonica, ultima scrittura 27 ottobre 2004 da Eleonora Brugnolli*/

    #include <stdio.h>
    #include <srting.h>

    typedef struct
    {
    char Via[30];
    char Citta[30];
    char Stato [30];
    char NCivico[5];
    int Cap;
    int TelefonoCasa;
    int Cellulare;
    char Email[30];
    int TelefonoUfficio;
    char Nome[30];
    char Cognome[30];
    char CodFiscale[16];
    }Persona;

    int Contatore, Nmax;
    int Nmax = 10;
    Persona x[Nmax];

    main()
    {
    printf(“Inserisci numero massimo dei nomi\n”);
    scanf (“%d”, &NMax);

    Contatore = 0;
    while (Contatore <= Nmax)
    {
    printf ("Inserisci Nome\n");
    scanf ("%s",&x[Contatore].Nome);

    printf ("Inserisci Cognome\n");
    scanf ("%s",&x[Contatore].Cognome);

    printf ("Inserisci CodFiscale\n");
    scanf ("%s",&x[Contatore].CodFiscale);

    printf ("Inserisci Via\n");
    scanf ("%s",&x[Contatore].Via);

    printf ("Inserisci Citta\n");
    scanf ("%s",&x[Contatore].Citta);

    printf (“Inserisici Cap\n”);
    scanf (“%d”, &x[Contatore].Cap);

    printf ("Inserisci NCivico\n");
    scanf ("%s",&x[Contatore].NCivico);

    printf ("Inserisci Stato\n");
    scanf ("%s",&x[Contatore].Stato);

    printf (“Inserisci TelefonoCasa\n”);
    scanf (“%d”, &x[Contatore].TelefonoCasa);

    printf (“Inserisci Cellulare\n”);
    scanf (“%d”, &x[Contatore].Cellulare);

    printf (“Inserisci Email\n”);
    scan (“%s”, &x[Contatore].Email);

    printf (“Inserisci TelefonoUfficio\n”);
    scanf (“%d”, &x[Contatore].TelefonoUfficio);
    }

    Contatore= Contatore + 1


    If (x.TelefonoUfficio=x.TelefonoCasa)
    printf (“Ufficio==Casa\n”);

    else
    printf (“Ufficio!=Casa\n”);

    return 0;
    }



    Eleonora
  • Re: Esame di ingegneria informatica aiuto grazie mille

    <BLOCKQUOTE id=quote><!--<font size= face="" id=quote>-->quote:<hr height=1 noshade id=quote>
    int Contatore, Nmax;
    int Nmax=10


    devo poi metterlo dopo il main

    printf ("inserisci numero massimo nomi\n");
    scanf (%d, &Nmax);
    <hr height=1 noshade id=quote></BLOCKQUOTE id=quote><!--</font id=quote><font face="" size= id=quote>-->

    Stavolta non ho capito io

    Comunque, con

    int Contatore, Nmax;
    int Nmax=10

    ri-dichiari Nmax.

    Coretto sarebbe:

    int Contatore;
    int Nmax = 10;


    Giovanni
    ---
    http://www.y2ksw.com/vbulletin
  • Re: Esame di ingegneria informatica aiuto grazie mille

    <BLOCKQUOTE id=quote><!--<font size= face="" id=quote>-->quote:<hr height=1 noshade id=quote>
    volevo mettere anche dei commentini (al prof piacciono)ad esempio

    int Contatore, Nmax; /*definisco un tipo dato (Contatore e Nmax)di tipo intero*/

    int Nmax = 10; /*assegno a Nmax una valore*/
    Persona x[Nmax]; /*assegno a Persona un array di 10 elementi*/

    printf ("Inserisci Nome\n");
    scanf ("%s",&x[Contatore].Nome /*assegno a NOme, l'idirizzo di x[Contatore] e a x l'indirizzo di Contatore*/

    sono giusti?
    <hr height=1 noshade id=quote></BLOCKQUOTE id=quote><!--</font id=quote><font face="" size= id=quote>-->

    Sì. I commenti /**/ sono conformi allo standard ANSI e sono interpretati da tutti i compilatori C che aderiscono a questo standard.

    I commenti /**/ hanno però un difetto: racchiudono un blocco, e i blocchi non possono essere nidificati. Quindi esiste un altro tipo di commento, che inizia con // ed è valido per ina sola riga. Usando questo per documentare il codice, si permette al programmatore di escludere parte del codice (funzioni intere) con /**/ in un secondo momento. Per il codice documentato interamente con /**/, questo non è possibile, e si deve poi usare #if 0 ... #endif per escludere le porzioni di prova/annotazione e questi rendono il codice difficile da leggere. Sono chiamate Pseudo-Istruzioni, che riguardano solo il compilatore (non produce codice eseguibile).

    Commentare va bene, ma bisogna farlo con criterio. Il codice troppo documentato diventa un mattone chilometrico e non si capisce più nulla.

    Invece si usano descrittori auto-documentati, come ad esempio:

    typedef struct {...} Persone;

    E così non è necessario annotare:

    // Struttura persone

    o

    /* Struttura persone */

    perché è sott'inteso che struct è una struttura, e il nome fa il resto.

    E' ben diverso se hai, ad esempio, da fare con nomi criptici, e di questi ne vedrai un bel po' in C.

    typedef struct {...} WAVE_HDR; // struttura testata audio

    Ma, se ci guardi bene, nei file *.h queste documentazioni mancano. Perché? Perché quando ti servono, saprai già a cosa sono utili, e quindi è fiato sprecato.

    Per documentare *bene*, bisogna avere tuttavia un minimo di esperienza, e quindi si cerca:

    a) dare dei nomi implicitamente documentati
    b) ragruppare la documentazione in blocchi logici
    c) scrivere il codice in modo che non richiede documentazione
    d) dividere le procedure lunghe in unità più piccole

    Il punto c) è ovviamente più difficile da raggiungere, ma dopo una decina di anni direi che ce la farai

    Giovanni
    ---
    http://www.y2ksw.com/vbulletin
  • Re: Esame di ingegneria informatica aiuto grazie mille

    La questione dei file è un ginepraio. Io uso sempre, senza eccezione, le API di Windows, perché almeno capisco cosa succede. Credo che per l'ANSI C esistono delle macro, che, correggimi, si chiamano sprintf().

    Non le ho *mai* usate, per cui non so neanche cosa fanno e come si usano. So soltanto che in determinate situazioni non fanno quel che si desidera.

    Con le API invece vai a livello basso, accedi direttamente al file system.

    Diciamo, grazie alle stutture, è abbastanza semplice fare un database, e scrivere e leggere. Tuttavia, per gestire i record, dovresti creare una serie di funzioni, che fanno la lettura e scrittura. Come ad esempio:

    int ScriviRecord(Persona x, int dwIndex)
    {
    int dwBytes;
    int dwSize;
    int hFile;

    hFile = CreateFile(...);
    if(hFile == INVALID_HANDLE_VALUE)
    {
    return FALSE;
    }

    SetFilePointer(hFile, sizeof(Persona) * dwIndex), NULL, FILE_BEGIN);

    WriteFile(hFile, x, sizeof(Persona), &dwBytes, NULL);

    CloseHandle(hFile);

    return dwBytes == sizeof(Persona) ? TRUE : FALSE;
    }

    CreateFile(...) è così perché non ricordo tutti i parametri

    Quindi, se non è assolutamente indispensabile, lascia a parte il database, credo che un incasinato codice per la sua gestione non giova al voto, e se usi le API, potresti mettere in crisi il prof

    Giovanni
    ---
    http://www.y2ksw.com/vbulletin
  • Re: Esame di ingegneria informatica aiuto grazie mille

    Int Contatore;
    int Nmax = 10;
    Persona x[Nmax];

    main()
    {
    printf(“Inserisci numero massimo dei nomi\n”);
    scanf (“%d”, &NMax);


    se io ho già dichiarato ke Nmax è 10 devo poi mettere
    printf ("inserisci numero massimo nomi");
    scanf (“%d”, &NMax);
    perchè ho già detto quale è il numero massijo è Nmax



    ora hai capito!!!?????????




    Eleonora
  • Re: Esame di ingegneria informatica aiuto grazie mille

    Allora vorlvo sapere alcuen cose scanf (&x[Contatore], significa che do a x il valore della cella contatore?vero?
    e Persona x[Nmax]; significa cheassegno a Persona un array di 10 elementi? i file che ci ha spiegato sono questi:
    Nel C il trattamento dei file è disponibile attraverso la libreria <stdio.h> e tale implementazione tiene conto del Sistema Operativo sul quale il programma viene eseguito.
    Un programma in C che desidera avere accesso ad un file deve aprire un flusso di comunicazione indicando se vuole aprire un file esistente o aprirne uno nuovo. Al termine il flusso deve essere chiuso.
    Per aprire un flusso è necessario dichiarare una variabile puntatore e usare la funzione di libreria fopen.
    Il puntatore serve per fare riferimento in seguito al file corrispondente al particolare flusso.
    La chiusura del flusso con fclose impedisce ulteriori riferimenti al file.
    Esistono flussi di comunicazione binari e di testo
    Secondo la modalità di apertura il file aperto viene in seguito trattato in maniera diversa.
    Un flusso binario è una sequenza di byte
    Un flusso di testo è una sequenza di caratteri (ASCII) con l’interpretazione ambientale dei caratteri Newline e End Of File (EOF).
    La variabile puntatore punta ad un oggetto struct di tipo FILE.
    FILE è un tipo strutturato che contiene:
    Un campo con la specifica della modalità di utilizzo: lettura, scrittura, lettura/scrittura (r,w,rw)
    Un campo per la posizione corrente sul file, che punta cioè al prossimo byte da leggere o scrivere
    Un campo di indicatore di errore
    Un campo contenente l’indicatore di EOF, cioè di raggiunto fine del file.
    Una variabile fp che punta a un file è definita:
    FILE *fp;
    FILE *fopen(nomefile, modalità)
    Apre un file, eventualmente creandolo, e vi associa un flusso. Restituisce l’indirizzo della struttura di tipo FILE. Le modalità di apertura possono essere:
    “r”, “w”, “a” rispettivamente lettura, scrittura da inizio file e scrittura da fine file in modalità testo
    “rb”, “wb”, “ab” rispettivamente lettura, scrittura da inizio e fine file in modalità binaria
    “r+”, “w+”, “a+” rispettivamente lettura/scrittura da inizio e fine file in modalità testo
    “rb+”, “wb+”, “ab+” rispettivamente lettura/scrittura da inizio o fine file in modalità binaria.
    int fclose(FILE *fp)
    Chiude il file cui fa riferimento il puntatore fp. Dopo la chiusura a fp viene assegnato valore NULL. Il valore restituito è 0 se l’operazione è corretta altrimenti EOF.
    int remove (nomefile)
    Cancella il file nomefile. Restituisce 0 se l’operazione è corretta.
    int rename (vecchionome, nuovonome)
    Rinomina il file chiamato vecchionome con con nuovonome. Restituisce 0 se operazione corretta
    int ferror (FILE *fp)
    Controlla se è stato commesso un errore nella precedente operazione di r/w. Restituisce 0 se l’operazione è corretta.
    int feof (FILE *fp)
    Controlla se è stato raggiunto lo EOF nella precedente operazione di r/w. Restituisce 0 se operazione OK.
    int fprintf(FILE *fp, stringa di controllo, elementi) e int fscanf(FILE *fp, stringa di controllo, indirizzo elementi) hanno il medesimo significato di scanf e printf, ma agiscono su *fp
    int getc(FILE *fp) e int fgetc(FILE *fp) leggono il prossimo carattere da *fp, restituendolo come intero
    int putc(int c, FILE *fp) e int fputc(int c, FILE *fp) scrivono come prossimo carattere del file *fp il carattere specificato tra i parametri, restituendolo come intero
    int getchar(void) e int putchar(int c) sono le versioni che utilizzano lo std i/o delle funzioni getc e putc.
    il resto se voui lo trovi su

    http://www.inf.unitn.it\Intranet\index.htlm




    Eleonora
  • Re: Esame di ingegneria informatica aiuto grazie mille

    Char *fgets(char *s, int n, FILE *fp) legge n-1 caratteri, o fino a newline o EOF dal file puntato da fp, inserendoli nell’array s. Inserisce il terminatore di stringa ‘\0’. Restituisce il primo carattere se l’operazione è corretta oppure NULL
    int fputs(char *s, FILE *fp) scrive sul file puntato da fp il contenuto della stringa puntata da s. ‘\0’ NON viene scritto. Restituisce 0 se l’operazione è corretta.
    char *gets(char *s) e int puts(char *s) sono le versioni delle precedenti funzioni che utilizzano lo std i/o


    int fseek(FILE *fp, long offset, int refpoint) consente di spostare l’indicatore di posizione per effettuare accessi diretti al file puntato da fp.
    offset è espresso in byte e si riferisce alla posizione refpoint.
    refpoint può assumere i valori:
    SEEK_SET, scostamento rispetto all’inizio del file
    SEEK_CUR, scostamento rispetto alla posizione corrente
    SEEK_END, scostamento rispetto alla fine del file.
    long ftell(FILE *fp) restituisce il valore corrente dell’indicatore di posizione del file specificato

    int fread(void *ptr, dimelemento, numelementi, FILE *fp) legge un blocco di dati binari o testuali dal file specificato e li memorizza nel vettore identificato da ptr. La funzione termina correttamente se legge il numero di byte richiesti (dimelemento *numelementi) o se incontra EOF
    int fwrite(void *ptr, dimelemento, numelementi, FILE *fp) scrive un blocco di dati binari o testuali sul file specificato. La funzione termina correttamente se scrive (dimelemento * numelementi) byte, oppure se incontra un EOF.

    /* Funzione per la copia di un file in un altro: versione un carattere alla volta */
    #include <stdef.h>
    #include <stdio.h>
    #define FAIL 0
    #define SUCCESS 1
    int copyfile ( char *infile, char *outfile )
    {
    FILE *fp1, *fp2;
    if (( fp1 = fopen ( infile, “rb” )) == NULL ) /* apertura file lettura modo binario */
    return FAIL;
    if (( fp2 = fopen ( outfile, “wb” )) == NULL ) /* apertura file scrittura binaria */
    {
    fclose ( fp1 );
    return FAIL;
    }
    while ( !feof ( fp1 )) /* meglio usare feof con i file binari; EOF è un ASCII */
    putc ( getc ( fp1 ), fp2 ); /* scrive caratt. letto con getc(fp1)) su fp2 */
    fclose ( fp1 );
    fclose ( fp2 );
    return SUCCESS;
    }



    es2

    /* Funzione per la copia di un file in un altro: versione una riga alla volta */
    #include <stdef.h>
    #include <stdio.h>
    #define FAIL 0
    #define SUCCESS 1
    #define LINESIZE 100
    int copyfile ( char *infile, char *outfile )
    {
    FILE *fp1, *fp2;
    char line [ LINESIZE ];
    if (( fp1 = fopen ( infile, “r” )) == NULL ) /* apertura in lettura modo testo */
    return FAIL;
    if (( fp2 = fopen ( outfile, “w” )) == NULL ) /* apertura in scritt. modo testo */
    {
    fclose ( fp1 );
    return FAIL;
    } /* fgets aggiunge NULL automaticamente dopo ultimo char letto in array */
    while ( fgets ( line, LINESIZE - 1, fp1 ) != NULL) /* fget fornisce NULL a fine file */
    fputs ( line, fp2 ); /* scrive l’array char line su fp2 */
    fclose ( fp1 );
    fclose ( fp2 );
    return SUCCESS;


    /* Funzione per la copia di un file in un altro: versione una riga alla volta */
    #include <stdef.h>
    #include <stdio.h>
    #define FAIL 0
    #define SUCCESS 1
    #define LINESIZE 100
    int copyfile ( char *infile, char *outfile )
    {
    FILE *fp1, *fp2;
    char line [ LINESIZE ];
    if (( fp1 = fopen ( infile, “r” )) == NULL ) /* apertura in lettura modo testo */
    return FAIL;
    if (( fp2 = fopen ( outfile, “w” )) == NULL ) /* apertura in scritt. modo testo */
    {
    fclose ( fp1 );
    return FAIL;
    } /* fgets aggiunge NULL automaticamente dopo ultimo char letto in array */
    while ( fgets ( line, LINESIZE - 1, fp1 ) != NULL) /* fget fornisce NULL a fine file */
    fputs ( line, fp2 ); /* scrive l’array char line su fp2 */
    fclose ( fp1 );
    fclose ( fp2 );
    return SUCCESS;
    }


    Eleonora
  • Re: Esame di ingegneria informatica aiuto grazie mille

    È giusto scrivere


    while(x.Stato==Italia)
    printf (“La persona …(nome persona) è italiana\n”)


    poi se voglio scrivere che f

    intantochè il cognome della persona 1= cognome della persona 2 o della persona 3 o della persona 4 fino a 10 cm scrivo
    printf ("la persona 1 e 2 sono parenti"), lo stesso se voglio scrivere

    fintantochè la via della persona uno= via persona 2 o 3o....10 e hanno lo stesso numero di telefono

    printf ("le persone 1 e 2 abitano nella stessa casa")


    cm faccio? i files quasi quasi non li metto.... non ci capisco dentro niente


    Eleonora
  • Re: Esame di ingegneria informatica aiuto grazie mille

    Ancora una cosa

    If (x.TelefonoUfficio=x.TelefonoCasa)
    printf (“Ufficio==Casa\n”);

    else
    printf (“Ufficio!=Casa\n”);

    return 0; è giusto?
    scusa se ti rompo... ma comincia l'agitazione!!!!!!!!!!!

    Eleonora
  • Re: Esame di ingegneria informatica aiuto grazie mille

    <pre id=code><font face=courier size= id=code>
    If (x.TelefonoUfficio == x.TelefonoCasa)
    {
    printf (“Ufficio == Casa\n”);
    }
    else
    {
    printf (“Ufficio != Casa\n”);
    }
    </font id=code></pre id=code>

    Se metti un solo '=', fai in verità questa operazione:

    <pre id=code><font face=courier size= id=code>
    x.TelefonoUfficio = x.TelefonoCasa;
    If(x.TelefonoUfficio)
    {
    printf (“Ufficio == Casa\n”);
    }
    else
    {
    printf (“Ufficio != Casa\n”);
    }
    </font id=code></pre id=code>

    Non ti agitare e non strafare. Le proceudre che hai incollato mi hanno rinfrescato un po' la memoria, ma per te non sono applicabili, perché copiano da file a file etc., ma non scrivono delle righe, e tanto meno le leggono.

    Un database sarebbe un po' troppo, credimi, perché bisogna poi anche prevedere la lettura ed evitare che si inseriscono record duplicati. La lettura e scrittura di file è affascinante, ma è una scienza, e secondo me basta sapere, per il momento, che esistono le procedure che lo fanno, e forse, in grandi linee, come funzionano.

    E in grandi linee fanno questo:

    Prendono in carico un nome di file, riservano uno spazio in memoria, e ritornano un 'handle', univoco per ogni file aperto. Tramite questo handle e le macro di lettura e scrittura si possono, appunto, leggere e scrivere flussi di dati in modalità diverse, sequenziale e random, e alla fine di tutte le operazioni chiudere e rilasciare questo pezzo di memoria. Da quel momento il handle non è più valido e non dovrà più essere utilizzato.

    La memoria in cui stai lavorando, è praticamente un file virtuale, che è valido per l'istanza dell'eseguibile, e una dichiarazione 'int' non è altro che un handle a una specifica locazione in memoria. Un array da al programma la possibilità di accedere in modo random agli elementi che contiene, ma a differenza di file veri, non può essere ingrandito o ridotto in modo semplice.

    Riposati che è meglio, e ricordati che gli insegnanti non sono cannibali. Un esame non è altro che una semplice verifica di apprendimento, e se la maggioranza fallisce, è fallito anche il prof, e dovrà fare i conti col preside. Quindi cercherà di non essere troppo invadente nella scelta dei temi...

    Giovanni
    ---
    http://www.y2ksw.com/vbulletin
  • Re: Esame di ingegneria informatica aiuto grazie mille

    Ho trovato sul libro che si fa:

    FILE *Rubri (nome file)

    void ServiSalvataggio (void)
    void ServiModifica (void) (non so perchè si usa void)
    void ServiEleiminazione(void) (a cosa serve)

    ...... (tutte le altre variabili, Nmax, Contatore... struct....)


    main()

    printf
    scanf.....quello che ho già scritto


    poi [variabili e tipi necessari per la creazione di un menu... dichiarazioni... non so cosa scrivere];

    while Contatore != NMax o Contatore<=NMax (ho sostit do\while con while e Contatore co Fine = False )

    {puts ("\n Sono disponibili le seguenti operazioni. Per selezionare un'operazione premere il tasto a destra e invio\n");

    puts ("Salvataggio Persona (ox?) S");

    puts ("Modifica Persona M");

    puts (Eliminazione Persona);


    switch

    {case 'S': ServiSalvataggio ();
    break;

    case M: ServiMOdifica ();
    break;

    case E: ServiEliminazione):
    break}
    }


    però non so perchè si sa puts invece che fprintf (per i file)e se serve mettere switch... per cosa... insomma devo creare un menù dovo se calchi una lettera corrisponde un'operazione!!!!é questo in pratica che devo fare!!!!!!!!1



    Eleonora
  • Re: Esame di ingegneria informatica aiuto grazie mille

    If (x.TelefonoUfficio==x.TelefonoCasa)

    {
    printf (“Ufficio==Casa\n”);
    };

    else

    {
    printf (“Ufficio!=Casa\n”);
    };

    if (x[Contatore].Cognome==x[Contatore+1].Cognome)

    {
    printf (“Le persone sono parenti\n”)
    };
    if (x[Contatore].Via==x[Contatore+1].Via)

    {
    printf (“le persone abitano nella stessa casa\n”)


    è giusto?grazie mille!!!!

    Eleonora
  • Re: Esame di ingegneria informatica aiuto grazie mille

    Altre cosette così quendo rispondi risp a tutti e 3 i miei messaggi!!!

    1) perchè devo scrivere persona x[NMAx]?

    2)perchè scrivo printf("inserisci nome"); scanf(x[Contatore].... e non x[NMax]?

    3) al posto di Contatore potevo mettere un'altra cosa es Rubrica o altro?

    grazie

    NB: vedi anche i messaggi sopra

    Eleonora
  • Re: Esame di ingegneria informatica aiuto grazie mille

    Ciao,
    non c'è un altro modo per creare un menù per compiere operazioni di salvatagio, modifica ed eliminazione sempre attraverso i file...ma non con void e switch... più semplice????

    non vedo l'ora di finire il mio programmino!!!ma per finirlo mi servono queste ultime informazioni!!!!!!!!!



    grazie!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!11111

    Eleonora
  • Re: Esame di ingegneria informatica aiuto grazie mille

    Void non serve a nulla, significa: nulla.

    Una funzione che restituisce void, non restituisce alcun valore, e una che prende void come parametro, non prende parametri.

    Una funzione che prende void* come parametro, prende un qualsiasi tipo di parametro. E' poi compito della procedura di smistare le cose.

    Ad esempio,

    memcpy(void *, void *, unsigned integer)

    prende due puntatori qualsiasi ed effettua la copia. A memcpy non importa quali siano i puntatori.

    Per quanto riguarda i file, ci sono mille modi. Io credo che facendolo vedere concettualmente con due righe di codice va bene (anche se non funziona). Se vuoi davvero scrivere e leggere file, supera ogni limite di questa discussione, perché immagino che non avete ancora bene appreso cosa significa. Non si può fare un piccolo pezzo nella speranza che funziona, tantomeno farlo in una sola settimana.

    Le funzioni di base che vi servono sono:

    - lettura di tutto il file e metterlo in un array di strutture
    - scorrimento avanti e indietro
    - modifica, cancellazione e inserimento di strutture
    - scrittura delle strutture su file

    Se lo dovessi fare tutto in C dal nulla, impiegherei sì e no una settimana, perché devo, fra le mille cose:

    - prevedere che non vi sua qualcun altro a scrivere lo stesso file (semafori)
    - impostare dei flag all'interno delle strutture che mi indicano in che stato è questa singola persona (cancellata, modificata, nuova)
    - accorcire (non molto semplice), o allungare il file
    - aggiornare un contatore

    e, e, e.

    No, io mi fermo qui, voi avete già fatto di troppo, per i miei gusti, ma so anche che non avete la pazienza dei vecchi...

    Questa settimana poi ho anche dei compiti miei e poco tempo. Qualche volta darò uno sguardo, ma non prometto nulla...

    In bocca al lupo e in culo alla balena con l'esame. Io credo che farete scintille, ma ricordatevi, quel che conta è la sintassi, e ho visto da diverse parti l'evidente mancanza di virgolette...

    Giovanni
    ---
    http://www.y2ksw.com/vbulletin
Devi accedere o registrarti per scrivere nel forum
36 risposte