Escolar Documentos
Profissional Documentos
Cultura Documentos
c
/* poli_rar.c, Created on: 02.02.2012, Author: Florin Pop */
#include <stdio.h>
#include <stdlib.h>
#include <stdarg.h>
typedef struct {
double c;
int ex;
} termen;
typedef struct {
int nn;
int grd;
termen *t;
} polinom_rar;
/**
* Functiile 'newPoly' si 'init' au rolul de a initializa fisierul de intrare
* pentru testarea programului. Ele nu fac parte din solutia problemei.
*/
polinom_rar* newPoly(int ntn, int g, ...){
va_list ap;
int i;
polinom_rar *p = (polinom_rar *)malloc(sizeof(polinom_rar));
p->nn = ntn;
p->grd = g;
p->t = (termen *)malloc(ntn * sizeof(termen));
va_start(ap, g);
for(i = 0; i < ntn; ++i) {
p->t[i].c = va_arg(ap, double);
p->t[i].ex = va_arg(ap, int);
}
va_end(ap);
return p;
}
void init(char *filename){
FILE *f;
int i;
polinom_rar *p[8] = {
newPoly(3, 2012, 1.0, 2012, -2.0, 1, 2013.0, 0),
newPoly(2, 10, 1.0, 10, 1.0, 1),
newPoly(5, 4, 1.0, 4, 1.0, 3, 1.0, 2, 1.0, 1, 1.0, 0),
newPoly(4, 4, 1.0, 4, 1.0, 3, 1.0, 2, 1.0, 1),
newPoly(3, 4, 1.0, 4, 1.0, 3, 1.0, 2),
newPoly(2, 4, 1.0, 4, 1.0, 3),
newPoly(1, 4, 1.0, 4),
newPoly(11, 9, 1.0, 10, 1.0, 9, 1.0, 8, 1.0, 7, 1.0, 6,
1.0, 5, 1.0, 4, 1.0, 3, 1.0, 2, 1.0, 1, 1.0, 0)
};
if( (f = fopen(filename, "wb")) == NULL ) {
fprintf(stderr, "Error: creating file.\n");
return;
}
for(i=0; i<8; i++){
fwrite(&(p[i]->nn), sizeof(int), 1, f);
fwrite(&(p[i]->grd), sizeof(int), 1, f);
fwrite(p[i]->t, sizeof(termen), p[i]->nn, f);
}
fclose(f);
}
Page 1
poli_rar.c
Page 2