Форум программистов, компьютерный форум CyberForum.ru

По заданной дате (число, месяц, год, например, 6, 5, 2012) вычислить номер дня в году - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 12, средняя оценка - 4.83
unipharma
0 / 0 / 0
Регистрация: 10.11.2012
Сообщений: 54
13.02.2013, 19:16     По заданной дате (число, месяц, год, например, 6, 5, 2012) вычислить номер дня в году #1
2)По заданной дате (число, месяц, год, например, 6, 5, 2012) вычислить номер дня в году (от 1до 365 или 366, если год високосный).
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.02.2013, 19:16     По заданной дате (число, месяц, год, например, 6, 5, 2012) вычислить номер дня в году
Посмотрите здесь:

C++ Дан номер года (положительное целое число). Определить количество дней в этом году, учитывая, что обычный год насчитывает 365 дней, а високосный
программа которая по номеру дня в году выводит число и месяц C++
C++ 10.23. Дата некоторого дня характеризуется гремя натуральными числами: g (год), m (порядковый номер месяца) и n (число). По заданным g, n и m определи
По заданной дате вывести информацию о том, високосный ли год в этой дате, а также название месяца и количество дней в нем. C++
C++ Оформить в виде структуры год, месяц, число. Описать функцию для определения дня недели
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
makShot
15 / 15 / 1
Регистрация: 07.07.2011
Сообщений: 38
15.02.2013, 08:42     По заданной дате (число, месяц, год, например, 6, 5, 2012) вычислить номер дня в году #2
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
#include <iostream>
 
using namespace std;
 
int main(int argc, const char * argv[])
{
 
    int A[12] = {31,28,31,30,31,30,31,31,30,31,30,31};
    
    cout<<"Input your date: ";
    int day,month,year;
    cin>>day>>month>>year;
    
    int x = 0;
    
    if (year % 4 == 0)
        A[1]++;
    
    for (int i = 0; i < month-1; i++)
        x+=A[i];
    
    x+=day;
    
    cout<<endl<<x<<endl;
    
    return 0;
}
gazlan
2867 / 1815 / 272
Регистрация: 27.08.2010
Сообщений: 4,919
Записей в блоге: 1
15.02.2013, 11:24     По заданной дате (число, месяц, год, например, 6, 5, 2012) вычислить номер дня в году #3
Вот здесь ошибка:

if (year % 4 == 0)
http://en.wikipedia.org/wiki/Leap_year
makShot
15 / 15 / 1
Регистрация: 07.07.2011
Сообщений: 38
15.02.2013, 13:06     По заданной дате (число, месяц, год, например, 6, 5, 2012) вычислить номер дня в году #4
gazlan, да, достаточно крутая, серьезная и весомая ошибка в коде!
gazlan
2867 / 1815 / 272
Регистрация: 27.08.2010
Сообщений: 4,919
Записей в блоге: 1
15.02.2013, 13:25     По заданной дате (число, месяц, год, например, 6, 5, 2012) вычислить номер дня в году #5
крутая, серьезная и весомая ошибка в коде!
Для всех лет кратных 100 (но не 400), для любой даты, начиная с марта, подсчет будет неверен. И если это бухгалтерский расчет, то будет не до шуток.

И да, это в самом деле "серьезная ошибка" - заведомо неправильные результаты легко диагностируются, а вот когда ответ "почти правилен", поиск ошибки может стать многодневным квестом.

Вот здесь http://gazlan.freetzi.com/block_note/cuckoo_egg.html можете почитать историю одного расследования:

Компьютерные счета не совсем сходились: за последний месяц они показывали недостачу в 75 центов при общей сумме 2.387 долларов.
makShot
15 / 15 / 1
Регистрация: 07.07.2011
Сообщений: 38
15.02.2013, 14:11     По заданной дате (число, месяц, год, например, 6, 5, 2012) вычислить номер дня в году #6
Самое главное, что программа правильно делает свое дело.

А если человек блистает знаниями в области високосных годов, то ему не составит труда дописать необходимое условие в цикл if.

К сожалению, меня и всех людей, которых я лично знаю, в школе учили только тому, что високосный год кратен цифре 4 - вот такая плохая система образования. А для бухгалтера, кстати, будет очень важен расчет на 1700 год.

Теперь Вы мой кумир, без всяких сомнений.
Yandex
Объявления
15.02.2013, 14:11     По заданной дате (число, месяц, год, например, 6, 5, 2012) вычислить номер дня в году
Ответ Создать тему
Опции темы

Текущее время: 19:37. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru