Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.94/64: Рейтинг темы: голосов - 64, средняя оценка - 4.94
4 / 4 / 0
Регистрация: 29.08.2013
Сообщений: 58

Для целого числа и от 1 до 99 напечатать фразу «Мне k лет»

23.12.2013, 03:04. Показов 13466. Ответов 11
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Чтобы было понятнее напишу задание:
Для целого числа и от 1 до 99 напечатать фразу «Мне k лет», учитывая при этом, что при некоторых значениях k слово «лет» надо заменить на слово «год» или «года». Например, 11 лет, 22 года, 51 год.
Мой "код":
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
namespace ConsoleApplication38
{
    class Program
    {
        static void Main(string[] args)
        {
            int k, swit;
            Console.Write("Сколько вам лет? ");//Вводим значение возраста
            k = Convert.ToInt32(Console.ReadLine());
            swit = Convert.ToInt32(Console.ReadLine());
            switch (Convert.ToInt32(swit))
            {
                case 1:
                    if ((k>=5 && k<=20) || (k>=25 && k<=30) || (k>=35 && k<=40) || (k>=45 && k<=50) || (k>=55 && k<=60) || (k>=65 && k<=70) || (k>=75 && k<=80) || (k>=85 && k<=90) || (k>=95 && k<=99))
                    Console.WriteLine("Мне" + k + "лет");
                    break;
                case 2:
                    if (k == 1 || k == 21 || k == 31 || k == 41 || k == 51 || k == 61 || k == 71 || k == 81 || k == 91)
                        Console.WriteLine("Мне" + k + "год");
                    break;
                case 3:
                    if ((k >= 2 && k <= 4) || (k >= 22 && k <= 24) || (k >= 32 && k <= 34) || (k >= 42 && k <= 44) || (k >= 52 && k <= 54) || (k >= 62 && k <= 64) || (k >= 72 && k <= 74) || (k >= 82 && k <= 84) || (k >= 92 && k <= 94))
                        Console.WriteLine("Мне" + k + "года");
                        break;
                default:
                    Console.WriteLine("Ошибка ввода");
                    break;
            }
            Console.ReadKey();
            }
        }
    }
1
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
23.12.2013, 03:04
Ответы с готовыми решениями:

Для целого числа k от 1 до 99 вывести фразу «Мне k лет»
Для целого числа k от 1 до 99 вывести фразу «Мне k лет», учитывая при этом, что при некоторых значениях k слово лет надо заменить словом...

Для целого числа К от 1 до 99 напечатать фразу “мне К лет”
1. Для целого числа К от 1 до 99 напечатать фразу “мне К лет”, учитывая при этом, что при некоторых значениях, К слово “лет” надо заменить...

Для целого числа R (1…99) напечатать фразу « Мне R лет »
Для целого числа R (1…99) напечатать фразу « Мне R лет », при некоторых значениях R слово «лет» заменить словом «год» или «года».

11
 Аватар для BigOblom
124 / 124 / 17
Регистрация: 30.06.2010
Сообщений: 478
23.12.2013, 08:53
ElJorike, а зачем switch?
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
            Console.WriteLine("Сколько вам лет? Введите целое число от 1 до 99"); //Вводим значение возраста
            int k = Convert.ToInt32(Console.ReadLine());
            if (k > 0 && k < 99)
            {
                if ((k >= 5 && k <= 20) || (k >= 25 && k <= 30) || (k >= 35 && k <= 40) || (k >= 45 && k <= 50) ||
                        (k >= 55 && k <= 60) || (k >= 65 && k <= 70) || (k >= 75 && k <= 80) || (k >= 85 && k <= 90) ||
                        (k >= 95 && k <= 99))
                    Console.WriteLine("Мне " + k + " лет");
 
                if (k == 1 || k == 21 || k == 31 || k == 41 || k == 51 || k == 61 || k == 71 || k == 81 || k == 91)
                    Console.WriteLine("Мне " + k + " год");
 
                if ((k >= 2 && k <= 4) || (k >= 22 && k <= 24) || (k >= 32 && k <= 34) || (k >= 42 && k <= 44) ||
                    (k >= 52 && k <= 54) || (k >= 62 && k <= 64) || (k >= 72 && k <= 74) || (k >= 82 && k <= 84) ||
                    (k >= 92 && k <= 94))
                    Console.WriteLine("Мне " + k + " года");
            }
            else
            {
                Console.WriteLine("Ошибка ввода");
            }
            Console.ReadKey();
1
 Аватар для nio
6050 / 3460 / 336
Регистрация: 14.06.2009
Сообщений: 8,136
Записей в блоге: 2
23.12.2013, 10:18
китайский код....

так вроде бы проще
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
            Console.WriteLine("Сколько вам лет? Введите целое число от 1 до 99"); //Вводим значение возраста
            int k = Convert.ToInt32(Console.ReadLine());
            if (k > 0 && k < 99)
            {
                int x = k % 10;
                string s = "";
                if ((x == 1)||!(k >= 5 && k <= 20)) s = "год";
                if ((x > 1 && x < 5)||!(k >= 5 && k <= 20)) s = "года";
                if ((x > 4 && x <= 9) || (k >= 5 && k <= 20)  || x == 0) s = "лет";
                Console.WriteLine("Мне {0} {1}", k, s);
            }
            else
            {
                Console.WriteLine("Ошибка ввода");
            }
1
23.12.2013, 10:22

Не по теме:

nio, индусский)

0
Эксперт .NET
 Аватар для kolorotur
17823 / 12973 / 3382
Регистрация: 17.09.2011
Сообщений: 21,261
23.12.2013, 11:42
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

Цитата Сообщение от nio Посмотреть сообщение
C#
1
2
3
4
5
6
                int x = k % 10;
                string s = "";
                if ((x == 1)||!(k >= 5 && k <= 20)) s = "год";
                if ((x > 1 && x < 5)||!(k >= 5 && k <= 20)) s = "года";
                if ((x > 4 && x <= 9) || (k >= 5 && k <= 20)  || x == 0) s = "лет";
                Console.WriteLine("Мне {0} {1}", k, s);
"Мнэ 41 года, слющий"

Как вариант:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
        if (k > 0 && k < 99)
        {
            string s;
            if (k > 10 && k < 15) s = "лет";
            else
            {
                int x = k % 10;
                if (x == 1) s = "год";
                else if (x < 5) s = "года";
                else s = "лет";
            }
            Console.WriteLine("Мне {0} {1}", k, s);
        }
1
 Аватар для nio
6050 / 3460 / 336
Регистрация: 14.06.2009
Сообщений: 8,136
Записей в блоге: 2
23.12.2013, 12:05
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

Цитата Сообщение от kolorotur Посмотреть сообщение
"Мнэ 41 года, слющий"
Вот блин, не подумал про нахлёст, и при тестировании числа вводил, что ни разу не попал...
тогда так

C#
1
2
3
4
5
6
7
8
9
10
                string s = "";
                if (k > 10 && k < 20) s = "лет";
                else
                {
                    int x = k % 10;
                    if ((x == 1)) s = "год";
                    if ((x > 1 && x < 5)) s = "года";
                    if ((x > 4 && x <= 9) || x == 0) s = "лет";
                }
                Console.WriteLine("Мне {0} {1}", k, s);
так даже красивше и проще
0
Сгибальщик
 Аватар для Бендерродригез
42 / 42 / 4
Регистрация: 18.05.2013
Сообщений: 220
23.12.2013, 13:31
Цитата Сообщение от kolorotur Посмотреть сообщение
"Мнэ 41 года, слющий"

Как вариант:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
        if (k > 0 && k < 99)
        {
            string s;
            if (k > 10 && k < 15) s = "лет";
            else
            {
                int x = k % 10;
                if (x == 1) s = "год";
                else if (x < 5) s = "года";
                else s = "лет";
            }
            Console.WriteLine("Мне {0} {1}", k, s);
        }
"Мне 11 год."
0
Эксперт .NET
 Аватар для kolorotur
17823 / 12973 / 3382
Регистрация: 17.09.2011
Сообщений: 21,261
23.12.2013, 14:42
Цитата Сообщение от Бендерродригез Посмотреть сообщение
Мне 11 год.
Вы проверяли или "на глаз" определили?
Так как этот случай проверяется в четвертой строке.
0
For i:=0 to 150 do
 Аватар для El41
225 / 105 / 108
Регистрация: 05.01.2012
Сообщений: 287
23.12.2013, 14:59
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
int n,rest,restD;
 
            Console.WriteLine("Введите возраст человека");
            n = System.Convert.ToInt16(Console.ReadLine());
            rest = n % 10;
            restD = n % 100;
 
            if ((restD < 11 || restD >= 19))
                if (rest == 1)
                    Console.WriteLine("Возраст человека {0} год", n);
                else if (rest >= 2 && rest <= 4)
                    Console.WriteLine("Возраст человека {0} года", n);
                else Console.WriteLine("Возраст человека {0} лет", n);
            else Console.WriteLine("Возраст человека {0} лет", n);
 
          
 
            Console.ReadLine();
0
4 / 4 / 0
Регистрация: 29.08.2013
Сообщений: 58
23.12.2013, 18:51  [ТС]
Так все же, как изменить код, используя оператор выбора switch, чтобы он работал.
0
 Аватар для BigOblom
124 / 124 / 17
Регистрация: 30.06.2010
Сообщений: 478
23.12.2013, 21:04
ElJorike, switch тут явно не подойдет.
0
 Аватар для memphis
740 / 284 / 83
Регистрация: 12.12.2012
Сообщений: 564
23.12.2013, 22:53
ElJorike, ну если очень нужен switch...
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
using System;
 
namespace Console1
{
    class Program
    {
        static string GetAgePhrase(int age)
        {
            int tmp = Math.Abs(age);
            int r = tmp % 10;
 
            if (tmp > 4 && tmp < 21)
                r = 0;
            else
                r = (r == 0 || (r >= 5 && r <= 9)) ? 0 : r > 1 ? 2 : 1;
 
            string word = "";
            switch (r)
            {
                case 0: word = "лет"; break;
                case 1: word = "год"; break;
                case 2: word = "года"; break;
            }
 
            return string.Format("{0} {1}", age, word);
        }
 
 
        static void Main()
        {
            for (int i = -30; i <= 105; Console.WriteLine(GetAgePhrase(i++)));
        }
    }
}
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
23.12.2013, 22:53
Помогаю со студенческими работами здесь

Для целого числа и от 1 до 99 напечатать фразу «Мне k лет»
Для целого числа и от 1 до 99 напечатать фразу «Мне k лет», учитывая при этом, что при некоторых значениях k слово «лет» надо заменить на...

Для целого числа k от 1 до 99 напечатать фразу «Мне k лет»
Помогите пожалуйста составить блок схему, заранее благодарен. Для целого числа k от 1 до 99 напечатать фразу «Мне k лет», учитывая при...

Для целого числа А от 1 до 99 напечатать фразу «Мне k лет»
. Для целого числа А: от 1 до 99 напечатать фразу «Мне k лет», учитывая при этом, что при некоторых значениях k слово «лет» надо заменить...

Для целого числа напечатать фразу «Мне k лет»
Помогите: Составьте программу, которая для целого числа k (от 1 до 99), введенного вами, напечатает фразу «Мне k лет», при этом в нужных...

Для целого числа К от 1 до 99 напечатать фразу “мне К лет”
Для целого числа К от 1 до 99 напечатать фразу “мне К лет”, учитывая при этом, что при некоторых значениях, К слово “лет” надо заменить на...


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

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Логарифм записывается как: (x-2)log(x^2+2) - означает логарифм (x^2+2) по основанию (x-2). Унарный минус обозначается как ! в-строка - входное арифметическое выражение в инфиксной(обычной). . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru