feat: Initial commit
This commit is contained in:
43
Laboratorio 1/EsempioIO.c
Normal file
43
Laboratorio 1/EsempioIO.c
Normal file
@@ -0,0 +1,43 @@
|
||||
#include <stdio.h>
|
||||
int main()
|
||||
{
|
||||
FILE *fp_read, *fp_write;
|
||||
char file_char, choice;
|
||||
if ((fp_read = fopen("../Guide.txt", "r")) == NULL)
|
||||
{
|
||||
printf("Error opening file\n");
|
||||
return 1;
|
||||
}
|
||||
if ((fp_write = fopen("../Output.txt", "w")) == NULL)
|
||||
{
|
||||
printf("Error opening file\n");
|
||||
return 2;
|
||||
}
|
||||
printf("Print on console (C) or on file (F):");
|
||||
choice = getchar();
|
||||
while (!feof(fp_read))
|
||||
{
|
||||
file_char = fgetc(fp_read);
|
||||
if (!feof(fp_read))
|
||||
{
|
||||
switch (choice)
|
||||
{
|
||||
case 'C':
|
||||
printf("\nChar printed on the console: %c",
|
||||
file_char);
|
||||
break;
|
||||
case 'F':
|
||||
fputc(file_char, fp_write);
|
||||
printf("\nChar saved on file: ");
|
||||
putchar(file_char);
|
||||
break;
|
||||
default:
|
||||
printf("Wrong choice\n");
|
||||
return 3;
|
||||
}
|
||||
}
|
||||
}
|
||||
fclose(fp_read);
|
||||
fclose(fp_write);
|
||||
return 0;
|
||||
}
|
||||
4
Laboratorio 1/Operations.txt
Normal file
4
Laboratorio 1/Operations.txt
Normal file
@@ -0,0 +1,4 @@
|
||||
+ 15.225 30.51
|
||||
- 42.1 10.01
|
||||
* 0.62 2.4
|
||||
/ 5.0 2.5
|
||||
4
Laboratorio 1/Results.txt
Normal file
4
Laboratorio 1/Results.txt
Normal file
@@ -0,0 +1,4 @@
|
||||
+ 45.74
|
||||
- 32.09
|
||||
* 1.49
|
||||
/ 2.00
|
||||
12
Laboratorio 1/TestAmbiente.c
Normal file
12
Laboratorio 1/TestAmbiente.c
Normal file
@@ -0,0 +1,12 @@
|
||||
#include <stdio.h>
|
||||
int main(void)
|
||||
{
|
||||
int x, y;
|
||||
float z;
|
||||
printf("Insert an integer number:");
|
||||
scanf("%d", &x);
|
||||
y = 3;
|
||||
z = (float)(x) / y;
|
||||
printf("%d/%d=%.3f\n", x, y, z);
|
||||
return 0;
|
||||
}
|
||||
40
Laboratorio 1/calcolaaree.c
Normal file
40
Laboratorio 1/calcolaaree.c
Normal file
@@ -0,0 +1,40 @@
|
||||
#include <stdio.h>
|
||||
#define P 3.14
|
||||
|
||||
int main()
|
||||
{
|
||||
char fig;
|
||||
char dato;
|
||||
float area;
|
||||
float num;
|
||||
scanf("%c %c%f", &fig, &dato, &num);
|
||||
|
||||
if (fig == 'Q')
|
||||
{
|
||||
if (dato == 'D')
|
||||
{
|
||||
area = num * num / 2;
|
||||
}
|
||||
else if (dato == 'L')
|
||||
{
|
||||
area = num * num;
|
||||
}
|
||||
|
||||
printf("Area quadrato = %f\n", area);
|
||||
}
|
||||
else if (fig == 'C')
|
||||
{
|
||||
if (dato == 'D')
|
||||
{
|
||||
area = P * num * num / 4;
|
||||
}
|
||||
else if (dato == 'R')
|
||||
{
|
||||
area = P * num * num;
|
||||
}
|
||||
|
||||
printf("Area cerchio = %f\n", area);
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
43
Laboratorio 1/calcolatrice.c
Normal file
43
Laboratorio 1/calcolatrice.c
Normal file
@@ -0,0 +1,43 @@
|
||||
#include <stdio.h>
|
||||
int main()
|
||||
{
|
||||
char operation;
|
||||
float op1, op2, res;
|
||||
|
||||
operation = getchar();
|
||||
if (scanf("%f %f", &op1, &op2) != 2) {
|
||||
printf("Error: Invalid input\n");
|
||||
return 2;
|
||||
}
|
||||
|
||||
switch (operation)
|
||||
{
|
||||
case '+':
|
||||
res = op1 + op2;
|
||||
break;
|
||||
|
||||
case '-':
|
||||
res = op1 - op2;
|
||||
break;
|
||||
|
||||
case '*':
|
||||
res = op1 * op2;
|
||||
break;
|
||||
|
||||
case '/':
|
||||
if (op2 == 0) {
|
||||
printf("Error: divide by zero\n");
|
||||
return 2;
|
||||
}
|
||||
res = op1 / op2;
|
||||
break;
|
||||
|
||||
default:
|
||||
printf("Error: invalid operation\n");
|
||||
return 1;
|
||||
}
|
||||
|
||||
printf("%c %f\n", operation, res);
|
||||
|
||||
return 0;
|
||||
}
|
||||
61
Laboratorio 1/calcolatricefile.c
Normal file
61
Laboratorio 1/calcolatricefile.c
Normal file
@@ -0,0 +1,61 @@
|
||||
#include <stdio.h>
|
||||
int main()
|
||||
{
|
||||
|
||||
FILE *fp_read, *fp_write;
|
||||
char operation;
|
||||
float op1, op2, res;
|
||||
|
||||
if ((fp_read = fopen("./Operations.txt", "r")) == NULL)
|
||||
{
|
||||
printf("Error opening file\n");
|
||||
return 1;
|
||||
}
|
||||
if ((fp_write = fopen("./Results.txt", "w")) == NULL)
|
||||
{
|
||||
printf("Error opening file\n");
|
||||
return 2;
|
||||
}
|
||||
|
||||
while (!feof(fp_read))
|
||||
{
|
||||
fscanf(fp_read, " %c %f %f", &operation, &op1, &op2);
|
||||
if (!feof(fp_read))
|
||||
{
|
||||
switch (operation)
|
||||
{
|
||||
case '+':
|
||||
res = op1 + op2;
|
||||
break;
|
||||
|
||||
case '-':
|
||||
res = op1 - op2;
|
||||
break;
|
||||
|
||||
case '*':
|
||||
res = op1 * op2;
|
||||
break;
|
||||
|
||||
case '/':
|
||||
if (op2 == 0)
|
||||
{
|
||||
printf("Error: divide by zero\n");
|
||||
return 3;
|
||||
}
|
||||
res = op1 / op2;
|
||||
break;
|
||||
|
||||
default:
|
||||
printf("Error: invalid operation\n");
|
||||
return 1;
|
||||
}
|
||||
|
||||
fprintf(fp_write, "%c %.2f\n", operation, res);
|
||||
}
|
||||
}
|
||||
|
||||
fclose(fp_read);
|
||||
fclose(fp_write);
|
||||
|
||||
return 0;
|
||||
}
|
||||
4
Laboratorio 2/compresso.txt
Normal file
4
Laboratorio 2/compresso.txt
Normal file
@@ -0,0 +1,4 @@
|
||||
Partenza $5Destinazione $3Costo
|
||||
Parigi $9New York $410$2
|
||||
$4Roma $9 Londra $570$1
|
||||
$2Sidney $6Los Angeles $42$3
|
||||
4
Laboratorio 2/decompresso.txt
Normal file
4
Laboratorio 2/decompresso.txt
Normal file
@@ -0,0 +1,4 @@
|
||||
Partenza Destinazione Costo
|
||||
Parigi New York 1000
|
||||
Roma Londra 700
|
||||
Sidney Los Angeles 2222
|
||||
32
Laboratorio 2/esercizio1.c
Normal file
32
Laboratorio 2/esercizio1.c
Normal file
@@ -0,0 +1,32 @@
|
||||
#include <stdio.h>
|
||||
|
||||
int mcd(int a, int b) {
|
||||
if (a == 0) {
|
||||
return b;
|
||||
}
|
||||
|
||||
if (a > b) {
|
||||
return mcd(a % b, b);
|
||||
} else {
|
||||
return mcd(b % a, a);
|
||||
}
|
||||
}
|
||||
|
||||
int main()
|
||||
{
|
||||
int a, b, res;
|
||||
if (scanf("%d %d", &a, &b) != 2) {
|
||||
puts("Error, invalid input!");
|
||||
return 1;
|
||||
}
|
||||
|
||||
if (a < 0 || b < 0) {
|
||||
puts("Error, you must insert two positive integers!");
|
||||
return 1;
|
||||
}
|
||||
|
||||
res = mcd(a, b);
|
||||
printf("MCD = %d\n", res);
|
||||
|
||||
return 0;
|
||||
}
|
||||
110
Laboratorio 2/esercizio2.c
Normal file
110
Laboratorio 2/esercizio2.c
Normal file
@@ -0,0 +1,110 @@
|
||||
#include <stdio.h>
|
||||
|
||||
int comprimi(FILE *fin, FILE *fout) {
|
||||
char lastChar = 0, currChar; // sono sicuro che il file non inizi con un null character
|
||||
int count = 0;
|
||||
|
||||
int charCount = 0;
|
||||
|
||||
while (!feof(fin))
|
||||
{
|
||||
currChar = fgetc(fin);
|
||||
|
||||
if (feof(fin))
|
||||
break;
|
||||
|
||||
|
||||
if (currChar != lastChar || count == 10) {
|
||||
if (count > 1) {
|
||||
fputc('$', fout);
|
||||
fputc('0'+count-1, fout);
|
||||
charCount += 2;
|
||||
}
|
||||
|
||||
count = 1;
|
||||
lastChar = currChar;
|
||||
fputc(currChar, fout);
|
||||
charCount++;
|
||||
} else {
|
||||
count++;
|
||||
}
|
||||
}
|
||||
|
||||
if (count > 1) { // Controllo se devo scrivere le ripetizioni dell'ultimo carattere
|
||||
fputc('$', fout);
|
||||
fputc('0'+count-1, fout);
|
||||
charCount += 2;
|
||||
}
|
||||
|
||||
return charCount;
|
||||
}
|
||||
|
||||
int decomprimi(FILE *fin, FILE *fout) {
|
||||
char lastChar, currChar;
|
||||
int count, i;
|
||||
|
||||
int charCount = 0;
|
||||
while (!feof(fin))
|
||||
{
|
||||
currChar = fgetc(fin);
|
||||
|
||||
if (feof(fin))
|
||||
break;
|
||||
|
||||
if (currChar == '$') {
|
||||
count = fgetc(fin) - '0';
|
||||
|
||||
for (i = 0; i < count; i++)
|
||||
fputc(lastChar, fout);
|
||||
|
||||
charCount += count;
|
||||
} else {
|
||||
lastChar = currChar;
|
||||
fputc(currChar, fout);
|
||||
charCount++;
|
||||
}
|
||||
}
|
||||
|
||||
return charCount;
|
||||
}
|
||||
|
||||
|
||||
int main()
|
||||
{
|
||||
|
||||
FILE *fp_read, *fp_write;
|
||||
char operation;
|
||||
|
||||
puts("Inserisci 'c' per comprimere o qualsiasi altro carattere per decomprimere: ");
|
||||
scanf(" %c", &operation);
|
||||
|
||||
if (operation == 'c') {
|
||||
fp_read = fopen("./sorgente.txt", "r");
|
||||
fp_write = fopen("./compresso.txt", "w");
|
||||
} else {
|
||||
fp_read = fopen("./compresso.txt", "r");
|
||||
fp_write = fopen("./decompresso.txt", "w");
|
||||
}
|
||||
|
||||
if (fp_read == NULL)
|
||||
{
|
||||
printf("Error opening input file\n");
|
||||
return 1;
|
||||
}
|
||||
if (fp_write == NULL)
|
||||
{
|
||||
printf("Error opening output file\n");
|
||||
return 2;
|
||||
}
|
||||
|
||||
if (operation == 'c') {
|
||||
comprimi(fp_read, fp_write);
|
||||
} else {
|
||||
decomprimi(fp_read, fp_write);
|
||||
}
|
||||
|
||||
fclose(fp_read);
|
||||
fclose(fp_write);
|
||||
|
||||
return 0;
|
||||
}
|
||||
4
Laboratorio 2/sorgente.txt
Normal file
4
Laboratorio 2/sorgente.txt
Normal file
@@ -0,0 +1,4 @@
|
||||
Partenza Destinazione Costo
|
||||
Parigi New York 1000
|
||||
Roma Londra 700
|
||||
Sidney Los Angeles 2222
|
||||
21
Laboratorio 3/elaborato.txt
Normal file
21
Laboratorio 3/elaborato.txt
Normal file
@@ -0,0 +1,21 @@
|
||||
Caratterizzata da un pass| c:25
|
||||
ato turbolento, in | c:19
|
||||
epoca medievale Rouen fu | c:25
|
||||
devastata piu' volte | c:21
|
||||
da incendi ed epidemie e | c:25
|
||||
durante la Guerra | c:18
|
||||
dei Cent' Anni fu occupat| c:25
|
||||
a dagli inglesi. | c:18
|
||||
Nel **** nella sua piazza| c:25
|
||||
centrale la giovane | c:21
|
||||
Giovanna d' Arco ( Jeanne| c:25
|
||||
d' Arc) fu processata | c:23
|
||||
per eresia e arsa sul rog| c:25
|
||||
o! Durante la seconda | c:22
|
||||
guerra mondiale gli Allea| c:25
|
||||
ti bombardarono | c:16
|
||||
ampie zone della citta' ,| c:25
|
||||
soprattutto il | c:16
|
||||
quartiere che si estende | c:25
|
||||
a sud della cattedrale. | c:25
|
||||
<EFBFBD> | c:2
|
||||
108
Laboratorio 3/esercizio1.c
Normal file
108
Laboratorio 3/esercizio1.c
Normal file
@@ -0,0 +1,108 @@
|
||||
#include <stdio.h>
|
||||
#include <ctype.h>
|
||||
#include <stdbool.h>
|
||||
#define INPUT_FILE "./input.txt"
|
||||
#define OUTPUT_FILE "./testo.txt"
|
||||
|
||||
void writeChar(FILE *fout, int * charInLine, int * written, char chr, bool isOrig) {
|
||||
if (chr != '\n') {
|
||||
fputc(chr, fout);
|
||||
} else {
|
||||
for (int i = *charInLine; i <= 24; i++) {
|
||||
fputc(' ', fout);
|
||||
}
|
||||
}
|
||||
|
||||
if (*charInLine >= 24 || chr == '\n') {
|
||||
fprintf(fout, "| c:%d \n", *written + 1);
|
||||
*charInLine = 0;
|
||||
*written = 0;
|
||||
} else {
|
||||
if (isOrig) {
|
||||
*written += 1;
|
||||
}
|
||||
*charInLine += 1;
|
||||
}
|
||||
}
|
||||
|
||||
void elabora(FILE *fin, FILE *fout) {
|
||||
char lastChar, currChar, buf;
|
||||
int count, i;
|
||||
|
||||
int charInLine = 0, written = 0;
|
||||
bool requiresSpace = false;
|
||||
bool requiresCaps = false;
|
||||
|
||||
while (!feof(fin))
|
||||
{
|
||||
buf = fgetc(fin);
|
||||
|
||||
if (feof(fin))
|
||||
break;
|
||||
|
||||
currChar = buf; // This is done to avoid havind EOF char in currChar.
|
||||
|
||||
if (requiresSpace) {
|
||||
if (currChar != ' ') {
|
||||
writeChar(fout, &charInLine, &written, ' ', false);
|
||||
}
|
||||
|
||||
requiresSpace = false;
|
||||
}
|
||||
|
||||
if (requiresCaps && isalpha(currChar)) {
|
||||
if (currChar >= 97 && currChar <= 122) {
|
||||
currChar -= 32;
|
||||
}
|
||||
|
||||
requiresCaps = false;
|
||||
}
|
||||
|
||||
if (isdigit(currChar)) {
|
||||
writeChar(fout, &charInLine, &written, '*', true);
|
||||
} else {
|
||||
writeChar(fout, &charInLine, &written, currChar, true);
|
||||
}
|
||||
|
||||
if (currChar == '.' || currChar == ',' ||currChar == ';' ||currChar == ':' ||currChar == '!' ||currChar == '?' ||currChar == '\''||currChar == '('||currChar == ')') {
|
||||
requiresSpace = true;
|
||||
}
|
||||
|
||||
if (currChar == '.' ||currChar == '!' ||currChar == '?') {
|
||||
requiresCaps = true;
|
||||
}
|
||||
}
|
||||
|
||||
// Add '\n' at the end of the file if not present
|
||||
if (currChar != '\n') {
|
||||
writeChar(fout, &charInLine, &written, '\n', false);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
int main()
|
||||
{
|
||||
|
||||
FILE *fp_read, *fp_write;
|
||||
|
||||
fp_read = fopen(INPUT_FILE, "r");
|
||||
fp_write = fopen(OUTPUT_FILE, "w");
|
||||
|
||||
if (fp_read == NULL)
|
||||
{
|
||||
printf("Error opening file\n");
|
||||
return 1;
|
||||
}
|
||||
if (fp_write == NULL)
|
||||
{
|
||||
printf("Error opening file\n");
|
||||
return 2;
|
||||
}
|
||||
|
||||
elabora(fp_read, fp_write);
|
||||
|
||||
fclose(fp_read);
|
||||
fclose(fp_write);
|
||||
|
||||
return 0;
|
||||
}
|
||||
71
Laboratorio 3/esercizio3.c
Normal file
71
Laboratorio 3/esercizio3.c
Normal file
@@ -0,0 +1,71 @@
|
||||
#include <stdio.h>
|
||||
#include <ctype.h>
|
||||
#include <stdbool.h>
|
||||
#define INPUT_FILE "./numeri.txt"
|
||||
|
||||
int max(int a, int b)
|
||||
{
|
||||
if (a > b) {
|
||||
return a;
|
||||
}
|
||||
|
||||
return b;
|
||||
}
|
||||
|
||||
int min(int a, int b)
|
||||
{
|
||||
if (a < b) {
|
||||
return a;
|
||||
}
|
||||
|
||||
return b;
|
||||
}
|
||||
|
||||
int main()
|
||||
{
|
||||
|
||||
FILE *fp_read;
|
||||
|
||||
fp_read = fopen(INPUT_FILE, "r");
|
||||
|
||||
if (fp_read == NULL)
|
||||
{
|
||||
printf("Error opening file\n");
|
||||
return 1;
|
||||
}
|
||||
|
||||
int x, y, a;
|
||||
int maxVal, minVal, scartati = 0;
|
||||
|
||||
if (fscanf(fp_read, " %d", &x) == EOF || fscanf(fp_read, " %d",& y) == EOF) {
|
||||
fclose(fp_read);
|
||||
return 1; // Terminate if there are only two numbers
|
||||
}
|
||||
|
||||
minVal = min(x, y);
|
||||
maxVal = max(x, y);
|
||||
|
||||
while (!feof(fp_read))
|
||||
{
|
||||
if (fscanf(fp_read, " %d", &a) == EOF) {
|
||||
break;
|
||||
}
|
||||
|
||||
if (x + y != a && x - y != a && x * y != a && (y==0 || x / y != a )) {
|
||||
scartati++;
|
||||
continue;
|
||||
}
|
||||
|
||||
minVal = min(minVal, a);
|
||||
maxVal = max(maxVal, a);
|
||||
|
||||
x = y;
|
||||
y = a;
|
||||
}
|
||||
|
||||
printf("Numero massimo: %d\nNumero minimo: %d\nNumeri scartati: %d\n", maxVal, minVal, scartati);
|
||||
|
||||
fclose(fp_read);
|
||||
|
||||
return 0;
|
||||
}
|
||||
9
Laboratorio 3/input.txt
Normal file
9
Laboratorio 3/input.txt
Normal file
@@ -0,0 +1,9 @@
|
||||
Caratterizzata da un passato turbolento, in
|
||||
epoca medievale Rouen fu devastata piu' volte
|
||||
da incendi ed epidemie e durante la Guerra
|
||||
dei Cent'Anni fu occupata dagli inglesi.
|
||||
nel 1431 nella sua piazza centrale la giovane
|
||||
Giovanna d'Arco (Jeanne d'Arc) fu processata
|
||||
per eresia e arsa sul rogo!durante la seconda
|
||||
guerra mondiale gli Alleati bombardarono
|
||||
ampie zone della citta', soprattutto il quartiere che si estende a sud della cattedrale.
|
||||
10
Laboratorio 3/numeri.txt
Normal file
10
Laboratorio 3/numeri.txt
Normal file
@@ -0,0 +1,10 @@
|
||||
12
|
||||
3
|
||||
4
|
||||
7 -3
|
||||
0
|
||||
4
|
||||
1
|
||||
3
|
||||
3 9
|
||||
11
|
||||
20
Laboratorio 3/testo.txt
Normal file
20
Laboratorio 3/testo.txt
Normal file
@@ -0,0 +1,20 @@
|
||||
Caratterizzata da un pass| c:25
|
||||
ato turbolento, in | c:19
|
||||
epoca medievale Rouen fu | c:25
|
||||
devastata piu' volte | c:21
|
||||
da incendi ed epidemie e | c:25
|
||||
durante la Guerra | c:18
|
||||
dei Cent' Anni fu occupat| c:24
|
||||
a dagli inglesi. | c:17
|
||||
Nel **** nella sua piazza| c:25
|
||||
centrale la giovane | c:21
|
||||
Giovanna d' Arco ( Jeanne| c:23
|
||||
d' Arc) fu processata | c:22
|
||||
per eresia e arsa sul rog| c:25
|
||||
o! Durante la seconda | c:21
|
||||
guerra mondiale gli Allea| c:25
|
||||
ti bombardarono | c:16
|
||||
ampie zone della citta' ,| c:24
|
||||
soprattutto il quartiere| c:25
|
||||
che si estende a sud del| c:25
|
||||
la cattedrale. | c:15
|
||||
4
Laboratorio 4/matrix.txt
Normal file
4
Laboratorio 4/matrix.txt
Normal file
@@ -0,0 +1,4 @@
|
||||
3 4
|
||||
1 2 3 4
|
||||
5 6 7 8
|
||||
9 0 1 1
|
||||
118
Laboratorio 4/matrixquad.c
Normal file
118
Laboratorio 4/matrixquad.c
Normal file
@@ -0,0 +1,118 @@
|
||||
// Laboratorio 4 - Esercizio 3
|
||||
// Matteo Schiff - s295565
|
||||
|
||||
#include <stdio.h>
|
||||
#include <ctype.h>
|
||||
#define MAX_N 20
|
||||
|
||||
int min(int a, int b);
|
||||
int stampaSottomatrice(int m[MAX_N][MAX_N], int x, int y, int dim);
|
||||
void sottomatrici(int M[MAX_N][MAX_N], int nr, int nc, int dim);
|
||||
int leggiMatrice(int M[MAX_N][MAX_N], int * nr, int * nc);
|
||||
|
||||
int min(int a, int b) {
|
||||
if (a < b)
|
||||
return a;
|
||||
|
||||
return b;
|
||||
}
|
||||
|
||||
|
||||
// La funzione stampa la sottomatrice e restituisce la somma degli elementi
|
||||
int stampaSottomatrice(int m[MAX_N][MAX_N], int x, int y, int dim) {
|
||||
int sum = 0;
|
||||
for (int i = x; i < x + dim; i++) {
|
||||
for (int j = y; j < y + dim; j++) {
|
||||
printf("%d ", m[i][j]);
|
||||
sum += m[i][j];
|
||||
}
|
||||
putc('\n', stdout);
|
||||
}
|
||||
putc('\n', stdout);
|
||||
|
||||
return sum;
|
||||
}
|
||||
|
||||
void sottomatrici(int M[MAX_N][MAX_N], int nr, int nc, int dim) {
|
||||
int a, max = 0;
|
||||
int x = -1, y = -1;
|
||||
|
||||
printf("Le sottomatrici quadrate di dimensione %d sono:\n", dim);
|
||||
|
||||
for (int i = 0; i <= nr - dim; i++) {
|
||||
for (int j = 0; j <= nc - dim; j++) {
|
||||
a = stampaSottomatrice(M, i, j, dim);
|
||||
|
||||
if (a >= max) {
|
||||
max = a;
|
||||
x = i;
|
||||
y = j;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
printf("La sottomatrice con somma degli elementi massima (%d) e':\n", max);
|
||||
stampaSottomatrice(M, x, y, dim);
|
||||
}
|
||||
|
||||
int leggiMatrice(int M[MAX_N][MAX_N], int * nr, int * nc) {
|
||||
char filename[23] = "./";
|
||||
FILE *fp_read;
|
||||
|
||||
puts("Inserisci il nome del file");
|
||||
scanf("%20s", filename + 2);
|
||||
|
||||
|
||||
fp_read = fopen(filename, "r");
|
||||
|
||||
if (fp_read == NULL)
|
||||
{
|
||||
printf("Errore nell'apertura del file\n");
|
||||
return 1;
|
||||
}
|
||||
|
||||
fscanf(fp_read, "%d %d\n", nr, nc);
|
||||
|
||||
// Controlla dimensione matrice
|
||||
if (*nr < 0 || *nc < 0 || *nr > MAX_N || *nc > MAX_N) {
|
||||
printf("Dimensione della matrice non valida\n");
|
||||
fclose(fp_read);
|
||||
return 1;
|
||||
}
|
||||
|
||||
// Leggi matrice
|
||||
for (int i = 0; i < *nr; i++) {
|
||||
for (int j = 0; j < *nc; j++) {
|
||||
fscanf(fp_read, "%d ", &M[i][j]);
|
||||
}
|
||||
}
|
||||
|
||||
fclose(fp_read);
|
||||
return 0;
|
||||
}
|
||||
|
||||
int main()
|
||||
{
|
||||
int M[MAX_N][MAX_N], N, P, dir, lmax, dim, nr, nc;
|
||||
|
||||
if (leggiMatrice(M, &nr, &nc)) {
|
||||
return 1;
|
||||
}
|
||||
|
||||
lmax = min(nr, nc);
|
||||
|
||||
// Chiedi all'utente le dimensioni dei sottoquadrati
|
||||
while (1) {
|
||||
printf("Inserisci una dimensione compresa tra 1 e %d: ", lmax);
|
||||
scanf("%d", &dim);
|
||||
|
||||
// Se dim non è un valore valido, termina
|
||||
if (dim < 1 || dim > lmax) {
|
||||
break;
|
||||
}
|
||||
|
||||
sottomatrici(M, nr, nc, dim);
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
58
Laboratorio 4/ruota.c
Normal file
58
Laboratorio 4/ruota.c
Normal file
@@ -0,0 +1,58 @@
|
||||
// Laboratorio 4 - Esercizio 2
|
||||
// Matteo Schiff - s295565
|
||||
|
||||
#include <stdio.h>
|
||||
#include <ctype.h>
|
||||
#define MAX_N 30
|
||||
|
||||
void ruota(int v[MAX_N], int N, int P, int dir);
|
||||
|
||||
void ruota(int v[MAX_N], int N, int P, int dir) {
|
||||
int t;
|
||||
|
||||
P = P % N;
|
||||
|
||||
for (int x = 0; x < P; x++) {
|
||||
if (dir == 1) {
|
||||
t = v[0];
|
||||
for (int i = 0; i < N - 1; i++) {
|
||||
v[i] = v[i+1];
|
||||
}
|
||||
v[N-1] = t;
|
||||
} else {
|
||||
t = v[N-1];
|
||||
for (int i = N-1; i > 0; i--) {
|
||||
v[i] = v[i-1];
|
||||
}
|
||||
v[0] = t;
|
||||
}
|
||||
}
|
||||
|
||||
for (int x = 0; x < N; x++) {
|
||||
printf("%d ", v[x]);
|
||||
}
|
||||
putchar('\n');
|
||||
}
|
||||
|
||||
int main()
|
||||
{
|
||||
int V[MAX_N], N, P, dir;
|
||||
|
||||
do {
|
||||
printf("Inserisci N compreso tra 0 e %d: ", MAX_N);
|
||||
} while(scanf("%d", &N) != 1 || N > MAX_N || N < 0);
|
||||
|
||||
printf("Inserisci il vettore di lunghezza %d: ", N);
|
||||
for(int i = 0; i < N; i++) {
|
||||
scanf(" %d", &V[i]);
|
||||
}
|
||||
|
||||
do {
|
||||
printf("Inserisci il numero di rotazioni e la direzione (formato '<rotazioni> <direzione>'): ");
|
||||
scanf(" %d %d", &P, &dir);
|
||||
ruota(V, N, P, dir);
|
||||
} while (P != 0);
|
||||
|
||||
|
||||
return 0;
|
||||
}
|
||||
66
Laboratorio 4/sottovettori.c
Normal file
66
Laboratorio 4/sottovettori.c
Normal file
@@ -0,0 +1,66 @@
|
||||
// Laboratorio 4 - Esercizio 1
|
||||
// Matteo Schiff - s295565
|
||||
|
||||
#include <stdio.h>
|
||||
#include <ctype.h>
|
||||
#define INPUT_FILE "./vettore.txt"
|
||||
#define MAX_LEN 30
|
||||
|
||||
void sottoSequenze(int V[MAX_LEN], int N);
|
||||
|
||||
void sottoSequenze(int V[MAX_LEN], int N) {
|
||||
int start = 0; // memorizza l'inizio del sottovettore corrente
|
||||
int maxLen = 0; // memorizza la grandezza del massimo sottovettore decrementata di uno
|
||||
|
||||
int positions[30]; // memorizza gli indici dei sottovettori con lunghezza massima trovati
|
||||
int lastPosition = 0; // memorizza la posizione dell'ultimo elemento salvato in `positions`
|
||||
|
||||
for (int i = 0; i < N; i++) {
|
||||
if (V[i] == 0) {
|
||||
start = i+1;
|
||||
}
|
||||
|
||||
if ((i - start) == maxLen) {
|
||||
positions[lastPosition] = start;
|
||||
lastPosition++;
|
||||
} else if ((i - start) > maxLen) {
|
||||
positions[0] = start;
|
||||
lastPosition = 1;
|
||||
maxLen = i - start;
|
||||
}
|
||||
}
|
||||
|
||||
printf("I sottovettori sono di dimensione massima (%d):\n", maxLen + 1);
|
||||
|
||||
for (int j = 0; j < lastPosition; j++) { // Per ogni sottovettore ...
|
||||
for (int x = 0; x < maxLen + 1; x++) { // ... stampa il sottovettore
|
||||
printf("%d ", V[positions[j]+x]);
|
||||
}
|
||||
putchar('\n');
|
||||
}
|
||||
}
|
||||
|
||||
int main()
|
||||
{
|
||||
int V[MAX_LEN], N;
|
||||
FILE *fp_read;
|
||||
|
||||
fp_read = fopen(INPUT_FILE, "r");
|
||||
|
||||
if (fp_read == NULL)
|
||||
{
|
||||
printf("Errore nell'apertura del file\n");
|
||||
return 1;
|
||||
}
|
||||
|
||||
for (N = 0; N < MAX_LEN && !feof(fp_read); N++) {
|
||||
if (fscanf(fp_read, "%d ", &V[N]) != 1)
|
||||
break;
|
||||
}
|
||||
|
||||
sottoSequenze(V, N);
|
||||
|
||||
fclose(fp_read);
|
||||
|
||||
return 0;
|
||||
}
|
||||
1
Laboratorio 4/vettore.txt
Normal file
1
Laboratorio 4/vettore.txt
Normal file
@@ -0,0 +1 @@
|
||||
1 3 4 0 1 0 9 4 2 0
|
||||
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
|
||||
249
Laboratorio 6/gtt.c
Normal file
249
Laboratorio 6/gtt.c
Normal file
@@ -0,0 +1,249 @@
|
||||
// Laboratorio 6 - Esercizio 1
|
||||
// Matteo Schiff - s295565
|
||||
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
#include <stdbool.h>
|
||||
#include <stdlib.h>
|
||||
#include <ctype.h>
|
||||
#define MAX_LEN 30
|
||||
#define MAX_ROWS 1000
|
||||
|
||||
const int MAXL = 50;
|
||||
|
||||
typedef struct Time {
|
||||
unsigned int hours;
|
||||
unsigned int minutes;
|
||||
unsigned int seconds;
|
||||
} time;
|
||||
|
||||
typedef struct Date {
|
||||
unsigned int year;
|
||||
unsigned int month;
|
||||
unsigned int day;
|
||||
} date;
|
||||
|
||||
typedef struct Corsa {
|
||||
char codice_tratta[MAX_LEN];
|
||||
char partenza[MAX_LEN];
|
||||
char destinazione[MAX_LEN];
|
||||
date data;
|
||||
time ora_partenza;
|
||||
time ora_arrivo;
|
||||
unsigned int ritardo;
|
||||
} corsa;
|
||||
|
||||
typedef enum {
|
||||
r_date, r_partenza, r_capolinea, r_ritardo, r_ritardo_tot, r_fine
|
||||
} t_comandi;
|
||||
|
||||
char* toLower(char* s);
|
||||
t_comandi leggiComando();
|
||||
int confrontaDate(date a, date b);
|
||||
void stampaCorsa(corsa corsa);
|
||||
void data(char * argomenti, corsa corse[MAX_ROWS], int N);
|
||||
void partenza(char * argomenti, corsa corse[MAX_ROWS], int N);
|
||||
void capolinea(char * argomenti, corsa corse[MAX_ROWS], int N);
|
||||
void ritardo(char * argomenti, corsa corse[MAX_ROWS], int N);
|
||||
void ritardoTot(char * argomenti, corsa corse[MAX_ROWS], int N);
|
||||
void menuParola (corsa corse[MAX_ROWS], int N);
|
||||
int loadFile(corsa corse[MAX_ROWS], int * N, char * filename);
|
||||
|
||||
// Trasforma in lowercase tutti i caratteri di una stringa
|
||||
char* toLower(char* s) {
|
||||
for(char *p=s; *p; p++) *p=tolower(*p);
|
||||
return s;
|
||||
}
|
||||
|
||||
t_comandi leggiComando() {
|
||||
t_comandi c;
|
||||
char cmd[MAXL];
|
||||
char tabella[7][12] = {
|
||||
"date", "partenza", "capolinea", "ritardo", "ritardo_tot", "fine"
|
||||
};
|
||||
printf("comando (date/partenza/capolinea");
|
||||
printf("/ritardo/ritardo_tot/fine): ");
|
||||
scanf("%s",cmd); toLower(cmd);
|
||||
c=r_date;
|
||||
while(c<7 && strcmp(cmd,tabella[c])!=0)
|
||||
c++;
|
||||
return (c);
|
||||
}
|
||||
|
||||
// restituisce true se la prima data è successiva o coincidente alla seconda
|
||||
int confrontaDate(date a, date b) {
|
||||
if (a.year > b.year)
|
||||
return true;
|
||||
else if (a.year < b.year)
|
||||
return false;
|
||||
|
||||
if (a.month > b.month)
|
||||
return true;
|
||||
else if (a.month < b.month)
|
||||
return false;
|
||||
|
||||
if (a.day >= b.day)
|
||||
return true;
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
void stampaCorsa(corsa corsa) {
|
||||
printf(" - %s %s %s, data: %4u/%02u/%02u, ora di partenza: %02u:%02u:%02u, ora di arrivo: %02u:%02u:%02u, ritardo %d minuto\n",
|
||||
corsa.codice_tratta, corsa.partenza, corsa.destinazione,
|
||||
corsa.data.year, corsa.data.month, corsa.data.day,
|
||||
corsa.ora_partenza.hours, corsa.ora_partenza.minutes, corsa.ora_partenza.seconds,
|
||||
corsa.ora_arrivo.hours, corsa.ora_arrivo.minutes, corsa.ora_arrivo.seconds,
|
||||
corsa.ritardo);
|
||||
}
|
||||
|
||||
void data(char * argomenti, corsa corse[MAX_ROWS], int N) {
|
||||
date data_inizio, data_fine;
|
||||
if (sscanf(argomenti, " %4u/%2u/%2u %4u/%2u/%2u", &data_inizio.year, &data_inizio.month, &data_inizio.day, &data_fine.year, &data_fine.month, &data_fine.day) != 6) {
|
||||
puts("Date non valide. La sintassi è 'date <data inizio> <data fine>'");
|
||||
return;
|
||||
}
|
||||
|
||||
puts("Elenco corse con partenza compresa nell'intervallo specificato:\n");
|
||||
|
||||
for (int i = 0; i < N; i++) {
|
||||
if (confrontaDate(corse[i].data, data_inizio) && confrontaDate(data_fine, corse[i].data)) {
|
||||
stampaCorsa(corse[i]);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void partenza(char * argomenti, corsa corse[MAX_ROWS], int N) {
|
||||
char partenza[30];
|
||||
if (sscanf(argomenti, " %30s", partenza) != 1) {
|
||||
puts("Partenza non valida. La sintassi è 'partenza <partenza>'");
|
||||
return;
|
||||
}
|
||||
|
||||
printf("Elenco corse con partenza da %s:\n", partenza);
|
||||
|
||||
for (int i = 0; i < N; i++) {
|
||||
if (strcmp(partenza, corse[i].partenza) == 0) {
|
||||
stampaCorsa(corse[i]);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void capolinea(char * argomenti, corsa corse[MAX_ROWS], int N) {
|
||||
char capolinea[30];
|
||||
if (sscanf(argomenti, " %30s", capolinea) != 1) {
|
||||
puts("Capolinea non valido. La sintassi è 'capolinea <capolinea>'");
|
||||
return;
|
||||
}
|
||||
|
||||
printf("Elenco corse con capolinea da %s:\n", capolinea);
|
||||
|
||||
for (int i = 0; i < N; i++) {
|
||||
if (strcmp(capolinea, corse[i].destinazione) == 0) {
|
||||
stampaCorsa(corse[i]);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void ritardo(char * argomenti, corsa corse[MAX_ROWS], int N) {
|
||||
date data_inizio, data_fine;
|
||||
if (sscanf(argomenti, " %4u/%2u/%2u %4u/%2u/%2u", &data_inizio.year, &data_inizio.month, &data_inizio.day, &data_fine.year, &data_fine.month, &data_fine.day) != 6) {
|
||||
puts("Date non valide. La sintassi è 'date <data inizio> <data fine>'");
|
||||
return;
|
||||
}
|
||||
|
||||
puts("Eleco corse con ritardo nell'intervallo di date specificato:\n");
|
||||
|
||||
for (int i = 0; i < N; i++) {
|
||||
if (confrontaDate(corse[i].data, data_inizio) && confrontaDate(data_fine, corse[i].data) && corse[i].ritardo > 0) {
|
||||
stampaCorsa(corse[i]);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void ritardoTot(char * argomenti, corsa corse[MAX_ROWS], int N) {
|
||||
char codice_tratta[30];
|
||||
if (sscanf(argomenti, " %30s", codice_tratta) != 1) {
|
||||
puts("Codice di tratta non valido. La sintassi è 'ritardo_tot <codice tratta>'");
|
||||
return;
|
||||
}
|
||||
|
||||
unsigned int sum = 0;
|
||||
|
||||
for (int i = 0; i < N; i++) {
|
||||
if (strcmp(codice_tratta, corse[i].codice_tratta) == 0) {
|
||||
sum += corse[i].ritardo;
|
||||
}
|
||||
}
|
||||
|
||||
printf("Il ritardo complessivo accumulato sulla tratta %s è pari a %u minuti.\n", codice_tratta, sum);
|
||||
}
|
||||
|
||||
void menuParola (corsa corse[MAX_ROWS], int N) {
|
||||
t_comandi comando;
|
||||
char argomenti[MAXL];
|
||||
int i, continua=1;
|
||||
while (continua) {
|
||||
comando = leggiComando();
|
||||
fgets(argomenti,MAXL,stdin); /* resto della riga */
|
||||
switch (comando) {
|
||||
case r_date: data(argomenti, corse, N); break;
|
||||
case r_partenza: partenza(argomenti, corse, N); break;
|
||||
case r_capolinea: capolinea(argomenti, corse, N); break;
|
||||
case r_ritardo: ritardo(argomenti, corse, N); break;
|
||||
case r_ritardo_tot: ritardoTot(argomenti, corse, N); break;
|
||||
case r_fine: continua = 0; break;
|
||||
default:
|
||||
puts("Comando non valido\n");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
int loadFile(corsa corse[MAX_ROWS], int * N, char * filename) {
|
||||
FILE *fp_read;
|
||||
unsigned int lines, i;
|
||||
|
||||
if ((fp_read = fopen(filename, "r")) == NULL)
|
||||
{
|
||||
puts("Impossibile aprire il file");
|
||||
return 1;
|
||||
}
|
||||
|
||||
fscanf(fp_read, "%u\n", &lines);
|
||||
|
||||
if (lines > MAX_ROWS) {
|
||||
fclose(fp_read);
|
||||
return 1;
|
||||
}
|
||||
|
||||
for (i = 0; i < lines; i++) {
|
||||
int num_read = fscanf(fp_read, "%30s %30s %30s %4u/%2u/%2u %2u:%2u:%2u %2u:%2u:%2u %u\n", corse[i].codice_tratta, corse[i].partenza, corse[i].destinazione, &corse[i].data.year, &corse[i].data.month, &corse[i].data.day, &corse[i].ora_partenza.hours, &corse[i].ora_partenza.minutes, &corse[i].ora_partenza.seconds, &corse[i].ora_arrivo.hours, &corse[i].ora_arrivo.minutes, &corse[i].ora_arrivo.seconds, &corse[i].ritardo);
|
||||
if (num_read != 13) {
|
||||
// la stringa è mal formattata
|
||||
printf("File non formattato correttamente. Errore a linea %d\n", i+1);
|
||||
fclose(fp_read);
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
|
||||
fclose(fp_read);
|
||||
|
||||
*N = i;
|
||||
return 0;
|
||||
}
|
||||
|
||||
int main() {
|
||||
int N;
|
||||
corsa corse[MAX_ROWS];
|
||||
|
||||
if (loadFile(corse, &N, "./log.txt")) {
|
||||
return 1;
|
||||
}
|
||||
|
||||
if (corse == NULL) {
|
||||
return 1;
|
||||
}
|
||||
menuParola(corse, N);
|
||||
|
||||
return 0;
|
||||
}
|
||||
7
Laboratorio 6/log.txt
Normal file
7
Laboratorio 6/log.txt
Normal file
@@ -0,0 +1,7 @@
|
||||
6
|
||||
GTT001 Braccini Porta_Nuova 2018/10/10 18:50:00 19:07:25 1
|
||||
GTT001 Braccini Porta_Nuova 2018/12/10 19:50:00 20:06:00 1
|
||||
GTT002 Politecnico XVIII_Dicembre 2018/10/10 10:01:23 10:12:08 4
|
||||
GTT003 Einaudi Cso_Trapani 2018/09/10 14:11:23 14:38:23 2
|
||||
GTT004 Marmolada Sebastopoli 2018/11/10 00:01:02 00:12:00 3
|
||||
GTT002 Politecnico Piazza_Statuto 2018/11/10 23:11:59 23:20:07 0
|
||||
127
Laboratorio 7/esercizio1.c
Normal file
127
Laboratorio 7/esercizio1.c
Normal file
@@ -0,0 +1,127 @@
|
||||
// Laboratorio 7 - Esercizio 1
|
||||
// Matteo Schiff - s295565
|
||||
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#define NC 50
|
||||
#define NR 50
|
||||
#define FILENAME "mappa.txt"
|
||||
|
||||
struct regione
|
||||
{
|
||||
int x, y, b, h;
|
||||
};
|
||||
|
||||
void leggiMatrice(int mat[][NC], int maxR, int *nrp, int *ncp);
|
||||
int riconosciRegione(int mat[][NC],int nr,int nc,int r,int c,int *b,int *h);
|
||||
void analizzaRegioni(int mat[][NC],int nr,int nc);
|
||||
|
||||
void leggiMatrice(int mat[][NC], int maxR, int *nrp, int *ncp) {
|
||||
FILE *fp_read;
|
||||
|
||||
fp_read = fopen(FILENAME, "r");
|
||||
|
||||
if (fp_read == NULL)
|
||||
{
|
||||
printf("Errore nell'apertura del file\n");
|
||||
return;
|
||||
}
|
||||
|
||||
fscanf(fp_read, "%d %d\n", nrp, ncp);
|
||||
|
||||
// Controlla dimensione matrice
|
||||
if (*nrp < 0 || *ncp < 0 || *nrp > maxR || *ncp > NC) {
|
||||
printf("Dimensione della matrice non valida\n");
|
||||
fclose(fp_read);
|
||||
return;
|
||||
}
|
||||
|
||||
// Leggi matrice
|
||||
for (int i = 0; i < *nrp; i++) {
|
||||
for (int j = 0; j < *ncp; j++) {
|
||||
fscanf(fp_read, "%d ", &mat[i][j]);
|
||||
}
|
||||
}
|
||||
|
||||
fclose(fp_read);
|
||||
}
|
||||
|
||||
int riconosciRegione(int mat[][NC],int nr,int nc,int r,int c,int *b,int *h) {
|
||||
int x, y;
|
||||
|
||||
// controlla se è un vertice
|
||||
if (r > 0 && mat[r-1][c] == 1 || c > 0 && mat[r][c-1] == 1) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
// misura estensione orizzontale
|
||||
for (x = r; x < nr; x++) {
|
||||
if (mat[x][c] != 1) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
// misura estensione verticale
|
||||
for (y = c; y < nc; y++) {
|
||||
if (mat[r][y] != 1) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
// calcola base ed altezza
|
||||
*h = x-r;
|
||||
*b = y-c;
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
void analizzaRegioni(int mat[][NC],int nr,int nc) {
|
||||
int b, h;
|
||||
|
||||
struct regione H, B, A;
|
||||
|
||||
int maxH = 0, maxB = 0, maxA = 0;
|
||||
|
||||
for (int r = 0; r < nr; r++){
|
||||
for (int c = 0; c < nc; c++){
|
||||
if (riconosciRegione(mat,nr,nc,r,c,&b,&h)) {
|
||||
if (h > maxH) {
|
||||
maxH = h;
|
||||
H.x = r;
|
||||
H.y = c;
|
||||
H.b = b;
|
||||
H.h = h;
|
||||
}
|
||||
|
||||
if (b > maxB) {
|
||||
maxB = b;
|
||||
B.x = r;
|
||||
B.y = c;
|
||||
B.b = b;
|
||||
B.h = h;
|
||||
}
|
||||
|
||||
if (h*b > maxA) {
|
||||
maxA = h*b;
|
||||
A.x = r;
|
||||
A.y = c;
|
||||
A.b = b;
|
||||
A.h = h;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
printf("Max altezza: estremo=(%d,%d), altezza=%d, larghezza=%d, area=%d\n", H.x, H.y, H.h, H.b, H.h * H.b);
|
||||
printf("Max larghezza: estremo=(%d,%d), altezza=%d, larghezza=%d, area=%d\n", B.x, B.y, B.h, B.b, B.h * B.b);
|
||||
printf("Max area: estremo=(%d,%d), altezza=%d, larghezza=%d, area=%d\n", A.x, A.y, A.h, A.b, A.h * A.b);
|
||||
}
|
||||
|
||||
int main() {
|
||||
int M[NR][NC];
|
||||
int nr, nc;
|
||||
|
||||
leggiMatrice(M,NR,&nr,&nc);
|
||||
analizzaRegioni(M, nr, nc);
|
||||
return 0;
|
||||
}
|
||||
191
Laboratorio 7/esercizio2.c
Normal file
191
Laboratorio 7/esercizio2.c
Normal file
@@ -0,0 +1,191 @@
|
||||
// Laboratorio 7 - Esercizio 2
|
||||
// Matteo Schiff - s295565
|
||||
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#define MAX_LEN 100
|
||||
#define FILENAME "sort.txt"
|
||||
|
||||
void leggiSequenza(int vec[MAX_LEN], int *len, FILE *fp_read);
|
||||
void copy(int source[MAX_LEN], int destination[MAX_LEN], int N);
|
||||
void insertionSort(int vec[MAX_LEN], int N);
|
||||
void selectionSort(int vec[MAX_LEN], int N);
|
||||
void shellSort(int vec[MAX_LEN], int N);
|
||||
|
||||
void leggiSequenza(int vec[MAX_LEN], int *len, FILE *fp_read)
|
||||
{
|
||||
fscanf(fp_read, "%d ", len);
|
||||
|
||||
// Leggi vettore
|
||||
for (int i = 0; i < *len; i++)
|
||||
{
|
||||
fscanf(fp_read, "%d ", &vec[i]);
|
||||
}
|
||||
}
|
||||
|
||||
void copy(int source[MAX_LEN], int destination[MAX_LEN], int N)
|
||||
{
|
||||
for (int i = 0; i < N; i++)
|
||||
{
|
||||
destination[i] = source[i];
|
||||
}
|
||||
}
|
||||
|
||||
void insertionSort(int vec[MAX_LEN], int N)
|
||||
{
|
||||
// variabili per statistiche
|
||||
int scambi = 0, iterInt = 0, iterExt = 0, iterTot = 0;
|
||||
// variabili algoritmo
|
||||
int i, j, l = 0, r = N - 1, x;
|
||||
|
||||
printf(" -- Insertion sort\n");
|
||||
|
||||
for (i = l + 1; i <= r; i++)
|
||||
{
|
||||
iterInt = 0;
|
||||
x = vec[i];
|
||||
j = i - 1;
|
||||
while (j >= 0 && x < vec[j])
|
||||
{
|
||||
vec[j + 1] = vec[j];
|
||||
j--;
|
||||
|
||||
// incremento statistiche
|
||||
scambi++;
|
||||
iterInt++;
|
||||
}
|
||||
vec[j + 1] = x;
|
||||
|
||||
// aggiorno statistiche
|
||||
scambi++;
|
||||
iterTot += iterInt;
|
||||
iterExt++;
|
||||
printf(" Iterazioni al ciclo %d: %d\n", i, iterInt);
|
||||
}
|
||||
iterTot += iterExt;
|
||||
printf(" Iterazioni esterne: %d\n", iterExt);
|
||||
printf(" Iterazioni totali: %d\n", iterTot);
|
||||
printf(" Scambi: %d\n", scambi);
|
||||
}
|
||||
|
||||
void selectionSort(int vec[MAX_LEN], int N)
|
||||
{
|
||||
// variabili per statistiche
|
||||
int scambi = 0, iterInt = 0, iterExt = 0, iterTot = 0;
|
||||
// variabili algoritmo
|
||||
int i, j, l = 0, r = N - 1, min, temp;
|
||||
|
||||
printf(" -- Selection sort\n");
|
||||
|
||||
for (i = l; i <= r; i++)
|
||||
{
|
||||
iterInt = 0;
|
||||
|
||||
min = i;
|
||||
for (j = i + 1; j <= r; j++)
|
||||
{
|
||||
if (vec[j] < vec[min])
|
||||
min = j;
|
||||
|
||||
iterInt++;
|
||||
}
|
||||
|
||||
if (min != i)
|
||||
{
|
||||
temp = vec[i];
|
||||
vec[i] = vec[min];
|
||||
vec[min] = temp;
|
||||
|
||||
scambi++;
|
||||
}
|
||||
|
||||
// aggiorno statistiche
|
||||
iterTot += iterInt;
|
||||
iterExt++;
|
||||
printf(" Iterazioni al ciclo %d: %d\n", i, iterInt);
|
||||
}
|
||||
iterTot += iterExt;
|
||||
printf(" Iterazioni esterne: %d\n", iterExt);
|
||||
printf(" Iterazioni totali: %d\n", iterTot);
|
||||
printf(" Scambi: %d\n", scambi);
|
||||
}
|
||||
|
||||
void shellSort(int vec[MAX_LEN], int N)
|
||||
{
|
||||
// variabili per statistiche
|
||||
int scambi = 0, iterInt = 0, iterExt = 0, iterTot = 0;
|
||||
// variabili algoritmo
|
||||
int i, j, x, l = 0, r = N - 1, h = 1;
|
||||
|
||||
printf(" -- Shell sort\n");
|
||||
|
||||
while (h < N / 3)
|
||||
h = 3 * h + 1;
|
||||
while (h >= 1)
|
||||
{
|
||||
for (i = l + h; i <= r; i++)
|
||||
{
|
||||
iterInt = 0;
|
||||
j = i;
|
||||
x = vec[i];
|
||||
while (j >= l + h && x < vec[j - h])
|
||||
{
|
||||
vec[j] = vec[j - h];
|
||||
|
||||
j -= h;
|
||||
scambi++;
|
||||
iterInt++;
|
||||
}
|
||||
vec[j] = x;
|
||||
scambi++;
|
||||
|
||||
// aggiorno statistiche
|
||||
iterTot += iterInt;
|
||||
iterExt++;
|
||||
printf(" Iterazioni al ciclo %d: %d\n", i, iterInt);
|
||||
}
|
||||
h = h / 3;
|
||||
}
|
||||
|
||||
iterTot += iterExt;
|
||||
printf(" Iterazioni esterne: %d\n", iterExt);
|
||||
printf(" Iterazioni totali: %d\n", iterTot);
|
||||
printf(" Scambi: %d\n", scambi);
|
||||
}
|
||||
|
||||
int main()
|
||||
{
|
||||
FILE *fp_read;
|
||||
int vec[MAX_LEN], toOrder[MAX_LEN];
|
||||
int n, len;
|
||||
|
||||
if ((fp_read = fopen(FILENAME, "r")) == NULL)
|
||||
{
|
||||
puts("Impossibile aprire il file\n");
|
||||
return 1;
|
||||
}
|
||||
|
||||
fscanf(fp_read, "%d ", &n);
|
||||
|
||||
for (int i = 0; i < n; i++)
|
||||
{
|
||||
leggiSequenza(vec, &len, fp_read);
|
||||
|
||||
printf(" - Sequenza %d\n", i);
|
||||
|
||||
copy(vec, toOrder, len);
|
||||
insertionSort(toOrder, len);
|
||||
|
||||
copy(vec, toOrder, len);
|
||||
selectionSort(toOrder, len);
|
||||
|
||||
copy(vec, toOrder, len);
|
||||
shellSort(toOrder, len);
|
||||
|
||||
putc('\n', stdout);
|
||||
}
|
||||
|
||||
fclose(fp_read);
|
||||
|
||||
return 0;
|
||||
}
|
||||
6
Laboratorio 7/mappa.txt
Normal file
6
Laboratorio 7/mappa.txt
Normal file
@@ -0,0 +1,6 @@
|
||||
5 6
|
||||
1 1 0 0 0 0
|
||||
0 0 1 1 0 0
|
||||
0 0 1 1 0 1
|
||||
0 0 0 0 0 1
|
||||
1 0 1 0 0 1
|
||||
5
Laboratorio 7/sort.txt
Normal file
5
Laboratorio 7/sort.txt
Normal file
@@ -0,0 +1,5 @@
|
||||
4
|
||||
5 1 2 3 4 5
|
||||
5 1 2 3 4 0
|
||||
5 5 4 3 2 1
|
||||
5 1 5 2 4 3
|
||||
121
Laboratorio 8/esercizio1.c
Normal file
121
Laboratorio 8/esercizio1.c
Normal file
@@ -0,0 +1,121 @@
|
||||
// Laboratorio 8 - Esercizio 1
|
||||
// Matteo Schiff - s295565
|
||||
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#define NC 50
|
||||
#define NR 50
|
||||
#define FILENAME "mappa.txt"
|
||||
|
||||
struct regione
|
||||
{
|
||||
int x, y, b, h;
|
||||
};
|
||||
|
||||
void leggiMatrice(int mat[][NC], int maxR, int *nrp, int *ncp);
|
||||
int riconosciRegione(int mat[][NC],int nr,int nc,int r,int c,int *b,int *h);
|
||||
|
||||
void leggiMatrice(int mat[][NC], int maxR, int *nrp, int *ncp) {
|
||||
FILE *fp_read;
|
||||
|
||||
fp_read = fopen(FILENAME, "r");
|
||||
|
||||
if (fp_read == NULL)
|
||||
{
|
||||
printf("Errore nell'apertura del file\n");
|
||||
return;
|
||||
}
|
||||
|
||||
fscanf(fp_read, "%d %d\n", nrp, ncp);
|
||||
|
||||
// Controlla dimensione matrice
|
||||
if (*nrp < 0 || *ncp < 0 || *nrp > maxR || *ncp > NC) {
|
||||
printf("Dimensione della matrice non valida\n");
|
||||
fclose(fp_read);
|
||||
return;
|
||||
}
|
||||
|
||||
// Leggi matrice
|
||||
for (int i = 0; i < *nrp; i++) {
|
||||
for (int j = 0; j < *ncp; j++) {
|
||||
fscanf(fp_read, "%d ", &mat[i][j]);
|
||||
}
|
||||
}
|
||||
|
||||
fclose(fp_read);
|
||||
}
|
||||
|
||||
int riconosciRegione(int mat[][NC],int nr,int nc,int r,int c,int *b,int *h) {
|
||||
int x, y;
|
||||
|
||||
// controlla se è un vertice
|
||||
if (r > 0 && mat[r-1][c] == 1 || c > 0 && mat[r][c-1] == 1) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
// misura estensione orizzontale
|
||||
for (x = r; x < nr; x++) {
|
||||
if (mat[x][c] != 1) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
// misura estensione verticale
|
||||
for (y = c; y < nc; y++) {
|
||||
if (mat[r][y] != 1) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
// calcola base ed altezza
|
||||
*h = x-r;
|
||||
*b = y-c;
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
int main() {
|
||||
int M[NR][NC];
|
||||
int nr, nc, b, h;
|
||||
|
||||
struct regione H, B, A;
|
||||
|
||||
int maxH = 0, maxB = 0, maxA = 0;
|
||||
|
||||
leggiMatrice(M,NR,&nr,&nc);
|
||||
|
||||
for (int r = 0; r < nr; r++){
|
||||
for (int c = 0; c < nc; c++){
|
||||
if (riconosciRegione(M,nr,nc,r,c,&b,&h)) {
|
||||
if (h > maxH) {
|
||||
maxH = h;
|
||||
H.x = r;
|
||||
H.y = c;
|
||||
H.b = b;
|
||||
H.h = h;
|
||||
}
|
||||
|
||||
if (b > maxB) {
|
||||
maxB = b;
|
||||
B.x = r;
|
||||
B.y = c;
|
||||
B.b = b;
|
||||
B.h = h;
|
||||
}
|
||||
|
||||
if (h*b > maxA) {
|
||||
maxA = h*b;
|
||||
A.x = r;
|
||||
A.y = c;
|
||||
A.b = b;
|
||||
A.h = h;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
printf("Max altezza: estremo=(%d,%d), altezza=%d, larghezza=%d, area=%d\n", H.x, H.y, H.h, H.b, H.h * H.b);
|
||||
printf("Max larghezza: estremo=(%d,%d), altezza=%d, larghezza=%d, area=%d\n", B.x, B.y, B.h, B.b, B.h * B.b);
|
||||
printf("Max area: estremo=(%d,%d), altezza=%d, larghezza=%d, area=%d\n", A.x, A.y, A.h, A.b, A.h * A.b);
|
||||
return 0;
|
||||
}
|
||||
6
Laboratorio 8/mappa.txt
Normal file
6
Laboratorio 8/mappa.txt
Normal file
@@ -0,0 +1,6 @@
|
||||
5 6
|
||||
1 1 0 0 0 0
|
||||
0 0 1 1 0 0
|
||||
0 0 1 1 0 1
|
||||
0 0 0 0 0 1
|
||||
1 0 1 0 0 1
|
||||
43
TemiEsame/campionato.c
Normal file
43
TemiEsame/campionato.c
Normal file
@@ -0,0 +1,43 @@
|
||||
#include <string.h>
|
||||
#include <stdio.h>
|
||||
#define MAXN 10
|
||||
#define MAXM 10
|
||||
|
||||
int indMax(int ranking[MAXN], int n) {
|
||||
int ind = 0, max = ranking[0];
|
||||
|
||||
for (int i = 1; i < n; i++) {
|
||||
if (max < ranking[i]) {
|
||||
ind = i;
|
||||
max = ranking[i];
|
||||
}
|
||||
}
|
||||
|
||||
return ind;
|
||||
}
|
||||
|
||||
void displRanking(int C[MAXN][MAXM], int n, int m) {
|
||||
int ranking[MAXM];
|
||||
|
||||
puts("la squadra capolista in ognuna delle nelle 3 giornate è:");
|
||||
|
||||
for (int i = 0; i < n; i++) {
|
||||
ranking[i] = 0;
|
||||
}
|
||||
|
||||
for (int j = 0; j < m; j++) {
|
||||
for (int i = 0; i < n; i++) {
|
||||
ranking[i] += C[i][j];
|
||||
}
|
||||
|
||||
printf(" %d", indMax(ranking, n));
|
||||
}
|
||||
putc('\n', stdout);
|
||||
}
|
||||
|
||||
int main(){
|
||||
int arr[MAXN][MAXM] = {{3,1,0},{0,1,1},{1,1,1},{1,1,3}};
|
||||
displRanking(arr, 4, 3);
|
||||
return 0;
|
||||
}
|
||||
|
||||
2
TemiEsame/carte.txt
Normal file
2
TemiEsame/carte.txt
Normal file
@@ -0,0 +1,2 @@
|
||||
1 2 4 4
|
||||
3 3 5 8
|
||||
38
TemiEsame/charErase.c
Normal file
38
TemiEsame/charErase.c
Normal file
@@ -0,0 +1,38 @@
|
||||
#include <string.h>
|
||||
#include <stdio.h>
|
||||
|
||||
int charErase (char str[], int pos[]) {
|
||||
int l = strlen(str);
|
||||
int * atp = pos;
|
||||
int steps = 0;
|
||||
|
||||
// segno con -1 i caratteri da eliminare
|
||||
while (*atp != -1) {
|
||||
if (*atp < l)
|
||||
str[*atp] = -1; // nessun carattere ascii ha codice -1, è una flag valida
|
||||
|
||||
atp++;
|
||||
}
|
||||
|
||||
for (int i = 0; i < l; i++) {
|
||||
while (str[i + steps] == -1) {
|
||||
steps++;
|
||||
|
||||
if (i + steps >= l)
|
||||
break;
|
||||
}
|
||||
|
||||
str[i] = str[i + steps];
|
||||
}
|
||||
|
||||
str[l-steps] = 0;
|
||||
return steps;
|
||||
}
|
||||
|
||||
int main(){
|
||||
char sus[] = "ThisIsAString";
|
||||
int arr[] = {7, 4, 2, 0, 11, -1};
|
||||
printf("%d",charErase(sus, arr));
|
||||
puts(sus);
|
||||
return 0;
|
||||
}
|
||||
26
TemiEsame/conta.c
Normal file
26
TemiEsame/conta.c
Normal file
@@ -0,0 +1,26 @@
|
||||
#include <string.h>
|
||||
#include <stdio.h>
|
||||
|
||||
int conta(char *parole[], int nparole, char *cerca) {
|
||||
int s = 0;
|
||||
int l = strlen(cerca);
|
||||
for (int i = 0; i < nparole; i++) {
|
||||
char * prt = parole[i];
|
||||
do {
|
||||
prt = strstr(prt, cerca);
|
||||
|
||||
if (prt != NULL) {
|
||||
prt += l;
|
||||
s++;
|
||||
}
|
||||
|
||||
} while (prt != NULL);
|
||||
}
|
||||
|
||||
return s;
|
||||
}
|
||||
|
||||
int main(int argc, char ** argv) {
|
||||
printf("%d", conta(argv, argc-1, argv[argc-1]));
|
||||
return 0;
|
||||
}
|
||||
40
TemiEsame/countAndPrint.c
Normal file
40
TemiEsame/countAndPrint.c
Normal file
@@ -0,0 +1,40 @@
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
#include <ctype.h>
|
||||
|
||||
|
||||
int isVocal(char c) {
|
||||
char * vowels = "aeiou";
|
||||
|
||||
c = tolower(c);
|
||||
return strchr(vowels, c) != NULL;
|
||||
}
|
||||
|
||||
void countAndPrint(char str[], int n) {
|
||||
int l = strlen(str), v, s = 0;
|
||||
|
||||
for (int i = 0; i < l - n; i++) {
|
||||
v = 0;
|
||||
for (int j = i; j < i + n; j++) {
|
||||
if (isVocal(str[j])) {
|
||||
v++;
|
||||
}
|
||||
}
|
||||
|
||||
if (v == 2) {
|
||||
s++;
|
||||
for (int j = i; j < i + n; j++)
|
||||
putchar(str[j]);
|
||||
|
||||
putchar('\n');
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
printf("%d", s);
|
||||
}
|
||||
|
||||
int main() {
|
||||
countAndPrint("forExample",4);
|
||||
return 0;
|
||||
}
|
||||
46
TemiEsame/matriceRowMajor.c
Normal file
46
TemiEsame/matriceRowMajor.c
Normal file
@@ -0,0 +1,46 @@
|
||||
#include <string.h>
|
||||
#include <stdio.h>
|
||||
#define MAXR 10
|
||||
#define MAXC 10
|
||||
|
||||
int buildMatrix(int V[], int N, int M[MAXR][MAXC], int nr, int nc) {
|
||||
int p = 0, x, y;
|
||||
|
||||
if (N % 2 == 1) {
|
||||
return 1;
|
||||
}
|
||||
|
||||
for (int i = 0; i < N; i += 2) {
|
||||
for (int j = 0; j < (V[i+1]); j++) {
|
||||
x = p / nc;
|
||||
y = p % nc;
|
||||
|
||||
if (x >= nr) {
|
||||
return 1;
|
||||
}
|
||||
|
||||
if (y == 0) {
|
||||
putchar('\n');
|
||||
}
|
||||
|
||||
M[x][y] = V[i];
|
||||
printf("%d\t", V[i]);
|
||||
p++;
|
||||
}
|
||||
}
|
||||
putchar('\n');
|
||||
|
||||
p--;
|
||||
if (p / nc != (nr - 1) || p % nc != (nc - 1)) {
|
||||
return 1;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
int main(){
|
||||
int arr[MAXR][MAXC];
|
||||
int vec[] = {1, 2, 17, 2, 3, 1, 8, 4, 6, 1, 7, 3, 5, 2};
|
||||
printf("%d", buildMatrix(vec, 14, arr, 3, 5));
|
||||
return 0;
|
||||
}
|
||||
36
TemiEsame/maxOdd.c
Normal file
36
TemiEsame/maxOdd.c
Normal file
@@ -0,0 +1,36 @@
|
||||
#include <string.h>
|
||||
#include <stdio.h>
|
||||
|
||||
void maxOdd(int v[], int N) {
|
||||
int max = 0, li = 0;
|
||||
|
||||
for (int i = 0; i <= N; i++) {
|
||||
if (i == N || v[i] % 2 == 0) {
|
||||
if (i - li > max) {
|
||||
max = i - li;
|
||||
}
|
||||
li = i+1;
|
||||
}
|
||||
}
|
||||
|
||||
li = 0;
|
||||
|
||||
for (int i = 0; i <= N; i++) {
|
||||
if (i == N || v[i] % 2 == 0) {
|
||||
if (i - li == max) {
|
||||
for (int j = li; j < i; j++){
|
||||
printf("%i", v[j]);
|
||||
}
|
||||
puts("");
|
||||
}
|
||||
li = i+1;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
int main(){
|
||||
int arr[] = {1, 3, 7, 1, 0, 1, 9, 3, 1, 0};
|
||||
maxOdd(arr, 10);
|
||||
return 0;
|
||||
}
|
||||
|
||||
46
TemiEsame/overslapping.c
Normal file
46
TemiEsame/overslapping.c
Normal file
@@ -0,0 +1,46 @@
|
||||
#include <string.h>
|
||||
#include <stdio.h>
|
||||
#define MAXN 10
|
||||
|
||||
int areaTot(FILE *fp) {
|
||||
unsigned int carte[MAXN][MAXN];
|
||||
unsigned int lx, ly, rx, ry, somma = 0;
|
||||
|
||||
for (int i = 0; i < MAXN; i++) {
|
||||
for (int j = 0; j < MAXN; j++) {
|
||||
carte[i][j] = 0;
|
||||
}
|
||||
}
|
||||
|
||||
while (!feof(fp)) {
|
||||
if (fscanf(fp, "%u %u %u %u ", &lx, &ly, &rx, &ry) != 4) {
|
||||
return -1;
|
||||
}
|
||||
|
||||
if (lx >= MAXN || ly >= MAXN || rx >= MAXN || ry >= MAXN) {
|
||||
return -1;
|
||||
}
|
||||
|
||||
for (int i = lx; i < rx; i++) {
|
||||
for (int j = ly; j < ry; j++) {
|
||||
carte[i][j] = 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
for (int i = 0; i < MAXN; i++) {
|
||||
for (int j = 0; j < MAXN; j++) {
|
||||
somma += carte[i][j];
|
||||
}
|
||||
}
|
||||
|
||||
return somma;
|
||||
}
|
||||
|
||||
int main() {
|
||||
FILE * fin;
|
||||
fin = fopen("./carte.txt", "r");
|
||||
printf("%d", areaTot(fin));
|
||||
fclose(fin);
|
||||
return 0;
|
||||
}
|
||||
26
TemiEsame/prodCartOrd.c
Normal file
26
TemiEsame/prodCartOrd.c
Normal file
@@ -0,0 +1,26 @@
|
||||
#include <string.h>
|
||||
#include <stdio.h>
|
||||
|
||||
void insertionSort(int *v1, int d1) {
|
||||
int t = 0;
|
||||
|
||||
for (int i = 1; i < d1; i++) {
|
||||
t = v1[i];
|
||||
|
||||
int j = i -1;
|
||||
|
||||
while (j >= 0 && v1[j]>t) {
|
||||
v1[j+1] = v1[j];
|
||||
j--;
|
||||
}
|
||||
|
||||
v1[j+1] = t;
|
||||
}
|
||||
}
|
||||
|
||||
void prodCartOrd(int *v1, int d1, int *v2, int d2) {
|
||||
insertionSort(v1, d1);
|
||||
insertionSort(v2, d2);
|
||||
|
||||
|
||||
}
|
||||
19
TemiEsame/sommaCornici.c
Normal file
19
TemiEsame/sommaCornici.c
Normal file
@@ -0,0 +1,19 @@
|
||||
#include <string.h>
|
||||
#include <stdio.h>
|
||||
#define MAXN 10
|
||||
|
||||
int sommaCornici(int mat[MAXN][MAXN], int N, int vet[]) {
|
||||
int c = N / 2;
|
||||
|
||||
for (int i = 0; i < c; i++) {
|
||||
vet[i] = mat[i][i] + mat[N-i-1][i] + mat[N-i-1][N-i-1] + mat[N-i-1][N-i-1];
|
||||
|
||||
for (int j = i; j < N-i-1; j++) {
|
||||
vet[i] += mat[i][j] + mat[j][i] + mat[N-i-1][j] + mat[j][N-i-1];
|
||||
}
|
||||
}
|
||||
|
||||
if (N % 2 == 1) {
|
||||
vet[c+1] = mat[c][c];
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user