Создать динамический массив. Заполнить его числами от 1 до n и записать его в файл. - C (СИ)

Узнай цену своей работы

Формулировка задачи:

создать динамический массив. Заполнить его числами от 1 до n и записать его в файл.

Решение задачи: «Создать динамический массив. Заполнить его числами от 1 до n и записать его в файл.»

textual
Листинг программы
#include <stdio.h> // подключаем библиотеку ввода вывода
#include <stdlib.h>
#include <malloc.h> // библиотека для динамического выделения памяти
 
int main()
{
int *p;  // указатель на массив
int n, a, b, i, r_write; // размер массива, заменяемый элемент, заменяющий элемент, идентификатор успешного открытия файла.
system("chcp 1251"); // поддержка русского языка
system("cls"); // очистка экрана
printf("Введите размер массива: ");
scanf_s("%d", &n); // ввод размерности массива
if (n <= 0)
{
printf("ошибка, массив должен состоять хотя бы из одного элемента");
return 0; //выход из программы
}
p = (int*)malloc(n * sizeof(int)); // выделение памяти
for (i = 0; i<n; i++)
p[i] = i + 1; //заполнение массива
printf("введите заменяемый элемент: ");
scanf_s("%d", &a); // ввод заменяемого элемента
if (a <= 0 || a > n)
{
printf("ошибка, заменяемый элемент должен быть в границах массива");
free(p); // освобождение памяти
return 0; //выход из программы
}
printf("введите заменяющий элемент: ");
scanf_s("%d", &b); // ввод заменяющего элемента
p[a - 1] = b; //замена элемента
FILE *output; // идентификатор файла записи
char output_name[] = "d:\\test.txt"; // путь к файлу записи, если не существует, будет создан. 
r_write = fopen_s(&output, output_name, "w"); // открываем выходной файл
if (r_write != 0) // выходной файл не создался
{
printf("не удалось открыть файл");
free(p); // освобождение памяти
return 0; //выход из программы
}
for (i = 0; i <n; i++)
fprintf(output, "%d", p[i]); // взапись массива в файл
fclose(output); // закрываем файл
free(p); // освобождение памяти
return 0; //выход из программы
 
}

Объяснение кода листинга программы

В этом коде:

  1. #include , #include , #include - подключаем необходимые библиотеки для работы с вводом/выводом, стандартной библиотекой и динамическим выделением памяти.
  2. int main() - функция main(), в которой и происходит весь код программы.
  3. system(chcp 1251); - переводим консоль на русский язык.
  4. system(cls); - очищаем экран перед выводом информации.
  5. printf(Введите размер массива:);, scanf_s(%d, &n); - запрашиваем у пользователя размер будущего массива и сохраняем его в переменной n.
  6. p = (int)malloc(n sizeof(int)); - выделяем память под массив p динамически.
  7. for (i = 0; i<n; i++) - начинаем цикл заполнения массива.
  8. p[i] = i + 1; - заполняем массив значениями от 1 до n.
  9. printf(введите заменяемый элемент:);, scanf_s(%d, &a); - запрашиваем у пользователя заменяемый элемент и сохраняем его в переменной a.
  10. if (a <= 0 || a > n) - проверяем, чтобы заменяемый элемент был в границах массива.
  11. printf(введите заменяющий элемент:);, scanf_s(%d, &b); - запрашиваем у пользователя заменяющий элемент и сохраняем его в переменной b.
  12. p[a - 1] = b; - заменяем элемент массива с индексом a-1 на значение b.
  13. *FILE output;, char output_name[] = d:\\test.txt;** - объявляем переменные для работы с файлами.
  14. r_write = fopen_s(&output, output_name, w); - пытаемся открыть файл для записи и сохраняем результат в переменной r_write.
  15. if (r_write != 0) - если файл не удалось открыть, выходим из программы.
  16. for (i = 0; i <n; i++) - начинаем цикл записи массива в файл.
  17. fprintf(output, %d, p[i]); - записываем в файл значение i-го элемента массива.
  18. fclose(output); - закрываем файл после записи.
  19. free(p); - освобождаем память, выделенную под массив.
  20. return 0; - выход из программы.

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

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