С Новым годом! Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
-1 / 0 / 2
Регистрация: 27.09.2015
Сообщений: 92

Определить разницу в месяцах и днях между самой ранней и самой поздней датами, относящимися к заданному году

01.04.2018, 19:38. Показов 1154. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Решить задачу с использованием структуры «бинарный файл» (в файле хранятся величины типа «структура» - struct).
Определить разницу в месяцах и днях между самой ранней и самой поздней датами, относящимися к заданному году. Как исправить задачу, чтобы посчиталось в МЕСЯЦАХ и ДНЯХ разница между самой ранней и самой поздней датами?

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
using System;
using System.IO;
using System.Runtime.Serialization.Formatters.Binary;
 
namespace zadacha3
{
 
    class Program
    {
        [Serializable]
        public struct dat
        {
            public int d; 
            public int m; 
            public int g; 
        }
        static void Main(string[] args)
        {
            
            dat minim, maxim;
            minim.d = 0;
            minim.m = 0;
            minim.g=1000;
            maxim.d = 0;
            maxim.m = 0;
            maxim.g=3000;
            
            
            const string fileName = "temp.dat";
            Console.Write("Введите количество вводимых дат:");
            int n = Convert.ToInt32(Console.ReadLine());
            dat[] t = new dat[n];
            
            for (int i = 0; i < n; i++)
            {
                Console.Write("Введите день:");
                t[i].d = Convert.ToInt32(Console.ReadLine());
                Console.Write("Введите месяц:");
                t[i].m = Convert.ToInt32(Console.ReadLine());
                Console.Write("Введите год:");
                t[i].g = Convert.ToInt32(Console.ReadLine());
 
            }
            BinaryFormatter formatter = new BinaryFormatter();
            using (FileStream fs = new FileStream(fileName, FileMode.OpenOrCreate))
            {
                formatter.Serialize(fs, t);
                fs.Close();
            }
            dat[] j;
            using (FileStream fs = File.OpenRead(fileName))
            {
                j = (dat[])formatter.Deserialize(fs);
                fs.Close();
            }
            n = j.Length;
            
            for (int i = 0; i < n; i++) 
            {
                if (j[i].g < maxim.g) maxim = j[i];
                else
                    if ((j[i].g == maxim.g) && (j[i].m < maxim.m)) maxim = j[i];
                else
                        if ((j[i].m == maxim.m) && (j[i].d < maxim.d)) maxim = j[i];
                if (j[i].g > minim.g) minim = j[i];
                else
                if ((j[i].g == minim.g) && (j[i].m > minim.m)) minim = j[i];
                else
                    if ((j[i].m == minim.m) && (j[i].d > minim.d)) minim = j[i];
            }
            dat raznica; 
            raznica.g = minim.g - maxim.g;
            if (maxim.m > minim.m) raznica.m = 12 - (maxim.m - minim.m);
            else raznica.m = minim.m - maxim.m;
            if (maxim.d > minim.d) raznica.d = 30 - (maxim.d - minim.d);
            else raznica.d = minim.d - maxim.d;
            Console.WriteLine("Разница: {0} лет {1} месяцев и {2} дней", (raznica.g - 1), (raznica.m - 1), raznica.d);
        }
    }
}
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
01.04.2018, 19:38
Ответы с готовыми решениями:

Выделение самой ранней и самой поздней даты
Нужно выделить из таблицы самую ранюю и самую позднюю дату. В таблицу надо чтобы записывалось первое и последнее посещение клиента...

Вывести на экран имя файла с самой ранней или поздней датой
добрый день! Необходимо написать командный файл windows, который в зависимости от ключа будет выводить на экран имя файла с самой ранней...

Определить разницу в днях между двумя датами
Как избавится от отрицательных чисел в ответе??? import java.util.Calendar; import java.util.Date; import java.util.Formatter; ...

2
-1 / 0 / 2
Регистрация: 27.09.2015
Сообщений: 92
22.04.2018, 20:36  [ТС]
III. Решить задачу с использованием структуры «бинарный файл» (в файле хранятся величины типа «структура» - struct)
Определить разницу в месяцах и днях между самой ранней и самой поздней датами, относящимися к заданному году. Что неправильно в задаче?

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
using System;
 
using System.IO;
using System.Runtime.Serialization.Formatters.Binary;
 
namespace zadacha3
{
 
    class Program
    {
        [Serializable]
        public struct dat
        {
            public int d;
            public int m;
            public int g;
        }
        static void Main(string[] args)
        {
 
            dat minim, maxim;
            minim.d = 0;
            minim.m = 0;
            minim.g = 1000;
            maxim.d = 0;
            maxim.m = 0;
            maxim.g = 3000;
 
 
            const string fileName = "temp.dat";
            Console.Write("Введите количество вводимых дат:");
            int n = Convert.ToInt32(Console.ReadLine());
            dat[] t = new dat[n];
 
            for (int i = 0; i < n; i++)
            {
                Console.Write("Введите день:");
                t[i].d = Convert.ToInt32(Console.ReadLine());
                Console.Write("Введите месяц:");
                t[i].m = Convert.ToInt32(Console.ReadLine());
                Console.Write("Введите год:");
                t[i].g = Convert.ToInt32(Console.ReadLine());
 
            }
            BinaryFormatter formatter = new BinaryFormatter();
            using (FileStream fs = new FileStream(fileName, FileMode.OpenOrCreate))
            {
                formatter.Serialize(fs, t);
                fs.Close();
            }
            dat[] j;
            using (FileStream fs = File.OpenRead(fileName))
            {
                j = (dat[])formatter.Deserialize(fs);
                fs.Close();
            }
            n = j.Length;
 
            for (int i = 0; i < n; i++)
            {
                if (j[i].g < maxim.g) maxim = j[i];
                else
                    if ((j[i].g == maxim.g) && (j[i].m < maxim.m)) maxim = j[i];
                else
                        if ((j[i].m == maxim.m) && (j[i].d < maxim.d)) maxim = j[i];
                if (j[i].g > minim.g) minim = j[i];
                else
                if ((j[i].g == minim.g) && (j[i].m > minim.m)) minim = j[i];
                else
                    if ((j[i].m == minim.m) && (j[i].d > minim.d)) minim = j[i];
            }
            dat raznica;
            raznica.g = minim.g - maxim.g;
            if (maxim.m > minim.m)
            
                raznica.m = 12*raznica.g+(12 - (maxim.m - minim.m));
                
            
            else raznica.m = minim.m - maxim.m;
            if (maxim.d > minim.d) raznica.d = 30 - (maxim.d - minim.d);
            else raznica.d = minim.d - maxim.d;
            Console.WriteLine("Разница: {0} месяцев и {1} дней",  (raznica.m - 1), raznica.d);
        }
    }
}
0
-1 / 0 / 2
Регистрация: 27.09.2015
Сообщений: 92
06.05.2018, 17:32  [ТС]
Решить задачу с использованием структуры «бинарный файл» (в файле хранятся величины типа «структура» - struct)
Определить разницу в месяцах и днях между самой ранней и самой поздней датами, относящимися к заданному году.

Помогите пожалуйста переделать задачу, чтобы при вводе определённого года работало.
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
using System;
using System.IO;
using System.Runtime.Serialization.Formatters.Binary;
 
namespace zadacha3
{
 
    class Program
    {
        [Serializable]
        public struct dat
        {
            public int d;
            public int m;
            public int g;
        }
        static void Main(string[] args)
        {
 
            dat minim, maxim;
            minim.d = 0;
            minim.m = 0;
            minim.g = 1000;
            maxim.d = 0;
            maxim.m = 0;
            maxim.g = 3000;
 
 
            const string fileName = "temp.dat";
            Console.Write("Введите количество вводимых дат:");
            int n = Convert.ToInt32(Console.ReadLine());
            dat[] t = new dat[n];
 
            for (int i = 0; i < n; i++)
            {
                Console.Write("Введите день:");
                t[i].d = Convert.ToInt32(Console.ReadLine());
                Console.Write("Введите месяц:");
                t[i].m = Convert.ToInt32(Console.ReadLine());
                Console.Write("Введите год:");
                t[i].g = Convert.ToInt32(Console.ReadLine());
 
            }
            BinaryFormatter formatter = new BinaryFormatter();
            using (FileStream fs = new FileStream(fileName, FileMode.OpenOrCreate))
            {
                formatter.Serialize(fs, t);
                fs.Close();
            }
            dat[] j;
            using (FileStream fs = File.OpenRead(fileName))
            {
                j = (dat[])formatter.Deserialize(fs);
                fs.Close();
            }
            n = j.Length;
 
            for (int i = 0; i < n; i++)
            {
                if (j[i].g < maxim.g) maxim = j[i];
                else
                    if ((j[i].g == maxim.g) && (j[i].m < maxim.m)) maxim = j[i];
                else
                        if ((j[i].m == maxim.m) && (j[i].d < maxim.d)) maxim = j[i];
                if (j[i].g > minim.g) minim = j[i];
                else
                if ((j[i].g == minim.g) && (j[i].m > minim.m)) minim = j[i];
                else
                    if ((j[i].m == minim.m) && (j[i].d > minim.d)) minim = j[i];
            }
            dat raznica;
            raznica.g = minim.g - maxim.g;
            if (maxim.m > minim.m) raznica.m = raznica.g*12+(12 - (maxim.m - minim.m));
            else raznica.m = minim.m - maxim.m;
            if (maxim.d > minim.d) raznica.d = 30 - (maxim.d - minim.d);
            else raznica.d = minim.d - maxim.d;
            Console.WriteLine("Разница: {0} месяцев и {1} дней",  raznica.m, raznica.d);
        }
    }
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
06.05.2018, 17:32
Помогаю со студенческими работами здесь

Вывести имя файла с самой последней или самой ранней датой последнего использования
Здравствуйте. Помогите с написанием bat файла. Разработать командный файл, который бы выводил в зависимости от ключа на экран имя файла...

Вывести имя файла с самой последней или с самой ранней датой последнего использования в текущем каталоге
Всем привет! Помогите, пжл., с написанием bat файла. Нужно: разработать командный файл, который бы выводил в зависимости от ключа на...

Кол-во дней между датами в двух ячейках, в месяцах и днях
Есть две даты, например 12-Янв-2005 и 25-Июн-2005. Подскажите можно ли составить формулу, чтобы в первой ячейке показывало сколько...

Узнать разницу между двумя датами в месяцах
Привет! Работаю с переменными типа TDateTime: InputDate, StartDate. Хочу узнать разницу в месяцах между InputDate, StartDate. Знаю,...

Определить расстояние между самой дальней и самой близкой точкой по отношению к началу координат.
С помощью действительной матрицы 2 на n на плоскости задано n точек, так, что Х1,j и Х2,j координаты j-ой точки. Определить расстояние...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
Модель микоризы: классовый агентный подход
anaschu 02.01.2026
Раньше это было два гриба и бактерия. Теперь три гриба, растение. И на уровне агентов добавится между грибами или бактериями взаимодействий. До того я пробовал подход через многомерные массивы,. . .
Учёным и волонтёрам проекта «Einstein@home» удалось обнаружить четыре гамма-лучевых пульсара в джете Млечного Пути
Programma_Boinc 01.01.2026
Учёным и волонтёрам проекта «Einstein@home» удалось обнаружить четыре гамма-лучевых пульсара в джете Млечного Пути Сочетание глобально распределённой вычислительной мощности и инновационных. . .
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru