Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.55/11: Рейтинг темы: голосов - 11, средняя оценка - 4.55
0 / 0 / 0
Регистрация: 06.01.2013
Сообщений: 22
1

Восточный календарь: ввести животное, вывести годы

13.02.2013, 17:48. Показов 2161. Ответов 16
Метки нет (Все метки)

помогите,пожалуйста,с задачей!
вводим в консоле животное - получаем года, которые соответствуют ему(как в восточном календаре).
и нужно,чтобы года выводились либо по три в строке,либо по 5.
__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
13.02.2013, 17:48
Ответы с готовыми решениями:

Восточный календарь: по номеру года вывести его название
В восточном календаре принят 60-летний цикл, состоящий из 12- летних подциклов, обозначаемых...

Восточный календарь. По номеру года определить его название
В восточном календаре принят 60-летний цикл, состоящий из 12 - летних подциклов, обозначаемых...

Ввести номер месяца и номер года. Вывести количество дней в этом месяце (учитывать високосные годы)
Ввести номер месяца и номер года. Вывести количество дней в этом месяце (учитывать високосные годы)

Восточный календарь: вывести название года
Давным давно, в одной альтернативной вселенной, в восточном календаре был принят 60-летний цикл,...

16
Эксперт С++
2641 / 2212 / 331
Регистрация: 03.05.2011
Сообщений: 4,654
Записей в блоге: 17
13.02.2013, 18:30 2
switch - case лучше всего подходит для условия.
0
0 / 0 / 0
Регистрация: 06.01.2013
Сообщений: 22
13.02.2013, 18:33  [ТС] 3
а можете показать кусочек.не совсем доходит,как это действует
0
Эксперт С++
2641 / 2212 / 331
Регистрация: 03.05.2011
Сообщений: 4,654
Записей в блоге: 17
13.02.2013, 18:37 4
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
using System;
 
class Program
{
    static void Main()
    {
        string animal = Console.ReadLine();
        switch (animal)
        {
            case "Змея": Console.WriteLine(2000);
                break;
 
            // тут оставшиеся case для всех животных
 
            default: Console.WriteLine("Вы ввели не верное животное.");
                break;
        }
        Console.ReadKey();
    }
}
1
0 / 0 / 0
Регистрация: 06.01.2013
Сообщений: 22
13.02.2013, 18:48  [ТС] 5
а если не один год а 15?в массив ввести года на каждое животное.но вопрос-как вывести все элемента массива разом?знаю как несколько,а чтобы все...нигде и не могу найти такое.
0
Эксперт С++
2641 / 2212 / 331
Регистрация: 03.05.2011
Сообщений: 4,654
Записей в блоге: 17
13.02.2013, 18:58 6
зачем массив? switch - case это перебор
C#
1
2
3
4
5
6
7
case "Змея": Console.WriteLine(2000);
    break;
case "Тигр": Console.WriteLine(/*какой-то год*/);
    break;
case "Дракон": Console.WriteLine(/*какой-то год*/);
    break;
// и т.д.
для вывода "по три в строке" используйте форматирование строки.
1
.NET ONLY
70 / 70 / 7
Регистрация: 05.10.2011
Сообщений: 495
13.02.2013, 18:59 7
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

Вот так вот как-то:
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
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Net;
using System.Threading;
using System.Web;
using System.IO;
using System.ComponentModel;
 
namespace CF_Examples
{
    class Program
    {
        static void Main(string[] args)
        {
            int k = 0;
            //Как-то получаем животное
            string animal = "Leopard";
 
            //Как-то получаем количество год
            int[] years = { 1990, 1993, 1994, 1996, 2001, 2003, 2005, 2007, 2009, 2013 };
    
            //По сколько год в ряд выводить
            System.Console.WriteLine("Посколько годов в строке выводить? По: ");
            int n = Convert.ToInt32(System.Console.ReadLine());
 
            System.Console.WriteLine("Год: " + animal);
 
            //Цикл для вывода
            for (int i=0; i<10; i=i+n)
            {
                for (int j=0; j<n; j++)
                {
                    if (k<10)
                    {
                        System.Console.Write("[" + years[k] + "] ");
                        k++;
                    }
                }
                System.Console.WriteLine("\n");
            }
            Console.ReadKey(true);
        }
    }
}
1
0 / 0 / 0
Регистрация: 06.01.2013
Сообщений: 22
13.02.2013, 19:03  [ТС] 8
спасибо большое!)буду разбираться
0
298 / 256 / 57
Регистрация: 11.06.2012
Сообщений: 1,557
13.02.2013, 19:08 9
Вот на мой взгляд подходящее решение. И более уместное чем предложенное выше.
C#
1
2
3
4
5
6
7
8
9
10
            var d = new Dictionary<string, List<int>>();
            // Тут заполняете словарь парами значение животного и список годов. Список годов лучше в цикле генерить
            d.Add("Змея", new List<int> {1989,2001,2013});
            Console.WriteLine("Введите животное:");
            var an = Console.ReadLine();
            var years = d.First(x => x.Key == an).Value;
            foreach (var r in years)
            {
                Console.WriteLine(r);
            }
1
0 / 0 / 0
Регистрация: 06.01.2013
Сообщений: 22
13.02.2013, 19:14  [ТС] 10
ого,спасибо!!!
0
Темная сторона .Net
590 / 487 / 39
Регистрация: 21.07.2012
Сообщений: 1,668
13.02.2013, 19:25 11
lyser-user, Где то-так. Еще несколько тестов с вашей стороны,но логика такая.
Кликните здесь для просмотра всего текста
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
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
 
namespace Years
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("Input Year");
            int year = int.Parse(Console.ReadLine());
            Console.WriteLine( ((YearName)(year % 12 -1)).ToString() );
 
            Console.ReadKey();
        }
    }
 
    enum YearName 
    {
        Snake,
        Horse,
        Bear,
        Beer,
        Digle,
        Monkey,
        Crocodile,
        Popodile,
        Snake1,
        Horse1,
        Bear1,
        Beer1,
        Snake2,
        Horse2,
        Bear2,
        Beer2
    }
}


Добавлено через 46 секунд
ай,в точности да наоборот сделал
1
0 / 0 / 0
Регистрация: 06.01.2013
Сообщений: 22
13.02.2013, 19:36  [ТС] 12
DEA7H, а вот вы написали
C++
1
System.Console.Write("[" + years[k] + "] ");
это вывод из одного массива?если да,то как быть если массивов много?
например
C#
1
2
3
int[] year1 = { 1888, 1900, 1912  };
int[] year3 = { 1890, 1902, 1914, 1926 };
int[] year2 = { 18890, 1962, 1974, 1986, 1998};
Добавлено через 1 минуту
Noob.net, спасибо наоборот это вполне понятно,делали так) а как по условию-что то напряг...))
0
Темная сторона .Net
590 / 487 / 39
Регистрация: 21.07.2012
Сообщений: 1,668
13.02.2013, 19:36 13
lyser-user, не нужно здесь массивов - все прекрасно одним циклом,перечислением и остатком от деления решается.
1
0 / 0 / 0
Регистрация: 06.01.2013
Сообщений: 22
13.02.2013, 19:39  [ТС] 14
Noob.net, а можно поподробнее?извините,никак не доходит...
0
Темная сторона .Net
590 / 487 / 39
Регистрация: 21.07.2012
Сообщений: 1,668
13.02.2013, 19:44 15
lyser-user, Надеюсь идея будет понятна,писал быстро,спешу на треню. Вечером могу дописать)
Введи например Snake. Еще с UpperCase можно поиграться //ToUpper
Кликните здесь для просмотра всего текста
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
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
 
namespace Years
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("Input Year");
            string yearName = Console.ReadLine();
            
            for (int i = 1910; i < 2050; i++) //год начала,год конца выводимых
            {
                if(i%12 -1 == (int)Enum.Parse(typeof(YearName),yearName))
                    Console.WriteLine(i);
            }
 
                Console.ReadKey();
        }
    }
 
    enum YearName 
    {
        Snake,
        Horse,
        Bear,
        Beer,
        Digle,
        Monkey,
        Crocodile,
        Popodile,
        Snake1,
        Horse1,
        Bear1,
        Beer1,
        Snake2,
        Horse2,
        Bear2,
        Beer2
    }
}
1
0 / 0 / 0
Регистрация: 06.01.2013
Сообщений: 22
13.02.2013, 21:15  [ТС] 16
Noob.net, спасибо,попробую разобраться.никогда просто такого не делали.туго доходит а разобраться то хочется

Добавлено через 1 час 27 минут
только вроде надо if ((i - 4) % 12 чтобы правильно вычислял года
0
Темная сторона .Net
590 / 487 / 39
Регистрация: 21.07.2012
Сообщений: 1,668
13.02.2013, 22:55 17
lyser-user, я искал остаток от деления на 12 потому что каждые 12 лет китайский или чей он там,год повторяется. То-есть 13 год = тоже что и 1 год.
Возможно я натупил с начальным и конечными годами, ну и еще порядок зверья нужно правильно написать.

А 1 отнимаем потому что перечисление enum начинается с 0 и заканчивается 11,а не с 1 и 12,хотя и это можно исправить.

Добавлено через 2 минуты
lyser-user, Я дам самое сложное задание самому ленивому сотруднику,потому что он найдет самый простой способ что бы решить это задание. (Билл Гейтс)
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
13.02.2013, 22:55

Восточный календарь
в восточном календаре принят 60=-летний цикл, состоящий из 12-летних подциклов, обозночаемых...

Восточный календарь
Нужна помощь,ну или кто может написать код программы,про Восточный календарь! Сам текст: В...

Восточный календарь
Составить программу, которая определяет, на какой год восточного календаря приходится какой – либо...

Восточный календарь
Точно помню, что эту прогу делали ещё в школе вместе с классом, но это было давно. Восточный...


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

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

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