fbpx
Skip to main content

Linux Avanzato 2008-2009

Di più
16 Anni 8 Mesi fa #93769 da skye daniels
Risposta da skye daniels al topic Linux Avanzato 2008-2009
Ragazzi qualcuno di voi ha le dispense del prof. Cesati per prepararsi alla prova di selezione ? Sono andato sul sito del corso ma bisogna essere registrati ...

Si prega Accedi o Crea un account a partecipare alla conversazione.

  • COM_EASYSOCIAL_GUEST_NAME
  • Avatar di COM_EASYSOCIAL_GUEST_NAME
  • Visitatori
  • Visitatori
16 Anni 8 Mesi fa #93771 da COM_EASYSOCIAL_GUEST_NAME
Risposta da COM_EASYSOCIAL_GUEST_NAME al topic Linux Avanzato 2008-2009

Ragazzi qualcuno di voi ha le dispense del prof. Cesati per prepararsi alla prova di selezione ? Sono andato sul sito del corso ma bisogna essere registrati ...


se ti riferisci alla roba di architetture vedi qui: ac08.sprg.uniroma2.it/calendario.html , ci sono le slide di Cesati senza bisogno di registrazione ;)

Si prega Accedi o Crea un account a partecipare alla conversazione.

  • COM_EASYSOCIAL_GUEST_NAME
  • Avatar di COM_EASYSOCIAL_GUEST_NAME
  • Visitatori
  • Visitatori
16 Anni 8 Mesi fa #93794 da COM_EASYSOCIAL_GUEST_NAME
Risposta da COM_EASYSOCIAL_GUEST_NAME al topic Linux Avanzato 2008-2009
ciao ragazzi
ma quelli che hanno linux 10 cr che devono mettere nel menu relativo all'esame linux 5 cr? "non verbalizzato"? :?

Si prega Accedi o Crea un account a partecipare alla conversazione.

  • COM_EASYSOCIAL_GUEST_NAME
  • Avatar di COM_EASYSOCIAL_GUEST_NAME
  • Visitatori
  • Visitatori
16 Anni 8 Mesi fa #93827 da COM_EASYSOCIAL_GUEST_NAME
Risposta da COM_EASYSOCIAL_GUEST_NAME al topic Linux Avanzato 2008-2009
ciao a tutti!
Come saprete, la cosa più importante da fare per passare questo esame è fare molti esercizi in C.. Se volete, ve ne propongo uno che non si discosta molto dallo stile del professore: onestamente vi dico anche che ho bisogno di questo programma ma sono troppo pigro per mettermi a rivedere il C dopo 5 mesi e scriverlo da solo... Per una persona allenata si tratta di neanche mezz'ora. Quindi in sostanza è un modo per fare un esercizio che sarà utile a qualche scopo... :)
Scrivere un programma C che riceve da riga di comando il nome di un file di testo composto da frasi distinte su ciascuna riga. Il programma produce un file avente lo stesso nome di quello ricevuto in ingresso cui appende la stringa "_output". Tale file di output contiene, su ciascuna riga, tante cifre quante sono le possibili lettere dell'alfabeto, separate da spazio, che rappresentano il conteggio delle occorrenze della corrispondente lettera nella frase che, nel file di input, si trova sulla stessa riga. Esempio:

In input si ha (non scrivo frasi vere e proprie per semplificare):

aaaaa
bbb cccc d ebe a

In output si deve avere:

5 0 0 0 0 0 0 0 (...) 0
1 4 4 1 2 0 0 0 (...) 0 

Grazie a tutti coloro che vorranno postare una soluzione!

PS: Se posso esservi utile in qualche altro modo (stavolta disinteressatamente) per passare questo esame, sarò ben lieto di aiutarvi! Nel post dell'anno scorso trovate anche tanti altri esercizi di varie difficoltà, specie per la prova al PC.

Si prega Accedi o Crea un account a partecipare alla conversazione.

  • COM_EASYSOCIAL_GUEST_NAME
  • Avatar di COM_EASYSOCIAL_GUEST_NAME
  • Visitatori
  • Visitatori
16 Anni 8 Mesi fa #93875 da COM_EASYSOCIAL_GUEST_NAME
Risposta da COM_EASYSOCIAL_GUEST_NAME al topic Linux Avanzato 2008-2009
#include <stdio.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <stdlib.h>
#include <string.h>

void reset(int a[])
{
    int i=0;
    for (; i<26; i++)
        a[i] = 0;
}

void print(int *fd, int a[])
{
    int i=0;
    char buf[10];
    for (; i<26; i++)
    {
        sprintf(buf, "%d ", a[i]);
        write(*fd, &buf, strlen(buf));
    }
    write(*fd, "\n", 1);
}

int main(int argc, char* argv[])
{
    if (argc != 2)
    {
        printf("usage: %s FILENAME\n", argv[0]);
        return 1;
    }        

    int fin = open(argv[1], O_RDONLY);
    
    char* fout_name = (char*) malloc( strlen(argv[1]) + 7 + 1 );
    sprintf(fout_name, "%s%s", argv[1], "_output");
    int fout = creat(fout_name, 0644);
    
    int counter[26];
    reset(counter);
    
    char c;
    while (read(fin, &c, 1)>0)
    {
        if ( c != '\n' )
        {
            if ( 'a' <= c && c <= 'z' )
                counter[c-'a']++;
            else if ( 'A' <= c && c <= 'Z' )
                counter[c-'A']++;
        }
        else
        {
            print(&fout, counter);
            reset(counter);
        }
    }
    
    close(fout);
    free(fout_name);
    close(fin);
    return 0;
}
:wink:

Si prega Accedi o Crea un account a partecipare alla conversazione.

  • COM_EASYSOCIAL_GUEST_NAME
  • Avatar di COM_EASYSOCIAL_GUEST_NAME
  • Visitatori
  • Visitatori
16 Anni 8 Mesi fa #93887 da COM_EASYSOCIAL_GUEST_NAME
Risposta da COM_EASYSOCIAL_GUEST_NAME al topic Linux Avanzato 2008-2009
grazie mille!!!! :D
Se posso esserti utile in qualche modo sarò ben lieto di farlo(ripeto cmq che trovate molte cose, tra cui parecchi esercizi inediti di varie difficoltà, sul post dell'anno scorso)!

Ciao e in bocca al lupo! :)

Si prega Accedi o Crea un account a partecipare alla conversazione.