Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.78/18: Рейтинг темы: голосов - 18, средняя оценка - 4.78
0 / 0 / 0
Регистрация: 01.04.2020
Сообщений: 41

Написать программу, которая по заданному количеству дней, прошедших от начала года, определяет число day и месяц month

01.04.2020, 22:26. Показов 3743. Ответов 20
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Написать программу, которая по заданному количеству дней,
прошедших от начала года, определяет число day и месяц month.
Учесть, что год может быть високосным, т.е. в феврале может быть 29
дней.
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
01.04.2020, 22:26
Ответы с готовыми решениями:

Определить дату (число и месяц) по заданному числу дней прошедших от начала года
Доброго времени суток. Прошу помочь с решением следующего задания. Пожалуйста, предельно просто. Написать программу, которая по...

Напишите программу для подсчета количества полных дней, прошедших с начала года
Напишите программу для подсчета количества полных дней, прошедших с начала года, если сейчас год Y, месяц M, день D (Y, M и D вводятся...

Программа вычисления високосного года, сезона года по месяцу, количеству дней от начала года
добрый вечер, уважаемые программисты! помогите,пожалуйста,разобраться в программе. в программе нужно: 1)вычислять является ли год...

20
0 / 0 / 0
Регистрация: 01.04.2020
Сообщений: 41
02.04.2020, 23:15  [ТС]
Господа, накиньте хотя б алгоритм решения задачи, вообще ничего в голову не приходит
0
 Аватар для analogov net
2531 / 1129 / 494
Регистрация: 17.11.2018
Сообщений: 2,836
03.04.2020, 00:55
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
int DaysInMonth[] = {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
 
void day_and_month( int n, int y, int & d, int & m )
{
    const int leapYear = ( y % 400 == 0 || ( y % 4 == 0 && y % 100 != 0 ) ? 1 : 0 );
 
    DaysInMonth[2] += leapYear;
 
    d = n;
    m = 1;
 
    while( d > DaysInMonth[m] )
        d -= DaysInMonth[m++];
}
 
int main()
{
    int  days, year, day, month;
 
    days = 1;
    year = 2020;
 
    day_and_month( days, year, day, month );
    cout << day << '/' << month  << '/' << year << endl;
 
    return 0;
}
0
0 / 0 / 0
Регистрация: 01.04.2020
Сообщений: 41
03.04.2020, 13:52  [ТС]
analogov net, а можно, пожалуйста, целиком программу?

Добавлено через 1 минуту
analogov net, забыл добавить, в данной задаче нельзя использовать массив (преподаватель добавил позже)
0
 Аватар для analogov net
2531 / 1129 / 494
Регистрация: 17.11.2018
Сообщений: 2,836
03.04.2020, 14:03
Цитата Сообщение от ShadowFox Посмотреть сообщение
а можно, пожалуйста, целиком программу
ShadowFox, добавь ...
C++
1
2
#include <iostream>
using namespace std;
Цитата Сообщение от ShadowFox Посмотреть сообщение
в данной задаче нельзя использовать массив
А что можно?
1
0 / 0 / 0
Регистрация: 01.04.2020
Сообщений: 41
03.04.2020, 14:16  [ТС]
analogov net, насколько я понимаю - циклы, ибо темы "Массив" у нас ещё не было. И, насколько я понимаю, в программе нужно реализовать ввод года и числа дней, которые прошли, а для вывода реализовать в формате день(месяца)/месяц.
0
0 / 0 / 0
Регистрация: 01.04.2020
Сообщений: 41
03.04.2020, 14:17  [ТС]
Вот уточнения от преподавателя:
Миниатюры
Написать программу, которая по заданному количеству дней, прошедших от начала года, определяет число day и месяц month  
0
 Аватар для analogov net
2531 / 1129 / 494
Регистрация: 17.11.2018
Сообщений: 2,836
03.04.2020, 16:31
Цитата Сообщение от ShadowFox Посмотреть сообщение
Вот уточнения от преподавателя:
ShadowFox, но здесь же не сказано, что массивы нельзя использовать.
1
0 / 0 / 0
Регистрация: 01.04.2020
Сообщений: 41
03.04.2020, 16:35  [ТС]
analogov net, исходя из логики, что мы их не проходили - нельзя)
0
 Аватар для analogov net
2531 / 1129 / 494
Регистрация: 17.11.2018
Сообщений: 2,836
03.04.2020, 16:59
Лучший ответ Сообщение было отмечено ShadowFox как решение

Решение

Цитата Сообщение от ShadowFox Посмотреть сообщение
исходя из логики, что мы их не проходили - нельзя
ShadowFox, железная логика...

Добавлено через 21 минуту
ShadowFox, ввод-вывод сам пиши, как тебе нужно...
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
#include <iostream>
 
#define YAN 31
#define FEB 28
#define MAR 31
#define APR 30
#define MAY 31
#define JUN 30
#define JUL 31
#define AUG 31
#define SEP 30
#define OCT 31
#define NOV 30
 
using namespace std;
 
int main()
{
    int  days, year, month = 1;
 
    cout << "year = "; cin >> year;
    cout << "days = "; cin >> days;
 
    int leapYear = ( year % 400 == 0 || ( year % 4 == 0 && year % 100 != 0 ) ? 1 : 0 );
 
    while( 1 )
    {
        if( days <= YAN )                 break;    days -= YAN, month++;
        if( days <= ( FEB + leapYear ) )  break;    days -= ( FEB + leapYear ), month++;
        if( days <= MAR )                 break;    days -= MAR, month++;
        if( days <= APR )                 break;    days -= APR, month++;
        if( days <= MAY )                 break;    days -= MAY, month++;
        if( days <= JUN )                 break;    days -= JUN, month++;
        if( days <= JUL )                 break;    days -= JUL, month++;
        if( days <= AUG )                 break;    days -= AUG, month++;
        if( days <= SEP )                 break;    days -= SEP, month++;
        if( days <= OCT )                 break;    days -= OCT, month++;
        if( days <= NOV )                 break;    days -= NOV, month++;
    }
 
    cout << days << '/' << month << '/' << year << endl;
    return 0;
}
1
0 / 0 / 0
Регистрация: 01.04.2020
Сообщений: 41
03.04.2020, 17:40  [ТС]
analogov net, огромное Вам спасибо, уже неделю ломал голову над этой задачей

Добавлено через 14 минут
analogov net, последняя просьба: если не можно, можете объяснить работу данной программы,что там происходит? Чтобы я не "слился")
0
 Аватар для analogov net
2531 / 1129 / 494
Регистрация: 17.11.2018
Сообщений: 2,836
03.04.2020, 18:34
Цитата Сообщение от ShadowFox Посмотреть сообщение
можете объяснить работу данной программы,что там происходит? Чтобы я не "слился"
ShadowFox, ну, а сам-то как думаешь? Или вообще мыслей нет никаких?
0
0 / 0 / 0
Регистрация: 01.04.2020
Сообщений: 41
03.04.2020, 18:37  [ТС]
analogov net, хм, мне не очень понятны #define и и к FEB+LeapYear, а так, вроде, понятно. Просто только ввели предмет и бах, дистанционка
0
03.04.2020, 18:39

Не по теме:

Цитата Сообщение от ShadowFox Посмотреть сообщение
и бах, дистанционка
Считайте это испытанием на профпригодность :)
Программист не сможет работать полноценно, если не умеет сам извлекать информацию и придумывать решения (потому что не все задачи имеют типовые решения).

0
0 / 0 / 0
Регистрация: 01.04.2020
Сообщений: 41
03.04.2020, 19:30  [ТС]
DrOffset, абсолютно согласен, но к данной задача никак получалось найти решение, но, как говорится, на ошибках учатся

Добавлено через 34 минуты
analogov net, и можно ли обойтись без #define?
0
 Аватар для analogov net
2531 / 1129 / 494
Регистрация: 17.11.2018
Сообщений: 2,836
03.04.2020, 19:46
Цитата Сообщение от ShadowFox Посмотреть сообщение
FEB+LeapYear,
ShadowFox, если год високосный, то в феврале на один день больше. Переменная leapYear за это "отвечает".
Цитата Сообщение от ShadowFox Посмотреть сообщение
можно ли обойтись без #define?
Можно, конечно... Почему нет?
0
0 / 0 / 0
Регистрация: 01.04.2020
Сообщений: 41
03.04.2020, 19:50  [ТС]
analogov net, а можно вариант без #define?)
0
 Аватар для analogov net
2531 / 1129 / 494
Регистрация: 17.11.2018
Сообщений: 2,836
03.04.2020, 20:05
Цитата Сообщение от ShadowFox Посмотреть сообщение
а можно вариант без #define?
ShadowFox, есть у меня чуйка, что скоро ты попросишь вариант не только без цикла, но и без переменных тоже...
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
#include <iostream>
 
