6 / 6 / 0
Регистрация: 23.03.2011
Сообщений: 53
1

Ввести структуру ДАТА с полями ЧИСЛО, МЕСЯЦ, ГОД

13.04.2013, 19:54. Показов 4817. Ответов 0
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Ребят вот само задание:
Ввести структуру ДАТА с полями ЧИСЛО, МЕСЯЦ, ГОД. Составить и протестировать функцию
a) ввода и вывода на экран даты;
b) по году и порядковому номеру дня в году вычисляющую число и месяц года, соответствующему этому дню;
c) находящую в массиве введенных дат самую позднюю.

Вот что с помощью гугла я смог сделать)
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
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
# include <stdio.h>
# include <conio.h>
# include <stdlib.h>
#include <iostream>
 
 
struct date
{
int year;
    int month;
    int day;
};
 
int tab_day [2][12]= {{31,28,31,30,31,30,31,31,30,31,30,31},
                 {31,29,31,30,31,30,31,31,30,31,30,31}};
 
//****Функция, проверяющая является ли год високосным*******
int visokos(int year)
{
    int k=year%4==0&&year%100!=0||year%400==0;
    return k;
}
 
//**********Функция ввода даты***************************
date vvod ()
{
    date d; int b = 1;
    while (b == 1) {
        printf("Введите день, месяц, число\n");
        scanf("%d %d %d)",&d.day, &d.month, &d.year);
        int k=visokos(d.year);
        if (d.day<1||d.day>tab_day[k][d.month-1]||d.month<1||d.month>12||d.year<0)
            printf("Ошибка ввода\n"); 
        else {printf("Дата введена\n"); b = 0;}
    }
    return d;
}
 
//*********Функция вывода даты*****************************
void vivod (date d)
{
 printf("%d.%d.%d\n",d.day,d.month,d.year);
}
 
//*****Функция, вычисляющая порядковый номер дня в году*****
int day_number(date d)
{
    int k=visokos(d.year);
    for (int i=0; i<d.month-1; i++)
        d.day+=tab_day[k][i];
    return d.day;
 
}
 
//*****функция,вычисляющая по году и  порядковому *****
//****номеру дня в году вычисляющую число и месяц года, соответствующему этому дню****
 
 
 
//*******Функция вычисляющая наибольшую дату *************
date max (date* m, int n)
{
    int imax=0, myear=m[0].year, mmonth=m[0].month, mday=m[0].day;
    for (int i=1; i<n; i++)
        if (m[i].year>myear || m[i].year==myear&&(m[i].month>mmonth || m[i].month==mmonth && m[i].day>mday))
        imax=i;
    return m[imax];
}
int main ()
{
    setlocale(0, "Russian");//функция библиотеки iostream 
                        //для русификации вывода данных
    
    char s [80];
    int nom;
 
    do {
    system("cls");
    printf("Выберете функцию\n");
    printf(" 1 – ввод даты\n");
    printf(" 2 – вывод даты\n");
    printf(" 3 – порядковый номер даты\n");
    printf(" 4 – максимальная дата\n");
    printf(" 0 – выход из программы\n");
 
    gets(s);
    nom = atoi(s);
    switch (nom)
    {
        case 0: exit(0);
        case 1: {date d=vvod(); break;}
        case 2: {date d=vvod(); vivod (d); break;}
        case 3: {date d=vvod(); 
                printf("\nПорядковый номер %d",day_number(d));
                 break;
                }
        case 4:
            {
                printf("\nВведите количество дат ");
                int n; scanf("%d",&n);
                date* mas = new date [n];
                for (int i=0; i<n; i++)
                    mas[i]=vvod();
                printf("\nИз введенных дат:\n");
                for (int i=0; i<n; i++)
                    vivod(mas[i]);
                printf("\наибольшая дата ");
                vivod (max(mas,n));
                delete []mas;
                break;
            }
        default: printf("Ошибка ввода ");
    }
    printf("\nДля продолжения нажмите Enter "); getch();
    }
    while (nom !=0);
 
getch();
 }
По году и порядковому номеру дня в году вычисляющую число
и месяц года, соответствующему этому дню,а вот как эту функцию написать не могу понять,помогите плиз..заранее спасибо,Просто на этой недели нада сдать((
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
13.04.2013, 19:54
Ответы с готовыми решениями:

Ввести структуру ДАТА с полями ЧИСЛО, МЕСЯЦ, ГОД
Ребят вот само задание: Ввести структуру ДАТА с полями ЧИСЛО, МЕСЯЦ, ГОД. Составить и...

Ввести структуру "историческое событие" с полями "число", "месяц", "год", "событие"
Ввести структуру ИСТОРИЧЕСКОЕ СОБЫТИЕ с полями ЧИСЛО, МЕСЯЦ, ГОД, СОБЫТИЕ. Составить и...

Дан файл, содержащий различные даты. Каждая дата — это число, месяц и год. Найти год с наименьшим номером
Уважаемые, программисты, очень прошу помощи по данным заданиям. Нужно сделать кто какие сможет....

Описать структуру «дата» (год, месяц, день
Описать структуру «дата» (год, месяц, день). Определить функцию «дней до конца года» вычисляющую...

0
13.04.2013, 19:54
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
13.04.2013, 19:54
Помогаю со студенческими работами здесь

Из класса "Дата" с полями день, месяц, год создать класс "Время" с дополнительными полями час, минута, секунда
в общем .надо класс дата полями день, месяц год.теперь мне надо создать класс &quot;Время&quot; з...

Создайте структуру Дата с элементами День, Месяц, Год.
Народ, не могу понять структуры и учитель ничего не объясняет, помогите с кодом. Создайте...

Дан файл, содержащий различные даты. Каждая дата – это число, месяц и год. Найти год с наименьшим номером.
Дан файл, содержащий различные даты. Каждая дата – это число, месяц и год. Найти год с наименьшим...

Динамический список, ввести структуру УЧЕНИК с полями ФИО, ГОД РОЖДЕНИЯ, НОМЕР КЛАССА
Ввести структуру УЧЕНИК с полями ФИО, ГОД РОЖДЕНИЯ, НОМЕР КЛАССА. Составить функцию 1)сортирующую...


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

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru