Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.63/8: Рейтинг темы: голосов - 8, средняя оценка - 4.63
0 / 0 / 1
Регистрация: 29.10.2015
Сообщений: 253
1

Работа со структурами

17.10.2016, 16:57. Показов 1667. Ответов 11
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Есть задание следующего типа: Описать тип TDate — структура с полями целого типа Day (день), Month (месяц) и Year (год). Протестировать является ли дата правильной. Создать массив структур (не более чем для пяти дат). Вывести на экран те даты, у которых месяца являются зимними, в противном случае вывести сообщение «Нет дат, у которых месяца являются зимними».
Создал структуру TDate для проверки
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
namespace Одномерные_массивы_и_структуры
{
    struct TDate
    {
        public int day, mes, god;
        public void Show()
        {
            Console.WriteLine(day + ", " + mes + ", " + god);
        }     
        public bool Wisokosh()
        {
            return (god % 4 == 0) && !(god % 100 == 0 && god % 400 != 0);
        }
        public bool Prawilnia()
        {
            bool rez = true;
            if (mes < 0 || mes > 12)
                rez = false;
            else
            {
                switch (mes)
                {
                    case 1: { rez = (day >= 1 && day <= 31); break; }
                    case 2:
                        {
                            if (Wisokosh() == true)
                            {
                                rez = (day >= 1 && day <= 29); break;
                            }
                            else
                            {
                                rez = (day >= 1 && day <= 28);
                                break;
                            }
                        }
                    case 3: { rez = (day >= 1 && day <= 31); break; }
                    case 4: { rez = (day >= 1 && day <= 30); break; }
                    case 5: { rez = (day >= 1 && day <= 31); break; }
                    case 6: { rez = (day >= 1 && day <= 30); break; }
                    case 7: { rez = (day >= 1 && day <= 31); break; }
                    case 8: { rez = (day >= 1 && day <= 31); break; }
                    case 9: { rez = (day >= 1 && day <= 30); break; }
                    case 10: { rez = (day >= 1 && day <= 31); break; }
                    case 11: { rez = (day >= 1 && day <= 30); break; }
                    case 12: { rez = (day >= 1 && day <= 31); break; }
                }
 
            }
            return rez;
 
 
        }
    }
}
И часть кода в основном файле
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
 TDate data = new TDate();
            int i;
            data.day = 0;
            data.mes = 0;
            data.god = 0;
            data.Show();
            Console.WriteLine("Введите 5 дат");
            TDate[] mas = new TDate[5];
            
            
                for (i = 0; i < 5; i++)
                {
                    Console.WriteLine("День");
                    mas[i].day = Int32.Parse(Console.ReadLine());
                    Console.WriteLine("Месяц");
                    mas[i].mes = Int32.Parse(Console.ReadLine());
                    Console.WriteLine("Год");
                    mas[i].god = Int32.Parse(Console.ReadLine());
                }
 
            for (i = 0; i < 5; i++)
            {
                mas[i].Show();
            }
Но всё не могу понять, как в основном файле выполнить проверку введённых дат на условие из TDate ? Как правильно оформлять if ?
C#
1
2
3
4
5
6
7
8
9
10
if (data.Prawilnia())
                {
                Console.WriteLine("ДА!!!!!!");
            }
                else
                {
                    Console.WriteLine("ddd");
 
 
                }
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
17.10.2016, 16:57
Ответы с готовыми решениями:

Работа со структурами
Необходимо выполнить следующие операции: 1)описать структуру (Самолёт) 2)объявить переменную...

Работа со структурами
Всем доброго дня! имеется вопрос по работе со структурами на C#. Вот условие задания: Описать тип...

Работа со структурами и массивами
Здравствуйте! Возник очередной тупой вопрос, допустим, есть массив, и структура. byte arr1; ...

Работа со структурами в бинарном файле
Здравствуйте, прошу мне помочь с одной проблемой. При работе над файлом, я создал структуру: ...

11
212 / 210 / 137
Регистрация: 21.12.2015
Сообщений: 545
17.10.2016, 17:41 2
Лучший ответ Сообщение было отмечено Namatrasnik как решение

Решение

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
TDate data = new TDate();
            int i;
            data.day = 0;
            data.mes = 0;
            data.god = 0;
            data.Show();
            Console.WriteLine("Введите 5 дат");
            TDate[] mas = new TDate[5];
            
            
                for (i = 0; i < 5; i++)
                {
                    Console.WriteLine("День");
                    mas[i].day = Int32.Parse(Console.ReadLine());
                    Console.WriteLine("Месяц");
                    mas[i].mes = Int32.Parse(Console.ReadLine());
                    Console.WriteLine("Год");
                    mas[i].god = Int32.Parse(Console.ReadLine());
                }
 
            for (i = 0; i < 5; i++)
            {
                mas[i].Show();
                if (mas[i].Prawilnia())
                Console.WriteLine("ДА!!!!!!");
                else
                    Console.WriteLine("нет");
 
            }
Добавлено через 2 минуты
вам это нужно было?

Добавлено через 8 минут
так более симпатично
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
TDate data = new TDate();
        int i;
        data.day = 0;
        data.mes = 0;
        data.god = 0;
        data.Show();
        Console.WriteLine("Введите 5 дат");
        TDate[] mas = new TDate[5];
 
 
        for (i = 0; i < 5; i++)
        {
            Console.Write("День : ");
            mas[i].day = Int32.Parse(Console.ReadLine());
            Console.Write("Месяц : ");
            mas[i].mes = Int32.Parse(Console.ReadLine());
            Console.Write("Год : ");
            mas[i].god = Int32.Parse(Console.ReadLine());
            Console.WriteLine();
        }
 
        for (i = 0; i < 5; i++)
        {
            mas[i].Show();
            if (mas[i].Prawilnia())
                Console.WriteLine("ДА!!!!!!");
            else
                Console.WriteLine("нет");
 
        }
        Console.ReadKey();
1
0 / 0 / 1
Регистрация: 29.10.2015
Сообщений: 253
19.10.2016, 17:13  [ТС] 3
TuM0xA, спасибо Вам. Подскажите ещё кое что, пожалуйста
Для проверки зимних месяцев в структуре создал это:
C#
1
2
3
4
public bool zimnie()//проверяем зимние месяца
        {
            return(mes == 12 && mes == 1 && mes == 2);           
        }
Но всё никак не могу понять, как выводить эти даты в основном файле кода ? Понимаю, что через
C#
1
 if (data.zimnie())
0
212 / 210 / 137
Регистрация: 21.12.2015
Сообщений: 545
19.10.2016, 17:26 4
как-то так
C#
1
foreach(TDate data in mas)if(data.zimnie())data.Show();
0
Эксперт .NET
5877 / 4754 / 2939
Регистрация: 20.04.2015
Сообщений: 8,361
19.10.2016, 17:27 5
Namatrasnik,
Так не сработает, mes не может быть одновременно равен 12, 1 и 2.
Нужно:
C#
1
return (mes == 12 || mes == 1 || mes == 2);
0
0 / 0 / 1
Регистрация: 29.10.2015
Сообщений: 253
19.10.2016, 17:41  [ТС] 6
Даценд, А как вывести эти даты ?
0
Эксперт .NET
5877 / 4754 / 2939
Регистрация: 20.04.2015
Сообщений: 8,361
19.10.2016, 17:43 7
Namatrasnik,
Ну, например, так как TuM0xA, показал чуть выше.
0
0 / 0 / 1
Регистрация: 29.10.2015
Сообщений: 253
19.10.2016, 18:04  [ТС] 8
Даценд, TDate data не проходит тут
0
212 / 210 / 137
Регистрация: 21.12.2015
Сообщений: 545
19.10.2016, 18:08 9
Namatrasnik, смените просто имя переменной
C#
1
foreach (TDate d in mas) if (d.zimnie()) d.Show();
0
Эксперт .NET
5877 / 4754 / 2939
Регистрация: 20.04.2015
Сообщений: 8,361
19.10.2016, 18:09 10
Namatrasnik,
переменная data уже есть в блоке, поэтому
C#
1
2
3
4
foreach (TDate item in mas)
{
    if (item.zimnie()) item.Show();
}
0
212 / 210 / 137
Регистрация: 21.12.2015
Сообщений: 545
19.10.2016, 18:16 11
Namatrasnik, или удалите это
C#
1
2
3
4
5
TDate data = new TDate();
 data.day = 0;
        data.mes = 0;
        data.god = 0;
        data.Show();
Добавлено через 32 секунды
Namatrasnik, все равно она нужна

Добавлено через 58 секунд
короче вот всё
Кликните здесь для просмотра всего текста
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
using System;
    struct TDate
    {
        public int day, mes, god;
        public void Show()
        {
            Console.WriteLine(day + ", " + mes + ", " + god);
        }
        public bool zimnie()//проверяем зимние месяца
        {
            return (mes == 12 && mes == 1 && mes == 2);
        }
        public bool Wisokosh()
        {
            return (god % 4 == 0) && !(god % 100 == 0 && god % 400 != 0);
        }
        public bool Prawilnia()
        {
            bool rez = true;
            if (mes < 0 || mes > 12)
                rez = false;
            else
            {
                switch (mes)
                {
                    case 1: { rez = (day >= 1 && day <= 31); break; }
                    case 2:
                        {
                            if (Wisokosh() == true)
                            {
                                rez = (day >= 1 && day <= 29); break;
                            }
                            else
                            {
                                rez = (day >= 1 && day <= 28);
                                break;
                            }
                        }
                    case 3: { rez = (day >= 1 && day <= 31); break; }
                    case 4: { rez = (day >= 1 && day <= 30); break; }
                    case 5: { rez = (day >= 1 && day <= 31); break; }
                    case 6: { rez = (day >= 1 && day <= 30); break; }
                    case 7: { rez = (day >= 1 && day <= 31); break; }
                    case 8: { rez = (day >= 1 && day <= 31); break; }
                    case 9: { rez = (day >= 1 && day <= 30); break; }
                    case 10: { rez = (day >= 1 && day <= 31); break; }
                    case 11: { rez = (day >= 1 && day <= 30); break; }
                    case 12: { rez = (day >= 1 && day <= 31); break; }
                }
 
            }
            return rez;
 
 
        }
    }
class test 
{
    static void Main() 
    {
        int i;
        Console.WriteLine("Введите 5 дат");
        TDate[] mas = new TDate[5];
 
 
        for (i = 0; i < 5; i++)
        {
            Console.Write("День : ");
            mas[i].day = Int32.Parse(Console.ReadLine());
            Console.Write("Месяц : ");
            mas[i].mes = Int32.Parse(Console.ReadLine());
            Console.Write("Год : ");
            mas[i].god = Int32.Parse(Console.ReadLine());
            Console.WriteLine();
        }
 
        for (i = 0; i < 5; i++)
        {
            mas[i].Show();
            if (mas[i].Prawilnia())
                Console.WriteLine("ДА!!!!!!");
            else
                Console.WriteLine("нет");
 
        }
        Console.WriteLine("зимние : ");
        foreach (TDate date in mas) if (date.zimnie()) date.Show();
        Console.ReadKey();
 
    }
}


Добавлено через 4 минуты
небольшая модификация главной части
Кликните здесь для просмотра всего текста
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
class test
{
    static void Main()
    {
        int i;
        Console.WriteLine("Введите 5 дат");
        TDate[] mas = new TDate[5];
 
 
        for (i = 0; i < 5; i++)
        {
            do
            {
                Console.Write("День : ");
                mas[i].day = Int32.Parse(Console.ReadLine());
                Console.Write("Месяц : ");
                mas[i].mes = Int32.Parse(Console.ReadLine());
                Console.Write("Год : ");
                mas[i].god = Int32.Parse(Console.ReadLine());
                mas[i].Show();
                if (mas[i].Prawilnia())
                    Console.WriteLine("правильно");
                else
                    Console.WriteLine("НЕ ПРАВИЛЬНО");
                Console.WriteLine();
            } while (!mas[i].Prawilnia());
        }
        Console.WriteLine("зимние даты : ");
        foreach (TDate date in mas) if (date.zimnie()) date.Show();
        Console.ReadKey();
 
    }
}
1
0 / 0 / 1
Регистрация: 29.10.2015
Сообщений: 253
20.10.2016, 14:43  [ТС] 12
Большое спасибо. Разобрался!
0
20.10.2016, 14:43
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
20.10.2016, 14:43
Помогаю со студенческими работами здесь

Работа со структурами - не все ветви кода возвращают значение
Есть такая задача, код нужен на c# Дано type декарт = record x, y : real ...

Работа с структурами. Вывести список студентов, имеющих по итогам аттестации только "2"
typedef struct {char name; int group, mark;} STUD; STUD kurs; /информация о студентах. Вывести...

Работа со структурами
Сегодня преподаватель огорошил известием что к завтрашнему дню надо сдать лабораторную по Работе...

Работа со структурами
Известны данные о численности населения и площади 10 государств. Определить государство с...


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

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