Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- int poslFib(const char *name, int *res);
- int poslFib(const char *name, int *res)
- {
- FILE*fp; double x, prev1=0,prev2=0; int opr=0;
- if (!(fp = fopen(name, "r")))
- return -1;
- fscanf(fp, "%lf", &prev1);
- if (prev1<=1 && prev1>=1)
- {
- opr=1;
- fscanf(fp, "%lf", &prev2);
- if (feof(fp))
- {
- fclose(fp);
- *res = opr;
- return 0;
- }
- else
- {
- if (prev2<=1 && prev2>=1)
- {
- while (fscanf(fp, "%lf", &x) == 1)
- {
- if (x > prev1 + prev2 || x < prev1 + prev2) opr=0;
- prev1 = prev2;
- prev2 = x;
- }
- }
- else opr=0;
- }
- }
- if (!feof(fp))
- {
- fclose(fp);
- return -2;
- }
- fclose(fp);
- *res = opr;
- return 0;
- }
- int main(void)
- {
- const char *fname = "a.txt";
- int answer; int ret;
- ret = poslFib(fname, &answer);
- if (ret < 0)
- {
- switch (ret)
- {
- case -1:
- printf("Cannot open %s\n", fname);
- break;
- case -2:
- printf("Cannot read %s\n", fname);
- break;
- default:
- printf("Error %d in file %s\n", ret, fname);
- }
- return 1;
- }
- printf("Fib = %d\n", answer);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment