Записать в файл массив 10 строк, содержащих даты, увеличивающиеся на 1 день - C (СИ)
Формулировка задачи:
В общем нужно :
1. Создать пустой текстовый файл, записать в него массив 10 строк, содержащих даты, увеличивающиеся на 1 день, начиная с сегодняшнего числа.
Помогите пожалуйста.
выдаёт ошибку
вот мой код
#include <stdio.h> int main() { int a[11] = { 1, 2,3, 4, 5, 6, 7,8,9,10}; int i; int size; size = sizeof(a) / sizeof(int); FILE*output = fopen("C:\Users\Zeus\Desktop\file", "w"); for (i = 0; i < size; i++) fprintf(output, "%d", a[i]); fclose(output); }
В Dev C++ компилит без проблем.
Визуалка не хочет.
В чём проблема?
Решение задачи: «Записать в файл массив 10 строк, содержащих даты, увеличивающиеся на 1 день»
textual
Листинг программы
#define _CRT_SECURE_NO_WARNINGS #include <stdio.h> int main() { // 1 2 3 4 5 6 7 8 9 10 11 12 int month[] = {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 }; int i = 1, m, d, y, n, d1, m1, y1, leap = 0; int size; unsigned int data=0; FILE *output = fopen("1.txt", "w"); printf("Day: "); scanf("%d", &d); printf("Month: "); scanf("%d", &m); printf("Year: "); scanf("%d", &y); printf("N: "); scanf("%d", &n); leap = (y % 4 == 0 && y % 100 != 0 || y % 400 == 0); while (i <= n) { if (d + 1 > month[m]+(leap && m==2)) { if (m + 1 > 12) { m = 1; y = y + 1; leap = ( y % 4 == 0 && y % 100 != 0 || y % 400 == 0); } else { m = m + 1; y = y; } d = 1; } else { d = d + 1; } printf("%02d.%02d.%4d\n", d, m, y); fprintf(output, "%02d.%02d.%4d\n", d, m, y); ++i; } fclose(output); return 0; }
Объяснение кода листинга программы
- Объявлены массив
month
и переменныеi
,m
,d
,y
,n
,d1
,m1
,y1
,leap
со значениями, соответственно:- month: {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 }
- i: 1
- m: 0
- d: 1
- y: 0
- n: 0
- d1: 0
- m1: 0
- y1: 0
- leap: 0
- Открыт файл
1.txt
для записи (режимw
). - Пользователю предлагается ввести день, месяц и год.
- Вычисляется значение переменной
leap
в зависимости от года:- Если год делится на 4 и не делится на 100 (или делится на 400), то это високосный год, и значение
leap
будет 1. - В противном случае, значение
leap
будет 0.
- Если год делится на 4 и не делится на 100 (или делится на 400), то это високосный год, и значение
- Запускается цикл, который будет выполняться столько раз, сколько указано пользователем (n).
- Внутри цикла проверяется, не превышает ли текущая дата (d + 1) максимальный количество дней в месяце (month[m]) с учетом того, что если месяц равен 2 и год високосный, то добавляется один день.
- Если текущая дата превышает максимальное количество дней в месяце, то выполняется блок кода, который переходит к следующему месяцу (m + 1) и году (y + 1), и снова проверяет количество дней.
- Если текущая дата не превышает максимальное количество дней в месяце, то просто увеличивается значение переменной
d
на 1. - В каждой итерации цикла выводится текущая дата в формате
d.m.yyyy
на экран и записывается в файл1.txt
. - Увеличивается значение переменной
i
на 1. - Цикл завершается, когда значение переменной
i
становится равным n. - Файл
1.txt
закрывается. - Программа завершается с кодом 0, что означает успешное выполнение.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д