Posts written by ßlues

  1. .
    Belinelli non si è integrato bene nel gioco di Don Nelson. Tante, troppe forzature in attacco per loro.
    Per quel che riguarda Golden State, non è l'unico squadrone: ci sono i Knicks con Melo, Porzingis, Rose, Noah e i miei Spurs con Duncan (va per i 41 anni), Ginobili, Parker, Gasol, Aldridge, Leonard.
    Durant vuole l'anello, non gli importa come: e per questo gli sono piovute critiche su critiche da quando ha mollato Oklahoma.
  2. .
    Per me hanno fatto bene, si sono salvati. Tutto questo allarmismo che ho visto su Facebook da statisti improvvisati dell'ultim'ora mi ha veramente seccato, ripetendo cose che hanno visto in quella macchina del demonio propagandistico che è la televisione.

    La petizione è una cosa stupida: hanno votato tutti, questo è il risultato, non c'è spazio per i capricci di un bambino.
  3. .
    Ti credo, è basato su una versione Unix degli anni '80.
  4. .

    Eternal 5D: L'archivio dati definitivo



    Grazie agli studi ed agli esperimenti da parte del prof. Peter Kazansky dell'università di Southampton (UK) e degli altri scienziati del centro di ricerca universitario di ottico-elettronica (ORC), è stato possibile realizare un disco in vetro per la memoria dati.



    L'idea, già teorizzata e confermata nel 1996, ha dato i suoi frutti solo recentemente, nel 2013, con una prima scrittura di un file di testo da 300kB. E' stato tuttavia recentemente che questa ricerca ha dato i suoi frutti migliori. Questo sistema rivoluzionario sfrutta un tipo di memorizzazione dati in 5 dimensioni, sorpassando quindi il classico sistema bit-lineare di 0 e 1; attraverso infatti l'utilizzo dell'intensità e della polarità del raggio laser utilizzato per scrivere i dati, oltre alle altre 3 coordinate spaziali (lunghezza, larghezza, profondità), un disco potrebbe avere uno spazio di archiviazione di 360 Tb, più che sufficiente a contenere tutto il sapere umano in libri. Ma c'è dell'altro: oltre al fatto di essere potenzialmente 7000 volte più capiente di un disco blu-ray, il tasso di deperimento dei dati è pressoché nullo; si stima che i dati siano garantiti ed integri per circa 13.8 miliardi di anni, che equivale più o meno all'età del nostro universo.
    Per maggiori informazioni sulla ricerca e sul procedimento, rimando all'articolo dettagliato in inglese.



    Edited by cherubins98 - 14/1/2017, 14:45
  5. .
    io volevo costruire automobili, quindi diventare ingegnere... e nonostante più avanti avessi voluto studiare filosofia, permane l'ingegnere, perché il filosofo non mangia di filosofia.
    Volevo essere come lui insomma:
    hqdefault
  6. .
    Non necessariamente. Chiedi a gantz.
  7. .
    Il pericolo principale del credere in un dio/dei si cela nel fanatismo religioso, quello stesso fanatismo che ha prodotto l'Inquisizione qualche paio di secoli fa e lo jihadismo oggi (anche se dietro c'è dell'altro, sempre fanatismo è).
    Per quel che mi riguarda credo in quello che l'uomo è, ha fatto e farà, niente di più e niente di meno.

    Quindi credere in Dio non è una condizione necessaria per dire che questo faccia male, ma indubbiamente sufficiente.

    Che poi la vita delle persone che credono in Dio sia più facilmente sopportabile rispetto a coloro che non credono, è una deduzione pura e semplice [cfr. Karl Marx, Opium Des Volks, Per la critica della filosofia del diritto di Hegel].
  8. .
    Concordo.
  9. .
    Benvenuto.
  10. .
    Ci vuole coraggio per usare vista con un pentium 4. Complimenti.
  11. .
    Mah, non saprei. Su un computer lento io sono restio ad installare altra roba, meglio levare.
    Può essere una soluzione comunque.

    Edited by Blues_Man - 15/8/2016, 02:37
  12. .
    Osservazione 1: Non sai la grammatica, figurati gestire una puntata in radio ( :asd: ).
    Osservazione 2: Non è detto che il solo lassativo funzioni.
    Osservazione 3: Sempre lode a Maria.
    Osservazione 4: Ero io quello che doveva farti fuori, gantz doveva solo seppellirti. Poi però non mi ha mai pagato (neanche quei 200 € di spedizione per BRT), per cui non se n'è fatto niente.
  13. .
    Benvenuta
  14. .

    Il Linguaggio C - Esercizi Riassuntivi





    Esercizi



    L'esercizio costante porta al successo. Questi 2 esercizi sono abbastanza lunghi, 30min-2h in dipendenza del vostro livello. Se ne volete altri fatemelo sapere.



    Esercizio 1:
    Un docente universitario ha salvato in un file binario timesheet.bin le ore in cui ha lavorato durante il mese di Dicembre 2014, suddividendole per i vari progetti a cui partecipa. Ciascun dato nel file timesheet.bin è organizzato come segue:

    - giorno del mese: intero
    - nome del progetto: stringa contenente al più 20 caratteri, compreso il terminatore
    - numero di ore lavorate: intero.

    I dati nel file sono al massimo 100 ed il file è ordinato per giorno del mese.

    Si desidera visualizzare, per ciascun giorno in cui sono state inserite delle ore, il totale di ore lavorate in quel giorno.
    Ad esempio, il file bin contiene:
    3 GYM 2
    3 UM 2
    3 PR 1
    6 Didattica 2

    Si organizzi il programma come segue:
    1. Nel main, si invochi una procedura o funzione di lettura (da realizzare al punto 2) ed una di elaborazione (punto 3).
    2. Si scriva la procedura o funzione di lettura; tale procedura o funzione deve leggere il file timesheet.bin e portarne il contenuto in un opportuno array di strutture. Si mostri a video il contenuto dell'array.
    3. Si scriva una procedura o funzione di elaborazione che prende come parametro l'array letto al punto 2 (più, eventualmente, altri parametri) e mostra a video il totale di ore lavorate per ogni giorno in cui il docente ha inserito delle ore.
    Il programma dovrà stampare a video qualcosa del tipo:
    Giorno 3: ore 5
    Giorno 6: ore 9
    Giorno 9: ore 4

    FACOLTATIVO:

    Si modifichi il programma in modo che la funzione di elaborazione (al punto 3) non effettui stampe a video, ma fornisca al main un opportuno array di strutture.

    Il main dovrà poi invocare una procedura di stampa per visualizzare tale array (e la stampa risultante dovrà essere la stessa del punto 1).

    In seguito, si aggiunga anche una procedura (da invocare nel main) che produce un ulteriore array di strutture, in cui viene calcolato il totale di ore lavorate per ciascun progetto. Il main dovrà poi invocare un'altra procedura di stampa per visualizzare tale array di strutture.
    Stamperà poi a video qualcosa del tipo:

    Didattica: ore 6
    GYM: ore 8
    UM: ore 1

    Soluzione:

    CODICE
    #include <stdio.h>
    #include <conio.h>
    #include <stdlib.h>
    #include <string.h>
    #define N 100
    typedef struct {int giorno; char nome[20];int ore;}tempo;
    typedef struct {int giorno, ore;}giornata;
    typedef struct {char nome[20];int ore;}progetto;
    int lettura(tempo t[]){FILE *bin;int i,r;
    bin=fopen("timesheet.bin","rb");
    if(!bin){printf("Errore apertura timesheet.bin\n");
    exit(-1);
    }
    r=fread(t,sizeof(tempo),N,bin);
    fclose(bin);
    for(i=0;i<r;i++){
           printf("%d %­s %d\n",t[i].giorno,t[i].nome,t[i].ore);
    }
    return r;
    }
    int elabora(tempo t[],int r,giornata h[]){int i,k,c=0,g=0,z=0,j=0;
    for(i=0;i<r;i++){
           for(k=0;k<r;k++){
                   for(g=i;t[i].giorno==t[i+1].giorno;g++){
                   i=g;
                   }
                   
                           if(t[i].giorno==t[k].giorno){
                           c=c+t[k].ore;
           }
                   }
           if(c!=0) {
                   h[j].giorno=t[i].giorno;
                   h[j].ore=c;
                   z++;
                   j++;
           }
    c=0;
    }
    return z;
    }
    void print1(giornata h[],int z){int i;
    for(i=0;i<z;i++){
           printf("Giorno %d: %d ore\n",h[i].giorno,h[i].ore);
    }

    }
    int elabora_z(tempo t[],int r,progetto h[]){int i=0,k,c=0,g=0,z=0,j=0,x;
    strcpy(h[j].nome,t[0].nome);
    j++;
    for(k=1;k<r;k++){
           if(strcmp(h[j].nome,t[k].nome)!=0){
                           for(i=0;strcmp(h[i].nome,t[k].nome)!=0&&i!=r-1;i++);
                           if(i==r-1){
                                   strcpy(h[j].nome,t[k].nome);
                                   z++;
                                   j++;}
                   }
           
           }
    for(x=0;x<r;x++){
           for(g=0;g<r;g++){
                   if(strcmp(h[x].nome,t[g].nome)==0){
                           c=c+t[g].ore;
                   }
           }
           h[x].ore=c;
           c=0;
    }

    return z;
    }


    void print2(progetto p[],int y){int i;
    for(i=0;i<y;i++){
           printf("Progetto: %­s ore:%d\n",p[i].nome,p[i].ore);
    }

    }
    int main (void){int r,z,y;tempo t[N];giornata h[N];progetto p[N];
           r=lettura(t);
           z=elabora(t,r,h);
           print1(h,z);
           y=elabora_z(t,r,p);
           print2(p,y);
           getch();
           return 0;
    }
    }



    Esercizio 2: Un'azienda deve aprire un nuovo magazzino nella provincia di Genova e deve decidere in quale paese è più conveniente aprirlo. Viene dato un file binario negozi.bin, che contiene le coordinate (longitudine e latitudine) dei paesi in cui ci sono punti vendita (al massimo 100); per ciascun paese si hanno le seguenti informazioni:

    nome: stringa di 20 caratteri (massimo), compreso il terminatore
    longitudine, latitudine: float

    Si vuole posizionare il magazzino nello stesso paese di uno dei punti vendita; inoltre si desidera fare in modo che la distanza media che si deve percorrere per arrivare dal magazzino a ciascuno dei punti vendita sia minima. Si supponga che la distanza da percorrere sia la distanza euclidea.

    Es.
    Se si posiziona il magazzino a Topolinia, per andare a Topolinia si ha distanza 0, per LostVegas la distanza è √(32+42)=5, per Gotham si ha distanza 4. La media, quindi è di (0+5+4)/3=3
    Se il magazzino viene costruito a LostVegas, si hanno le seguenti distanze: Topolinia 5, LostVegas 0, Gotham 3, quindi la media è (5+0+3)/3=2.667
    Se si costruisce il magazzino a Gotham, le distanze sono: Topolinia 4, LostVegas 3, Gotham 0, per una media di (4+3+0)/3=2.333

    Ne segue quindi che il magazzino verrà costruito a Gotham.

    Si utilizzi il seguente algoritmo:

    1. Nel main, si invochino le procedure o funzioni lettura ed elabora, da implementare nei punti 2 e 3; si stampi poi a video il paese in cui si consiglia di costruire il magazzino e la distanza media dai punti vendita.
    2. lettura : Si legga il file negozi.bin e se ne porti il contenuto in un opportuno array di strutture. Si visualizzi l'array.
    3. elabora : dato l'array letto al punto 2, si calcoli il paese in cui costruire il magazzino e la distanza media del magazzino dai paesi in cui ci sono punti vendita; si forniscano tali dati al main .
    Per calcolare dove posizionare il magazzino, si può calcolare la distanza media di ogni paese da tutti gli altri punti vendita. Per calcolare la distanza media dei punti vendita da un paese, si utilizzi una funzione distanza_media , che verrà implementata al punto 4

    4. Si implementi la funzione distanza_media , che prende in ingresso, fra i parametri, un paese P da cui si vuole calcolare la distanza media dei punti vendita e l'array creato al punto 2.
    Per calcolare la distanza euclidea fra due paesi, si utilizzi una funzione distanza e la si implementi.
    Soluzione (credo sia giusto, non l'ho ricontrollata, se ci son problemi fatemelo sapere):

    CODICE
    #include <stdio.h>
    #include <stdlib.h>
    #include <math.h>
    #define N 100
    typedef struct {char nome[20];float lon,lat;}paese;
    float distanza(paese p, paese h){float d;
    d=sqrt(pow((p.lat-h.lat),2)+pow((p.lon-h.lon),2));
    return d;
    }
    float distanza_media(paese p, paese h[], int r){float d=0,dm,s;int i;
    for(i=0;i<r;i++){s=distanza(p,h[i]);
    d=d+s;
    }
    dm=d/r;
    return dm;
    }
    int lettura(paese p[]){FILE *bin;int i,r;
           bin=fopen("negozi.bin","rb");
           if(bin==NULL){
                   printf("! Errore apertura negozi.bin !\n");
                   exit(-1);
           }
           r=fread(p,sizeof(paese),N,bin);
           fclose(bin);
           printf("======================        negozi.bin        ======================\n\n");
           for(i=0;i<r;i++){
                   printf("Nome:%­s        Latitudine:%f        Longitudine:%f\n", p[i].nome,p[i].lon,p[i].lat);
           }
           return r;
    }
    void elabora(paese p[],paese *x, int r){int i,j=0;float A[N],d;
    d=100;
           for(i=0;i<r;i++){
                   A[i]=distanza_media(p[i],p,r);
                   if(A[i]<d){d=A[i];
                           j=i;}
           }
           *x=p[j];
    }
    int main (void){paese p[N];paese x;int r;
    r=lettura(p);
    elabora(p,&x,r);
    printf("\nIl paese piu' furbo e': %­s",x.nome);

    getchar();
    return 0;
    }





    RIPRODUZIONE RISERVATA | COPYRIGHT ©Blues_Man, 2016



    Edited by Blues_Man - 30/8/2016, 00:50
  15. .

    Il Linguaggio C - Dati Strutturati e Array di Strutture



    Nella lezione precedente abbiamo discusso di come vengono aperti i file in C. Tuttavia, potremmo avere un problema di carattere logistico nel momento in cui andiamo ad aprire un file binario oppure vorremmo essere più comodi. Per questo ci vengono in aiuto la creazione di un nuovo tipo di dato, che può essere enumerativo, unione o strutturato.
    Per fare questo utilizzzeremo una sintassi caratteristica:typedef(che sta per type definition (definisci un nuovo tipo)) seguito da enum se il dato assumerà valori numerici in base all'ordine di disposizione (es.: se typedef enum{UNO,DUE,TRE,QUATTRO}birillo;, se si implementa la variabile birillo b=QUATTRO, questo avrà lo stesso valore della variabile int j=3) , struct se il dato è strutturato (ovvero composto da più tipi di dato) oppure union, un dato strutturato che può avere doppia definizione, ma solo una alla volta (non può essere due cose allo stesso tempo).
    Vediamo in dettaglio, per meglio comprendere la differenza tra le tipologie (il caso union non sarà trattato):



    ENUM


    CODICE
    #include <stdio.h>
    ...
    typedef enum {FALSE, TRUE}boolean;
    ...

    In questo caso vediamo che abbiamo costruito il tipo boolean, un tipo di dato non presente nel linguaggio ma che può tornare utile. Per il computer, ricordo, 0 vuol dire falso e 1 vuol dire vero. Se dovessi implementare una variabile per i vero o falso posso scegliere se costruirmi un tipo booleano o usare un int. In pratica: int j=0 e boolean b=FALSE vogliono dire la stessa cosa.

    STRUCT


    CODICE
    #include <stdio.h>
    ...
    typedef struct {
    char nome[20];
    char cognome[20];
    int età
    }persona;
    ...

    In questo caso vediamo che abbiamo costruito il tipo persona, un tipo di dato non presente di default, che può tornare utile in determinate occorrenze, come per quando leggiamo da file dei dati, in special modo da file binario.

    Le variabili che compongono il dato strutturato vengono definite campi. Per accedere ad un campo di una variabile si utilizza il "." (senza virgolette). Ad esempio (riprendento la typedef struct precedente):
    persona p;
    p.nome="luigi";
    p.cognome="farted";
    p.età=68;


    Array Di Strutture


    Se possiamo definire un nuovo tipo di dato e implementare una variabile tale, possiamo anche realizzarne array: non c'è molto da capire, ogni elemento dell'array, ogni elemento del vettore per gli amanti dell'algebra (non io comunque), è un riferimento alla cella contenente la variabile strutturata. E' come una matrioska se ci pensate un attimo.
    NB: In caso di passaggio per riferimento di una variabile ad una funzione, per accedere al campo è necessario utilizzare la sintassi (*nome_variabile).campo_variabile





    RIPRODUZIONE RISERVATA | COPYRIGHT ©Blues_Man, 2016



    Edited by Blues_Man - 30/8/2016, 00:50
828 replies since 1/9/2013
.