Pagina 1 di 4 1 2 3 ... ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 32
  1. #1

    [C] Lista dinamica unita al tempo...

    Salve dovrei aggiungere in un gioco(per un progetto)
    1) per ogni mossa fatta dovrei tenere traccia del tempo impiegato per esegurila utilizzando una LISTA DINAMICA
    2) e poi dovrei anche stampare l'elenco delle mosse fatte a fine partita.
    Potreste darmi gentilmente una mano e scrivermi quale e come usare il codice per fare queste 2 cose...
    GRAZIE

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Beh ... scrivere tutto il codice significherebbe impiegare del tempo per fare i tuoi compiti, e questo non e' bello ...

    Semmai, prova tu a mostrarci qualcosa, e si corregge/integra ... insomma, no impegno no party ...

  3. #3
    è che non conosco la funzione del tempo e non so come usarla.....
    Almeno scrivermi 2 righe e spiegarmela...non penso di chiedere la luna.....

  4. #4
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Sono state trattate in altre parte del forum ... basta una ricerca ...

    In ogni caso, per l'ora puoi scrivere

    codice:
    #include <stdio.h>
    #include <time.h>
    
    void main(void)
    {
       time_t ora;
    
       ora = time(NULL);
       printf("%s\n", ctime(&ora));
    }

  5. #5
    A me avevano detto di fare così:


    # include <stdio.h>
    # include<time.h>

    int main()
    {
    time(&inizio)
    il codice che ho fatto io per la mossa
    time(&fine)
    temp=fine-inizio
    }

    perchè a me serve sapere quanto tempo si impiega per ogni mossa fatta!!!

  6. #6
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    E va bene ... piu' correttamente puoi usare la funzione difftime ....

    codice:
    void main(void)
    {
       time_t inizio, fine;
       double diff;
    
       inizio = time(NULL);
    
       // La tua mossa
    
       fine = time(NULL);
    
       diff = difftime(fine, inizio);
    
       printf("\n%f\n", diff);
    }

  7. #7
    Per il tempo sono a posto.....

    # include <stdio.h>
    # include<time.h>

    int main()
    {
    time(&inizio)
    il codice che ho fatto io per la mossa
    time(&fine)
    temp=fine-inizio
    printf("&d",temp)
    }

    Così mi funziona bene, ma adesso quello che mi chiedo è come devo fare a usare una LISTA DINAMICA per tenere traccia del tempo inpiegato per eseguirla...

    Questa è una lista normale....
    struct cella{
    char valore;
    struct cella *next;
    };

    struct cella *testa = NULL;

    io devo usarla dinamica ed inserirla nel mio programma....forse così:
    struct tempo{
    int temp;
    struct temp *next;
    };

    io però devo inserirci tanti valori......

  8. #8
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Nella struttura del singolo elemento della lista puo' essere

    struct tempo
    {
    double valore;
    struct tempo *next;
    };

    (il puntatore deve essere di tipo struct tempo, altrimenti come concateni il prossimo elemento della lista?)

    Dopodiche' e' una semplice gestione di lista semplice. E' dinamica perche' dovrai allocare dinamicamente la memoria per aggiungere il prossimo elemento.

    Ci sono tanti elementi proprio perche' sono collegati tramite il puntatore.

    Per la teoria delle liste e alcuni esempi, su internet hai l'imbarazzo della scelta .... basta cercare ...

    http://cesare.dsi.uniroma1.it/~asd1/...C-parteIII.htm

    http://www.dmi.unisa.it/people/tucci/www/lp1/liste1.c

    http://www.gecowebnet.it/informatica...ncatenata.html

    http://www.xelon.it/appunti/programmazione/liste.php

  9. #9
    GRazie..il problem del tempo lo sono riuscito a risolvere egregiamente, ora dovrei chiederti un altro grossissimo favore.....questa è la mia lista

    struct mossa{
    char mossa_memorizzata[30];
    int tempo_mossa;
    struct mossa *next;
    };

    struct mossa *testa;
    struct mossa *nuovo_elemento;
    struct mossa *temporaneo;

    void memorizza_parola(char *parola,int temp);
    void elenco_mossa();

    .................
    ...............
    ..................
    ....................
    E qua di seguito metto le 2 funzioni che mi interessano:
    /*memorizza parola()
    *serve per memorizzare le parole inserite da vari giocatori
    *durante il loro turno
    *
    *Valori in ingresso
    * parola un puntatore di tipo carattere alla parola inserita
    * temp un intero in cui viene memorizzato il tempo che è stato
    *impiegato per fare una mossa
    *
    *Doveve vengono memorizzata le parole, ma a video non si vede nulla,
    * a meno che non vi sia un ERRORE di allocazone della memoria
    */

    void memorizza_parola(char *parola,int temp)
    {
    int q;


    nuovo_elemento = (struct mossa*)malloc(sizeof(struct mossa));//alloccazione di un nuovo spazio di memoria

    if (nuovo_elemento == NULL)
    {
    printf("\n\n Errore nell'allocazione della memoria.\n Il programma verra' terminato!\n ");
    system("pause");
    exit(1);
    }

    for(q=0;q<31;q++)
    {
    nuovo_elemento->mossa_memorizzata[q]='\0';

    if(parola[q]=='\n')
    break;

    nuovo_elemento->mossa_memorizzata[q]=parola[q];
    }


    nuovo_elemento->tempo_mossa=temp;

    nuovo_elemento->next = testa;

    testa = nuovo_elemento;

    }
    /* elenco_mossa
    *funzione che stampa tutte le mosse eseguite
    *
    *Non ha valori in ingresso
    *
    *Vengono stampate a video tutte le parole inserite col tempo
    *impiegato per inserire ognuna di esse
    */
    void elenco_mossa()
    {

    temporaneo = testa; //puntatore temporaneo per scorrere la lista e non perdere il riferimento alla testa

    printf("\n");

    while (temporaneo != NULL)
    {
    printf("La parola inserita e' %s, ed il tempo impiegato e' %d\n",
    temporaneo->mossa_memorizzata,temporaneo->tempo_mossa);

    temporaneo = temporaneo->next;

    }

    printf("\n");
    system("pause");
    fflush(stdin);
    }


    PROBLEMA:
    Quando esaguo printf("la parola inserita è......) mi vengono in ordine dall'ultima che ho masso alla prima...invece io vorrei il contrario che venisse stampata a video prima la prima che ho messo ed infine l'ultima.....
    GUARDANDO questo codice sapresti dirmi dove sta l'errore?????

  10. #10
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Non e' un errore ma una conseguenza "logica" dell'inserimento dei dati.

    Non so se ci hai fatto caso ma quando inserisci i dati, il prossimo dato va a finire in fondo alla lista.

    Puoi risolverescandendo la lista tramite i puntatori fino alla fine (fino al puntatore NULL) e visualizzando i dati scorrendo al contrario tornando indietro fino alla testa.

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