Esercizi sul C

16 February 2017

Views: 214

Es Croce 2-2-17
#include <stdlib.h>
#include <stdio.h>

void stampa_croce(FILE *f, size_t dim)
{
if (dim == 0)
return;
int c = 0;
int n = dim * 2 - 1;
for (int i = 0; i < dim * 2; i++) {
for (int j = 0; j < dim * 2; j++) {
if (j == c) {
fprintf(f, "%c", '');
}
else if (j == n) {
fprintf(f, "%c", '/');
}
else {
fprintf(f, "%c", ' ');
}

}
fprintf(f, "
");
c++;
n--;
}
}

Es Rational 2-2-17
rational.h
#ifndef RATIONAL_H
#define RATIONAL_H
#define _CRT_SECURE_NO_WARNINGS

#include <stdlib.h>
#include <stdio.h>

struct rational {
int num;
unsigned int den;
};

extern struct rational *rational_read(const char *filename, size_t *size);

#endif // !RATIONAL_H

rational.c
#include "rational.h"
#define ever (;;)

struct rational *rational_read(const char *filename, size_t *size)
{
FILE *f = fopen(filename, "rt");
if (f == NULL) { *size = 0; return NULL; }

struct rational *ris = NULL;
size_t cont = 0;

for ever
{
int tmpnum, ret;
unsigned int tmpden;

if ((ret = fscanf(f, "%i /%u", &tmpnum, &tmpden)) == EOF) break;
if (ret != 2) { *size = cont; return ris; }

ris = realloc(ris, (++cont) * sizeof(struct rational));
ris[cont - 1].num = tmpnum;
ris[cont - 1].den = tmpden;
}

*size = cont;
return ris;
}

ES Palindroma 2-2 17
palindroma.c
#include "palindroma.h"

bool palindroma(const char *str)
{
int n = strlen(str);
if (n == 1)
return true;
if (str == NULL)
return false;
if (str[0] == 0)
return false;


//str[i] è uguale a *(str + i)

/*
for (int i = 0; i < l;i++) {
if (str[i] != str[n - 1])
return false;

n--;
}
*/
int i = 0;
while (i <= n) {
if (str[i] != str[n - 1])
return false;
n--;
i++;
}
return true;
}

palindroma.h
#if !defined PALINDROMA_H
#define PALINDROMA_H
#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
#include <string.h>

extern bool palindroma(const char *str);
#endif

Share