feat: Initial commit
This commit is contained in:
10
Laboratorio 5/dizionario.txt
Normal file
10
Laboratorio 5/dizionario.txt
Normal file
@@ -0,0 +1,10 @@
|
||||
9
|
||||
$11$ pelle
|
||||
$2$ pollo
|
||||
$333$ palla
|
||||
$41$ alla
|
||||
$5078$ tta
|
||||
$6$ tti
|
||||
$7$ ll
|
||||
$81$ er
|
||||
$900$ ere
|
||||
95
Laboratorio 5/ricodifica.c
Normal file
95
Laboratorio 5/ricodifica.c
Normal file
@@ -0,0 +1,95 @@
|
||||
// Laboratorio 5 - Esercizio 2
|
||||
// Matteo Schiff - s295565
|
||||
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
#include <stdbool.h>
|
||||
#define MAX_SIZE 30
|
||||
#define MAX_LEN 200
|
||||
|
||||
typedef struct Coppia
|
||||
{
|
||||
int codice;
|
||||
int len;
|
||||
char sequenza[MAX_LEN];
|
||||
} coppia;
|
||||
|
||||
int caricaDizionario(coppia coppie[MAX_SIZE], int * c);
|
||||
|
||||
int caricaDizionario(coppia coppie[MAX_SIZE], int * c) {
|
||||
FILE *fp_read;
|
||||
|
||||
if ((fp_read = fopen("./dizionario.txt", "r")) == NULL)
|
||||
{
|
||||
printf("Errore nell'apertura del file\n");
|
||||
return 1;
|
||||
}
|
||||
|
||||
fscanf(fp_read, "%d\n", c);
|
||||
|
||||
if (*c >= MAX_SIZE) {
|
||||
printf("Troppi elementi nel dizionario");
|
||||
fclose(fp_read);
|
||||
return 1;
|
||||
}
|
||||
|
||||
for (int i = 0; i < *c; i++) {
|
||||
fscanf(fp_read, "$%d$ %200s\n", &coppie[i].codice, coppie[i].sequenza);
|
||||
coppie[i].len = strlen(coppie[i].sequenza);
|
||||
}
|
||||
|
||||
fclose(fp_read);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
int main()
|
||||
{
|
||||
|
||||
FILE *fp_read, *fp_write;
|
||||
char riga[MAX_LEN], buf[MAX_LEN];
|
||||
bool richiedeCiclo;
|
||||
int c, w;
|
||||
coppia coppie[MAX_SIZE];
|
||||
|
||||
if (caricaDizionario(coppie, &c)) {
|
||||
return 1;
|
||||
}
|
||||
|
||||
if ((fp_read = fopen("./sorgente.txt", "r")) == NULL)
|
||||
{
|
||||
printf("Errore nell'apertura del file\n");
|
||||
return 1;
|
||||
}
|
||||
if ((fp_write = fopen("./ricodificato.txt", "w")) == NULL)
|
||||
{
|
||||
printf("Errore nell'apertura del file\n");
|
||||
return 2;
|
||||
}
|
||||
|
||||
while (!feof(fp_read)) {
|
||||
fgets(riga, 200, fp_read);
|
||||
|
||||
for (int i = 0; i < c; i++) {
|
||||
richiedeCiclo = true;
|
||||
while (richiedeCiclo) {
|
||||
richiedeCiclo = false;
|
||||
char * ptr = strstr(riga, coppie[i].sequenza);
|
||||
if (ptr != NULL) {
|
||||
strcpy(buf, ptr);
|
||||
w = sprintf(ptr, "$%d$", coppie[i].codice);
|
||||
strcpy(ptr + w, buf + coppie[i].len);
|
||||
richiedeCiclo = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
fprintf(fp_write, "%s", riga);
|
||||
}
|
||||
|
||||
fclose(fp_read);
|
||||
fclose(fp_write);
|
||||
|
||||
return 0;
|
||||
}
|
||||
5
Laboratorio 5/ricodificato.txt
Normal file
5
Laboratorio 5/ricodificato.txt
Normal file
@@ -0,0 +1,5 @@
|
||||
a$11$ figlio di a$2$
|
||||
fece una $333$ di $11$ di $2$
|
||||
tu$6$ i pesci venn$81$o a g$41$
|
||||
p$81$ ved$81$e la $333$ di $11$ di $2$
|
||||
fa$5078$ da a$11$ figlio di a$2$
|
||||
5
Laboratorio 5/sorgente.txt
Normal file
5
Laboratorio 5/sorgente.txt
Normal file
@@ -0,0 +1,5 @@
|
||||
apelle figlio di apollo
|
||||
fece una palla di pelle di pollo
|
||||
tutti i pesci vennero a galla
|
||||
per vedere la palla di pelle di pollo
|
||||
fatta da apelle figlio di apollo
|
||||
Reference in New Issue
Block a user