Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 02.12.2010, 10:00   #1
Fantom.as
Пользователь
 
Аватар для Fantom.as
 
Регистрация: 19.04.2010
Сообщений: 62
Восклицание Вывод даты по году и номеру дня

Фрагмент кода
Код:
#include "stdafx.h"
#include "stdio.h"
#include "conio.h"
#include "iostream"
#include "string.h"
using namespace std;
static int day_tab[2][13] = {
	  (0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31),
      (0, 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31)};
const int maxline=4;

  
int day_of_year(int year,int month,int *day)      /* set day of year */			 /* день набора года */
												 /* from month & day */			/* с месяца & дня */  
 {
   int i, leap;
   leap = year%4 == 0 && year%100 != 0 || year%400 == 0;
   for (i = 1; i < month; i++)
      *day += day_tab[leap][i];
   return(*day);
}
 
void month_day(int year,int  yearday,int *pmonth,int *pday) /*set month,day */			/*set месяц, день */
															/* from day of year */		/* со дня года */
{
    int i, leap;
	leap = year%4 == 0 && year%100 != 0 || year%400 == 0;
    for (i = 1; yearday > day_tab[leap][i]; i++)
        yearday -= day_tab[leap][i];
    *pmonth = i;
    *pday = yearday;
	return;
}
int main(void)
{   

    getch();
	return 0;
}
Задание вывести дату, зная ее номер дня и год.
В этом коде пустая главная функция, надо разобраться в 2-х других функциях разобраться и выполнить задание.
Заранье спасибо!
<--<--<--Нажми на весы слева <---<---<---
Fantom.as вне форума Ответить с цитированием
Старый 02.12.2010, 15:31   #2
nowaalex
Пользователь
 
Регистрация: 22.08.2010
Сообщений: 59
По умолчанию

Сделал заново

Код:
#include <cstdio>

static unsigned char Months[] = { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };
static const char * MonthNames[] =
{
    "Jan", "Feb", "Mar", "Apr", "May", "Jun",
    "Jul", "Aug", "Sep", "Oct", "Nov", "Dec",
};

int main()
{
    void printDate( unsigned short DayNumber, unsigned short Year );
    printDate( 61, 1602 );
    return 0;
}

void printDate( unsigned short DayNumber, unsigned short Year )
{
    if( DayNumber > 356 )
    {
        printf( "Incorrect day entered!\n" );
        return;
    }
    if( !( Year % 4 ) && Year % 100 || !( Year % 400 ) )
        Months[ 1 ] = 29;
    else
        if( DayNumber == 356 )
        {
            printf( "Sorry) This year has only 355 days)\n" );
            return;
        }
    unsigned char month;
    for( month = 0; Months[ month ] < DayNumber; DayNumber -= Months[ month++ ] );
    printf( "%s,%d\n", MonthNames[ month ], DayNumber );
}
nowaalex вне форума Ответить с цитированием
Старый 03.12.2010, 08:42   #3
Fantom.as
Пользователь
 
Аватар для Fantom.as
 
Регистрация: 19.04.2010
Сообщений: 62
Сообщение

Цитата:
Сообщение от nowaalex Посмотреть сообщение
Сделал заново

У меня задание с функциями делать, без них я уже сделал. а функции препод дал.
<--<--<--Нажми на весы слева <---<---<---
Fantom.as вне форума Ответить с цитированием
Старый 03.12.2010, 09:12   #4
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Вам достаточно одной из этих функций/процедур:
Цитата:
Код:
void month_day(int year,int  yearday,int *pmonth,int *pday
в неё передаёте первый параметер - год,
второй номер дня в году.
второй и третий параметры - переменные, которые в данной процедуре изменяются.
(после того, как функция отработает, она вернёт в 3-й переменной - номер месяца, в 4-й переменной - номер дня в месяце.
достаточно выдать: 4-я переменная .(Точка) 3-я переменная .(Точка) ГОД
чтобы получить дату в стандартном для России виде (день.месяц.год)


p.s.
Цитата:
<--<--<--Нажми на часики слева <---<---<---
фэйл. это не часики, это ВЕСЫ!
Serge_Bliznykov вне форума Ответить с цитированием
Старый 04.12.2010, 09:43   #5
Fantom.as
Пользователь
 
Аватар для Fantom.as
 
Регистрация: 19.04.2010
Сообщений: 62
Сообщение

Цитата:
=Serge_Bliznykov;673940]Вам достаточно одной из этих функций/процедур:

в неё передаёте первый параметер - год,
второй номер дня в году.
второй и третий параметры - переменные, которые в данной процедуре изменяются.
(после того, как функция отработает, она вернёт в 3-й переменной - номер месяца, в 4-й переменной - номер дня в месяце.
достаточно выдать: 4-я переменная .(Точка) 3-я переменная .(Точка) ГОД
чтобы получить дату в стандартном для России виде (день.месяц.год)
я в этом уже разобрался, но функция считает не правильно...
месяц доходит до 33
<--<--<--Нажми на весы слева <---<---<---
Fantom.as вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вывод дня с максимальными продажами AvaMight Microsoft Office Excel 3 13.03.2010 11:08
Извлечение из даты дня недели Kesha_pptp PHP 5 27.02.2010 22:21
Вывод дня недели по дате и наоборот (СИ) Xcess Помощь студентам 6 08.10.2009 14:02
Зависимость даты дней от дня недели valerij Microsoft Office Excel 16 18.06.2009 01:17
Вычисление даты завтрашнего дня meteora Помощь студентам 3 18.01.2008 11:18