Pagina 1 di 4 1 2 3 ... ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 31
  1. #1
    Utente di HTML.it
    Registrato dal
    Jul 2012
    Messaggi
    23

    [c] programma allenamenti

    salve a tutti.
    E' da poco che mi sono interessato alla programmazione, con l'intento di fare da me, come e dove possibile, quei programmi che uso spesso e di grande utilità.
    Utilizzo spesso sull'android l'adidas micoach, che registra col gps i miei allenamenti.
    Stavo ora pensando di scrivere un'applicazione in c che mi permetta di inserire i record degli allenamenti e visualizzare quelli precedenti, permettendomi di visualizzare per esempio i km totali e info varie.
    avevo intenzione di strutturare così il programma:
    suddivisione in due parti fondamentali

    1) inserire nuovo record
    2) visualizzare statistiche


    1a) inserire km, tempo, calorie
    1b) calcolo velocità media
    1c) aggiornare statistiche precedenti e chiedere se visualizzare statistiche

    2a) visualizzare km totali, calorie totali, tempo totale, velocità media in base a tutti i dati


    ho organizzato a grandi linee il programma ( switch-case per 1 e 2)
    e una serie di printf,scanf e operazioni matematiche in modo da chiedermi e inserire km,tempo, e calcolo di min/km e m/s.
    Ora, il problema è che non so come si gestica una "specie" di database per poter immagazine questi dati, ordinati,e aggiungerli volta per volta, aggiornando poi il conteggio totale.
    Credo non sia una roba così difficile, ma avendo iniziato da poco mi viene un pò complicato, non conosco molte funzioni e quelle che ho fatto (in numerose linee di codice) probabilmente qualcuno di voi riuscirebbe a semplificarle in una manciata di operazioni.
    chiedo dunque se potete darmi una mano, su cosa approfondire magari lo studio e il resto, per poter creare e gestire i dati sopracitati.
    Grazie mille

  2. #2
    Utente di HTML.it L'avatar di Scara95
    Registrato dal
    Jul 2009
    residenza
    Zimella (VR)
    Messaggi
    2,590
    Devi sudiare le operazioni sui files (fopen fprintf fscanf fgets fclose ...) Per leggere i dati e salvarli...
    Poi devi pensare a come organizzare i dati nel tuo programma, io utilizzerei una linked list, ma puoi benissimo utilizzare un array (magari allocato dinamicamente)...

    In ogni caso devi studiare bene le operazioni sui file, typedef e struct e i puntatori!
    Magari calloc malloc realloc e free
    "Quid enim est, quod contra vim sine vi fieri possit?" - Cicerone, Ad Familiares

  3. #3
    Utente di HTML.it
    Registrato dal
    Jul 2012
    Messaggi
    23
    bene, e per gestire il database invece?posso poi fare in modo che il programma legga i record precedenti e faccia per esempio le somme di tutti i km precedenti ecc?

  4. #4
    Utente di HTML.it L'avatar di Scara95
    Registrato dal
    Jul 2009
    residenza
    Zimella (VR)
    Messaggi
    2,590
    Io ti stavo proponendo di utilizzare un file come database, ma se vuoi utilizzare un database vero e proprio (sappi che le cose si semplificano in un certo senso, ma si complicano non poco in un'altro) devi prima decidere che database usare e poi studiare una libreria che ti permetta di connetterti a quel database.

    Io ti consiglio di utilizzare un semplice file per 2 motivi:
    - da quanto hai detto, programmi da poco
    - quello che vuoi fare è perfettamente fattibile senza l'introduzione di un database e di facile gestibilità in quanto le operazioni da effettuare sui dati rimangono semplici e basta scorrere una sola volta la lista/l'array per effetuarle
    "Quid enim est, quod contra vim sine vi fieri possit?" - Cicerone, Ad Familiares

  5. #5
    Utente di HTML.it
    Registrato dal
    Jul 2012
    Messaggi
    23
    si scusa, mi sono espresso male.
    mi basta tranquillamente immagazzinare tutto in un file di testo, per quel che devo fare, basta e avanza.
    alla fine quello che deve apparire nel file di testo è:
    Data,Kilometri,Tempo,Calorie
    e che in qualasiasi momento sia in grado di sommare i dati di ogni tipologia.

  6. #6
    Utente di HTML.it
    Registrato dal
    Jul 2012
    Messaggi
    23
    Questa notte sono andato avanti col programma.
    Ora diciamo che tramite una serie di comandi riesco a fargli scrivere su un file .txt i dati che mi servono.
    Il file database.txt è organizzato così:

    codice:
    Data             : 10-07-2012
    Kilometri        : 7.530000
    Tempo            : 00:35:12
    Calorie          : 494 
    Metri/Secondo    : 3.565341
    Minuti/Kilometro : 4:40
    
    Data             : 14-07-2012
    Kilometri        : 8.010000
    Tempo            : 00:40:04
    Calorie          : 528 
    Metri/Secondo    : 3.331947
    Minuti/Kilometro : 5:00
    però per crearlo non ho utilizzato nessuna struttura, solo fprintf.
    Ora stavo sviluppando la seconda parte, riesco a fargli leggere il file e farmi riportare a video (momentaneamente) i dati del database, ma il programma si ferma al primo record.

    codice:
    FILE *fp;
       fp=fopen("database.txt","r");
    
    
    
      fscanf(fp,"Data             : %d-%d-%d",&giorno,&mese,&anno);
      printf("Data: %d-%d-%d\n",giorno,mese,anno);
      fscanf(fp,"\nKilometri        : %f",&kilometri);
      printf("Kilometri: %f\n",kilometri);
      fscanf(fp,"\nTempo            : %d:%d:%d",&ora,&minuti,&secondi);
      printf("Tempo: %d:%d:%d\n",ora,minuti,secondi);
      fscanf(fp,"\nCalorie          : %d",&calorie);
      printf("Calorie: %d\n",calorie);
      fscanf(fp,"\nMetri/Secondo    : %f",&metrisecondo);
      printf("metri/secondo: %f\n",metrisecondo);
      fscanf(fp,"\nMinuti/Kilometro : %d:%d",&min,&km);
      printf("minuti/kilometro: %d:%d\n",min,km);
    
    
      fclose(fp);
    come posso fare per fargli continuare la lettura fino a quando non si arriva alla fine del file?
    e poi, diciamo che ora momentaneamente quello he legge dal file me lo faccio comparire a video, ma a me serve che venga memorizzata ogni categoria (km, calorie ecc) e volta dopo volta incrementati per darmi la somma alla fine.
    Come fare?
    grazie mille

  7. #7
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,466
    http://www.cplusplus.com/reference/c...y/cstdio/feof/

    e naturalmente conoscerai i cicli
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  8. #8
    Opinione del tutto personale e opinabile, ma perchè invece di impazzire con 'C' non usi excel o un qualsiasi foglio di calcolo? Importi il tuo txt e ci fai di tutto di più.
    Un saluto
    N.

  9. #9
    Utente di HTML.it L'avatar di torn24
    Registrato dal
    Aug 2008
    Messaggi
    551

    ciao

    a me serve che venga memorizzata ogni categoria (km, calorie ecc) e volta dopo volta incrementati per darmi la somma alla fine.

    Secondo me non c'è necessità di memorizzare ogni categoria , potresti crearti
    delle variabili globali tipo :
    km_totali , calorie_totali ecc..
    e ogni volta che leggi un valore da file , prima o dopo stamparli a video , incrementi la
    variabile corrispondente !


    fscanf(fp,"\nKilometri : %f",&kilometri);
    printf("Kilometri: %f\n",kilometri);
    km_totali+=kilometri;



    E se proprio le devi memorizzare salvi su un altro file .
    Tecnologia

  10. #10
    Utente di HTML.it L'avatar di Scara95
    Registrato dal
    Jul 2009
    residenza
    Zimella (VR)
    Messaggi
    2,590
    L'uso di variabili globali è altamente sconsigliato (anche nella maggior parte di libri che trratano il C).
    Ciò non toglie che tu possa usarle.
    In ogni caso non ha senso leggerle per salvarle in un'altro file!
    codice:
    typedef struct data_s {
      unsigned short giorno, mese, anno;
      double kilometri;
      unsigned short ore, minuti, secondi;
      unsigned calorie;
      shorti metri, secondo;
      shorti minuti, kilometro;
    } data_t;
    
    typedef struct lista_s {
     data_t data;
     struct lista_s *next;
    } lista_t;
    
    typedef lista_t *lista;
    //oppure un semplice array di elementi data_t
    Puoi usare questa la struttura data_t o modificarla a tuo piacimento, magari immagazinando i dati facendo uso di una lista, ma puoi benissimo usare gli array...
    "Quid enim est, quod contra vim sine vi fieri possit?" - Cicerone, Ad Familiares

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.