Си, работа со списками
Помогите пожалуйста, мне необходимо выполнить программу при помощи использования списков. Подскажите, пожалуйста, почему выскакивает invalid operands of types 'float' and 'int' to binary 'operator%'
#include <stdio.h>
#include<conio.h>
#include<math.h>
#include<stdlib.h>
FILE * f = fopen("f_1.txt", "a+"), * f1 = fopen("f_3.txt", "w+");
struct nod {
float info;
nod * urm;
};
nod * prim, * ultim;
void adaugs(int x) {
nod * nou = new nod;
nou - > info = x;
nou - > urm = NULL;
if (prim == NULL) prim = nou;
else ultim - > urm = nou;
ultim = nou;
}
void afis(int n) {
nod * p = prim;
while (p) {
printf("%3f", p - > info);
if (n) fprintf(f1, "%3f", p - > info);
p = p - > urm;
}
}
void c1() {
nod * p;
p = prim;
while (p) {
if (p - > info % 4 == 0) {
p - > info = 1;
printf("\n%f", p - > info);
} else {
printf("\n%f", p - > info);
}
p = p - > urm;
}
}
void c2(int m1) {
nod * p;
p = prim;
while (p) {
if (p - > info < m1) p - > info = p - > info + 5;
printf("\n%f", p - > info);
p = p - > urm;
}
}
void c3() {
nod * p;
p = prim;
while (p) {
if (fabs((p - > info) % 3 == 0)) p - > info = 8;
printf("\n%f", p - > info);
p = p - > urm;
}
}
int main() {
int p1, x, c, m1;
int l1, l2;
prim = NULL;
ultim = NULL;
rewind(f);
while (!feof(f)) {
fscanf(f, "%f", & x);
printf("%3f", x);
adaugs(x);
}
printf("\nList of numbers: \n");
afis(0);
l1:
printf("\n1 - 1 uslovie esli deliatsi na 4 zameniti na 01\n2 - 2 esli menishe m pribaviti 5\n3 - 3 esli po modyliu delitsa na 3 zameniti na 8 \n4 - Vihod \n--> ");
int r;
scanf("%i", & r);
switch (r) {
case 1:
c1();
break;
case 2:
printf("\nEnter m: ");
scanf("%i", & m1);
c2(m1);
break;
case 3:
c3();
break;
case 4:
goto l2;
default:
printf("\nIt's wrong\n");
system("pause");
goto l1;
}
l2:
if (r != 4)
puts("\nDo you want to try again?(y/n)");
char v = getche();
if (v == 'y') goto l1;
}