Segmentation Fault на сайте codeeval - C (СИ)
Формулировка задачи:
#include <stdio.h> int main(int argc, const char * argv[]) { // открываем файлы FILE *input = fopen("input.csv", "r"); FILE *output = fopen("out.txt", "w"); int fibo[20];//в массиве будет только 20 чисел Фибоначчи int n; // это число будет означать элемент в массиве fibo[0] = 0; //для удобства рассчётов вводим первый и второй элемент чисел Фибоначчи fibo[1] = 1; for(n=2; n<=20; n++){ //заполняем массив числами fibo[n] = fibo[n-1]+fibo[n-2]; } while(!feof(input)){ // загружаем в новый файл построчно до скончания файла fscanf(input, "%i\n", &n); fprintf(output, "%i\n", fibo[n]); } fclose(input); fclose(output); return 0; }
Решение задачи: «Segmentation Fault на сайте codeeval»
#include <stdio.h> int main(int argc, const char * argv[]) { FILE *input, *output; // открываем файлы if (argc > 1) input = fopen(argv[1], "r"); else input = freopen(NULL, "r", stdin); if (argc > 2) output = fopen(argv[2], "w"); else output = freopen(NULL, "w", stdout); int fibo[20];//в массиве будет только 20 чисел Фибоначчи int n; // это число будет означать элемент в массиве fibo[0] = 0; //для удобства рассчётов вводим первый и второй элемент чисел Фибоначчи fibo[1] = 1; for(n=2; n<20; n++){ //заполняем массив числами fibo[n] = fibo[n-1]+fibo[n-2]; } while(fscanf(input, "%i\n", &n) == 1) { if (n >= 0 && n < 20) fprintf(output, "%i\n", fibo[n]); else fprintf(output, "-1\n"); } fclose(input); fclose(output); return 0; }
Объяснение кода листинга программы
В этом коде на языке C считываются два аргумента командной строки, которые являются именами файлов. Первый файл открывается для чтения, второй — для записи. Затем определяется массив fibo размером 20 для хранения чисел Фибоначчи. Изначально в массиве уже содержатся первые два числа Фибоначчи (0 и 1), чтобы облегчить расчеты. Затем в цикле заполняется остальная часть массива числами Фибоначчи. Далее, пока вводимом файле есть данные, считывается число N (которое должно быть в пределах от 0 до 19, включительно). Если число в пределах допустимого диапазона, то в выходной файл записывается соответствующее число Фибоначчи. Если число выходит за пределы допустимого диапазона, то в выходной файл записывается -1. В конце программы файлы закрываются, и возвращается 0, что означает успешное выполнение программы.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д