Сформировать массив в котором каждому элементу будет присвоено значение справа стоящего с ним - C (СИ)
Формулировка задачи:
Исправьте пожалуйста программу. Все компилируется хорошо, без ошибок но в файле ww ничего не появляется
В файле w задан массив из десяти элементов в новом файле ww сформировать массив в котором каждому элементу будет присвоено значение справа стоящего с ним. Последнему элементу присвоить значение первого.
#include <conio.h> #include <stdio.h> void main() { int a[10], i; int b[10]; FILE * f1,* f2; f1=fopen("w1.dat","r"); for (i=0; i<10; i++) fscanf(f1,"%d",&a[i]); fclose(f1); f2=fopen("w2.dat","w"); fprintf(f2,"smena elementov\n"); for(i=1;i<9;i++) { b[i]=a[i+1]; } b[10]=a[1]; fprintf(f2,"%d\n",b[i]); }
Решение задачи: «Сформировать массив в котором каждому элементу будет присвоено значение справа стоящего с ним»
textual
Листинг программы
#include <conio.h> #include <stdio.h> #include <stdlib.h> #define ERR_OPEN_FILE 1 #define ERR_USE 2 int main(int argc, char *argv[]) { int a[10], i; int b[10]; FILE * f1,* f2; if(argc != 2){ puts("usage: <name_prog> <name_input_file>"); exit(ERR_USE); } f1 = fopen(argv[1],"r"); if(!f1){ puts("error open input file."); exit(ERR_OPEN_FILE); }; for (i = 0; i < 10; i++) fscanf(f1, "%d", &a[i]); fclose(f1); f2 = fopen("w2.dat","w"); if(!f2){ puts("error open input file."); exit(ERR_OPEN_FILE); }; fprintf(f2, "smena elementov\n"); b[9]=a[0]; for(i = 0; i < 9; i++){ b[i] = a[i+1]; fprintf(f2, "%d\n", b[i]); } fprintf(f2, "%d\n", b[9]); fclose(f2); return 0; }
Объяснение кода листинга программы
В этом коде используется язык программирования C.
- #include
- библиотека для работы с консолью, в частности, с функцией getch(). - #include
- библиотека для работы с вводом/выводом, в частности, с функциями printf() и fprintf(). - #include
- библиотека для работы с памятью, в частности, с функцией malloc(). - #define ERR_OPEN_FILE 1 - определение ошибки при открытии файла.
- #define ERR_USE 2 - определение ошибки использования программы.
- *int main(int argc, char argv[])** - функция main(), то есть точка входа в программу.
- int a[10], i; - объявление массива a размером 10 и переменной i.
- int b[10]; - объявление массива b размером 10.
- FILE f1, f2; - объявление указателей на файлы f1 и f2.
- if(argc != 2){ - проверка, что аргументов на вход поступило ровно 2.
- puts(
usage: <name_prog> <name_input_file>
); - вывод сообщения об ошибке. - exit(ERR_USE); - выход из программы с ошибкой.
- f1 = fopen(argv[1],
r
); - попытка открытия файла, имя которого передано в качестве аргумента. - if(!f1){ - проверка, открылся ли файл.
- puts(
error open input file.
); - вывод сообщения об ошибке. - exit(ERR_OPEN_FILE); - выход из программы с ошибкой.
- for (i = 0; i < 10; i++) - цикл по всем элементам массива a.
- fscanf(f1,
%d
, &a[i]); - чтение числа из файла и запись его в массив a. - fclose(f1); - закрытие файла f1.
- f2 = fopen(
w2.dat
,w
); - попытка открытия файлаw2.dat
для записи. - if(!f2){ - проверка, открылся ли файл.
- puts(
error open input file.
); - вывод сообщения об ошибке. - exit(ERR_OPEN_FILE); - выход из программы с ошибкой.
- fprintf(f2,
smena elementov\n
); - запись сообщения в файл. - b[9]=a[0]; - присваивание первому элементу массива b значение последнего элемента массива a.
- for(i = 0; i < 9; i++){ - цикл по всем элементам массива b, начиная со второго.
- b[i] = a[i+1]; - присвоение элементам массива b значений элементов массива a, начиная со второго.
- fprintf(f2,
%d\n
, b[i]); - запись значения элемента массива b в файл. - fprintf(f2,
%d\n
, b[9]); - запись значения первого элемента массива b в файл. - fclose(f2); - закрытие файла f2.
- return 0; - возврат значения 0, что означает успешный конец работы программы.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д