using namespace std;
 
int main()
{
    int  days, year, month = 1;
 
    cout << "year = "; cin >> year;
    cout << "days = "; cin >> days;
 
    const int leapYear = ( year % 400 == 0 || ( year % 4 == 0 && year % 100 != 0 ) ? 1 : 0 );
    const int YAN = 31;
    const int FEB = 28 + leapYear;
    const int MAR = 31;
    const int APR = 30;
    const int MAY = 31;
    const int JUN = 30;
    const int JUL = 31;
    const int AUG = 31;
    const int SEP = 30;
    const int OCT = 31;
    const int NOV = 30;
 
    while( 1 )
    {
        if( days <= YAN )  break;  days -= YAN;  month++;
        if( days <= FEB )  break;  days -= FEB;  month++;
        if( days <= MAR )  break;  days -= MAR;  month++;
        if( days <= APR )  break;  days -= APR;  month++;
        if( days <= MAY )  break;  days -= MAY;  month++;
        if( days <= JUN )  break;  days -= JUN;  month++;
        if( days <= JUL )  break;  days -= JUL;  month++;
        if( days <= AUG )  break;  days -= AUG;  month++;
        if( days <= SEP )  break;  days -= SEP;  month++;
        if( days <= OCT )  break;  days -= OCT;  month++;
        if( days <= NOV )  break;  days -= NOV;  month++;
    }
 
    cout << days << '/' << month << '/' << year << endl;
    return 0;
}
0
0 / 0 / 0
Регистрация: 01.04.2020
Сообщений: 41
03.04.2020, 20:18  [ТС]
analogov net, просто интересны разные варианты решения этого пресловутого задания. Спасибо Вам большое
0
 Аватар для analogov net
2531 / 1129 / 494
Регистрация: 17.11.2018
Сообщений: 2,836
03.04.2020, 20:36
Цитата Сообщение от ShadowFox Посмотреть сообщение
просто интересны разные варианты решения этого пресловутого задания
ShadowFox, тогда без цикла тоже нужно, что бы два раза не вставать. И переменных минимум почти...
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
#include <iostream>
 
using namespace std;
 
int main()
{
    int  days, year, month = 1;
 
    cout << "year = "; cin >> year;
    cout << "days = "; cin >> days;
 
    const int fb = 28 + ( year % 400 == 0 || year % 4 == 0 && year % 100 != 0 );
 
    if( days > 31 ) { days -= 31;  month++;
        if( days > fb ) { days -= fb;  month++;
            if( days > 31 ) { days -= 31;  month++;
                if( days > 30 ) { days -= 30;  month++;
                    if( days > 31 ) { days -= 31;  month++;
                        if( days > 30 ) { days -= 30;  month++;
                            if( days > 31 ) { days -= 31;  month++;
                                if( days > 31 ) { days -= 31;  month++;
                                    if( days > 30 ) { days -= 30;  month++;
                                        if( days > 31 ) { days -= 31;  month++;
                                            if( days > 30 ) { days -= 30;  month++;
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
    cout << days << '/' << month << '/' << year << endl;
    return 0;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
03.04.2020, 20:36
Помогаю со студенческими работами здесь

Вычислить количество дней, прошедших с начала года
Помогите решить задачку двумя способами: через if и через case. Вычислить количество дней, прошедших с начала года.(Не используя...

Определить название месяца по количеству дней прошедших с 1 января 1990 года
Составить программу : с 1 января 1990 года по некоторый день прошло n дней, определить название текущего месяца.

Нужно определить количество дней, прошедших с начала года
Добрый день! Я прошу Вас помочь мне с программой в турбо паскале: даны числа А,В,С, каторые обозначают дату. Нужно определить количество...

Программа для подсчета количества полных дней, прошедших с начала года
Подскажите, пожалуйста, как решается эта задача? Программа для подсчета количества полных дней, прошедших с начала года, если сейчас...

Даны числа А,В,С, которые обозначают дату. Определить количество дней, прошедших с начала года
uses crt; const kd:array of byte=(31,28,31,30,31,30,31,31,30,31,30); var a,b,c,i,k,k2:integer; vis:boolean; begin clrscr; ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11680&amp;d=1772460536 Одним из. . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru