- Messaggi: 84
- Ringraziamenti ricevuti 0
LINUX AVANZATO 2007
- COM_EASYSOCIAL_GUEST_NAME
-
- Visitatori
-
18 Anni 2 Mesi fa #53981
da COM_EASYSOCIAL_GUEST_NAME
Opportuna struttura dati???che significa???
Risposta da COM_EASYSOCIAL_GUEST_NAME al topic LINUX AVANZATO 2007
Ad una prima lettura sembrava complicato, ma forse non lo è poi tantissimo.
Qui intendi permutazione di N bytes?
"Il programma costruisce avvalendosi della funzione rand() una pemutazione di N e la salva in una opportuna struttura di dati."
Permutazione di N = permutazione degli N numeri tra 0 e N-1.
No, il testo, su questo, non era chiaro...
Opportuna struttura dati???che significa???
Si prega Accedi o Crea un account a partecipare alla conversazione.
- COM_EASYSOCIAL_GUEST_NAME
-
- Visitatori
-
18 Anni 2 Mesi fa #53986
da COM_EASYSOCIAL_GUEST_NAME
Risposta da COM_EASYSOCIAL_GUEST_NAME al topic LINUX AVANZATO 2007
Un array
Si prega Accedi o Crea un account a partecipare alla conversazione.
- Lavinia Laurenti
-
- Offline
- Premium Member
-
Riduci
Di più
18 Anni 2 Mesi fa #53988
da Lavinia Laurenti
Risposta da Lavinia Laurenti al topic LINUX AVANZATO 2007
ecco le domande del mio orale :
- software timer ( lezione 9)
- sys open (descrizione al calcolatore di tutte le funzioni che chiama)
- VFS
- oggetto dentry, con relativi campi e metodi ( ho descritto anche la dentry cache, funzione d_hash,etc...)
- profiling
- software timer ( lezione 9)
- sys open (descrizione al calcolatore di tutte le funzioni che chiama)
- VFS
- oggetto dentry, con relativi campi e metodi ( ho descritto anche la dentry cache, funzione d_hash,etc...)
- profiling
Si prega Accedi o Crea un account a partecipare alla conversazione.
- COM_EASYSOCIAL_GUEST_NAME
-
- Visitatori
-
18 Anni 2 Mesi fa #53989
da COM_EASYSOCIAL_GUEST_NAME
Risposta da COM_EASYSOCIAL_GUEST_NAME al topic LINUX AVANZATO 2007
Alla fine ieri sera mi ci sono messo e ho provato a farlo. Pare funzionare correttamente.
#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <unistd.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <string.h>
int main(int argc, char **argv){
char *filename = argv[1];
int N = atoi(argv[2]);
int i;
//genero permutazione casuale di numeri compresi tra 0 e N - 1
int permutazione[N];
srand(time(NULL));
int perm = rand() % N;
permutazione[0] = perm;
for(i = 1; i < N; i++){
while(1){
perm = rand() % N;
int j;
for(j = 0; j < i; j++){
if(perm != permutazione[j])
continue;
else break;
}
if(j == i){
permutazione[i] = perm;
break;
}
}
}
for(i = 0; i < N; i++)
printf("%d\n", permutazione[i]);
//apro i files
char *filename2;
strcpy(filename2, filename);
int fd = open(filename, O_RDONLY);
if(fd < 0)
printf("Errore nell'apertura del file %s!!\n", filename);
char *suffix = "_crypt";
strcat(filename, suffix);
int fd1 = open(filename, O_CREAT|O_RDWR);
if(fd1 < 0)
printf("Errore nell'apertura del file %s!!\n", filename);
suffix = "_decrypt";
strcat(filename2, suffix);
int fd2 = open(filename2, O_CREAT|O_WRONLY);
if(fd2 < 0)
printf("Errore nell'apertura del file %s!!\n", filename2);
//cripto
int nread;
char buf[N];
while((nread = read(fd, buf, N)) == N){
for(i = 0; i < N; i++){
int num = permutazione[i];
write(fd1, &buf[num], 1);
}
}
//decripto
lseek(fd1, 0, SEEK_SET);
while((nread = read(fd1, buf, N)) == N){
for(i = 0; i < N; i++){
int num = permutazione[i];
write(fd2, &buf[num], 1);
}
}
close(fd);
close(fd1);
close(fd2);
return 0;
}Si prega Accedi o Crea un account a partecipare alla conversazione.
- COM_EASYSOCIAL_GUEST_NAME
-
- Visitatori
-
18 Anni 2 Mesi fa #53990
da COM_EASYSOCIAL_GUEST_NAME
Risposta da COM_EASYSOCIAL_GUEST_NAME al topic LINUX AVANZATO 2007
A prima vista questo tuo codice mi sembra che funzioni solo nel caso in cui il file sia di dimensione N e non multiplo di N (come richiesto da testo)!!
Si prega Accedi o Crea un account a partecipare alla conversazione.
- COM_EASYSOCIAL_GUEST_NAME
-
- Visitatori
-
18 Anni 2 Mesi fa #53993
da COM_EASYSOCIAL_GUEST_NAME
Risposta da COM_EASYSOCIAL_GUEST_NAME al topic LINUX AVANZATO 2007
Ho provato con N = 4 e il file da 8 bytes, funzionava
Si prega Accedi o Crea un account a partecipare alla conversazione.