Сформировать массив в котором каждому элементу будет присвоено значение справа стоящего с ним - 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.

  1. #include - библиотека для работы с консолью, в частности, с функцией getch().
  2. #include - библиотека для работы с вводом/выводом, в частности, с функциями printf() и fprintf().
  3. #include - библиотека для работы с памятью, в частности, с функцией malloc().
  4. #define ERR_OPEN_FILE 1 - определение ошибки при открытии файла.
  5. #define ERR_USE 2 - определение ошибки использования программы.
  6. *int main(int argc, char argv[])** - функция main(), то есть точка входа в программу.
  7. int a[10], i; - объявление массива a размером 10 и переменной i.
  8. int b[10]; - объявление массива b размером 10.
  9. FILE f1, f2; - объявление указателей на файлы f1 и f2.
  10. if(argc != 2){ - проверка, что аргументов на вход поступило ровно 2.
  11. puts(usage: <name_prog> <name_input_file>); - вывод сообщения об ошибке.
  12. exit(ERR_USE); - выход из программы с ошибкой.
  13. f1 = fopen(argv[1],r); - попытка открытия файла, имя которого передано в качестве аргумента.
  14. if(!f1){ - проверка, открылся ли файл.
  15. puts(error open input file.); - вывод сообщения об ошибке.
  16. exit(ERR_OPEN_FILE); - выход из программы с ошибкой.
  17. for (i = 0; i < 10; i++) - цикл по всем элементам массива a.
  18. fscanf(f1, %d, &a[i]); - чтение числа из файла и запись его в массив a.
  19. fclose(f1); - закрытие файла f1.
  20. f2 = fopen(w2.dat,w); - попытка открытия файла w2.dat для записи.
  21. if(!f2){ - проверка, открылся ли файл.
  22. puts(error open input file.); - вывод сообщения об ошибке.
  23. exit(ERR_OPEN_FILE); - выход из программы с ошибкой.
  24. fprintf(f2, smena elementov\n); - запись сообщения в файл.
  25. b[9]=a[0]; - присваивание первому элементу массива b значение последнего элемента массива a.
  26. for(i = 0; i < 9; i++){ - цикл по всем элементам массива b, начиная со второго.
  27. b[i] = a[i+1]; - присвоение элементам массива b значений элементов массива a, начиная со второго.
  28. fprintf(f2, %d\n, b[i]); - запись значения элемента массива b в файл.
  29. fprintf(f2, %d\n, b[9]); - запись значения первого элемента массива b в файл.
  30. fclose(f2); - закрытие файла f2.
  31. return 0; - возврат значения 0, что означает успешный конец работы программы.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

15   голосов , оценка 4.467 из 5
Похожие ответы