Discussione dell'esercizio 5 dell'
Esempio 1.
#include <stdio.h>
void fcutlines(char *fname1, char *fname2, int i, int n) {
FILE *f1 = fopen(fname1, "r");
if (f1 == NULL) return;
FILE *f2 = fopen(fname2, "w");
if (f2 == NULL) {
fclose(f1);
return;
}
char line[101];
int j = 0;
while (fgets(line, 101, f1) != NULL) {
if (j < i || j >= i + n)
fprintf(f2, "%s", line);
j++;
}
fclose(f1);
fclose(f2);
}
Discussione dell'esercizio 6 dell'
Esempio 1.
#include <stdlib.h>
void compact_ms(MSet M) {
if (M == NULL)
return;
MElem *e = M;
while (e->next != NULL) {
MElem *p = e;
while (p->next != NULL) {
MElem *d = p->next;
if (d->val == e->val) {
e->count += d->count;
p->next = d->next;
free(d);
} else
p = p->next;
}
e = e->next;
}
}
Discussione dell'esercizio 4 dell'
Esempio 2.
#include <stdlib.h>
#include <string.h>
List copytail(List L, int k) {
if (L == NULL) return L;
Elem *copy = malloc(sizeof(Elem));
Elem *last = L;
while (last->next != NULL)
last = last->next;
copy->str = malloc((strlen(last->str) + 1)*sizeof(char));
strcpy(copy->str, last->str);
Elem **pre = &L;
while (k > 0 && *pre != NULL) {
pre = &((*pre)->next);
k--;
}
copy->next = *pre;
*pre = copy;
return L;
}
Discussione dell'esercizio 5 dell'
Esempio 2.
#include <stdio.h>
void insrec(char *fname1, char *fname2, Record rec) {
FILE *f1 = fopen(fname1, "rb");
if (f1 == NULL) return;
FILE *f2 = fopen(fname2, "wb");
if (f2 == NULL) {
fclose(f1);
return;
}
int ins = 0;
Record r;
while (fread(&r, sizeof(Record), 1, f1) == 1) {
if (!ins && r.value > rec.value) {
fwrite(&rec, sizeof(Record), 1, f2);
ins = 1;
}
fwrite(&r, sizeof(Record), 1, f2);
}
if (!ins)
fwrite(&rec, sizeof(Record), 1, f2);
fclose(f1);
fclose(f2);
}
Discussione dell'esercizio 3 dell'
Esempio 1.
#include <stdlib.h>
int *eqrowcol(int n, char M[n][n], int *cnt) {
int *eqA = NULL, i;
*cnt = 0;
for (i = 0 ; i < n ; i++) {
int j, equal = 1;
for (j = 0 ; j < n && equal ; j++)
if (M[i][j] != M[j][i]) equal = 0;
if (equal) {
eqA = realloc(eqA, (*cnt + 1)*sizeof(int));
eqA[*cnt] = i;
(*cnt)++;
}
}
return eqA;
}
Ulteriori esercizi
Esempio 3.