Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- struct misura {
- int AAAA, MM, GG, hh, mm, ss, ms;
- char ID[11];
- double TEMP;
- int UMID;
- double VEL;
- };
- void leggi_misura(FILE *f, int *n, struct misura *lista);
- void stampa_riga(struct misura *lista, int i);
- void stampa_invertita(struct misura *lista, int n);
- double max_temp(struct misura *lista, int n);
- int main(int argc, char *arcv[]) {
- int n;
- struct misura lista[168];
- FILE *f;
- f = fopen("argv[1]", "r");
- leggi_misura(f, &n, lista);
- stampa_invertita(lista, n);
- double max = max_temp(lista, n);
- printf("[MAX-TEMP]\n%lf\n", max);
- }
- void leggi_misura(FILE *f, int *n, struct misura *lista) {
- char r[1000];
- int i=0;
- while (fgets(r, sizeof(r), f)) {
- int conv = sscanf(r, "%d-%d-%d %d:%d:%d.%d %s %lf %d%% %lf", &(lista[i].AAAA), &(lista[i].MM), &(lista[i].GG), &(lista[i].hh), &(lista[i].mm), &(lista[i].ss), &(lista[i].ms), (lista[i].ID), &(lista[i].TEMP), &(lista[i].UMID), &(lista[i].VEL));
- if (conv != 11) continue;
- i++;
- if (i>=168) break;
- }
- *n=i;
- }
- void stampa_riga(struct misura *lista, int i) {
- printf("%d-%d-%d %d:%d:%d.%d %s %lf %d%% %lf\n", lista[i].AAAA, lista[i].MM, lista[i].GG, lista[i].hh, lista[i].mm, lista[i].ss, lista[i].ms, lista[i].ID, lista[i].TEMP, lista[i].UMID, lista[i].VEL);
- }
- void stampa_invertita(struct misura *lista, int n) {
- int i;
- puts("[INVERTITA]");
- if (n < 6) {
- for (i = n-1; i >= 0; i--) stampa_riga(lista, i);
- }
- else {
- for (i=0; i<3; i++) stampa_riga(lista, i);
- for (i=n-1; i>n-4; i--) stampa_riga(lista, i);
- }
- }
- double max_temp(struct misura *lista, int n) {
- int i;
- float max = lista[0].TEMP;
- for (i=1; i<n; i++) {
- if (lista[i].TEMP > lista[0].TEMP)
- max = lista[i].TEMP;
- }
- return max;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement