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

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

01.04.2018, 19:38. Просмотров 430. Ответов 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
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.04.2018, 19:38
Ответы с готовыми решениями:

Вычислить разницу в днях между двумя датами
using System; class Rerr { static void Main() { const ulong DayInYear = 365;...

Получить разницу между двумя датами в днях
Доброго времени суток! Пытаюсь решить задачу, есть выбранная дата,мне нужно вычесть,что бы...

Определить разницу между датами
Пожалуйста подскажите. В поле на форме вводится число в секундах (допустим, 15). При нажатии кнопки...

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

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

2
Candic
-1 / 0 / 2
Регистрация: 27.09.2015
Сообщений: 92
22.04.2018, 20:36  [ТС] 2
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
Candic
-1 / 0 / 2
Регистрация: 27.09.2015
Сообщений: 92
06.05.2018, 17:32  [ТС] 3
Решить задачу с использованием структуры «бинарный файл» (в файле хранятся величины типа «структура» - 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
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.05.2018, 17:32

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

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

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


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.