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

Маленькая программа с сравнением

15.08.2020, 22:23. Показов 1604. Ответов 5

Студворк — интернет-сервис помощи студентам
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
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
 
namespace ConsoleApp96
{
    class Program
    {
        static void Main(string[] args)
        {
            string name1 = InputName();
            int years1 = InputYears();
 
            string name2 = InputName();
            int years2 = InputYears();
 
            PrintNameAndYears(name1, years1, 1);
            PrintNameAndYears(name2, years2, 2);
 
            string nameOld = "";
            if (years1 > years2)
                nameOld = name1;
            else if (years1 < years2)
                nameOld = name2;
            else
                nameOld = "нет";
            string name = "";
            while (name.Trim().Length == 0)
            {
                Console.Write("Введите имя старшего по возрасту, если старшего нет, введите - нет: ");
                name = Console.ReadLine();
            }
            if (name == nameOld)
                Console.WriteLine("Ответ правильный.");
            else
                Console.WriteLine("Ответ неправильный.");
            Console.Write("Старше {0}, разница в возрасте = {1} лет", nameOld, Math.Abs(years1 - years2));
            Console.Read();
        }
 
        static string InputName()
        {
            string s = "0123456789";
            string name = "";
 
            while (name.Trim().Length == 0 || name.ToCharArray().Intersect(s.ToCharArray()).Count() > 0 || name.Length < 3 || name.Length > 20)
 
            {
                Console.Write("Введите правильно имя: ");
                name = Console.ReadLine();
            }
            Console.WriteLine("Добро пожаловать, " + name + "!");
            return name;
        }
 
        static int InputYears()
        {
            while (true)
            {
                Console.WriteLine("Введите возраст  1-го пользователя");
                bool check = Int32.TryParse(Console.ReadLine(), out int a);
                if (check == false)
                    Console.WriteLine("Возраст не должен содержать буквы ");
                else if (a < 1 || a > 150)
                    Console.WriteLine("Вводите реальный возраст 1-150");
                else
                    return a;
            }
        }
 
        static void PrintNameAndYears(string name, int years, int count)
        {
            Console.WriteLine("Имя {0}-го человека - {1}", count, name);
            Console.WriteLine("Возраст {0}-го человека - {1}", count, years);
        }
    }
}




как можно в этот метод записать где код сравнивает имена Например Я ввел имя Воля и Павел и их возрасты и а в конце программа спрашивает кто старше и я ввожу 3 имя Тима и он должен говорить что не правильно введите имя которое вы ввели выше
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
15.08.2020, 22:23
Ответы с готовыми решениями:

Маленькая программа-сервер для отладки ASP
Кто-нибудь может подсказать маленькую прогу-сервак для отладки ASP?

Программа с массивом структур и сравнением
Доброе утро! Помогите пожалуйста написать код. Для экзамена нужен очень. Задача: Вася знает звездные величины нескольких ближайших звезд....

Маленькая программа
Всем привет. Ребята помогите пожалуйста в написании небольшой программки . Задание: Определить сумму чисел , которые больше 5 в...

5
7 / 5 / 2
Регистрация: 25.10.2019
Сообщений: 20
16.08.2020, 14:54
Не совсем понятно какой метод имеется ввиду и в целом вопрос поставлен не корректно, но если предположить что это имеется ввиду изменение кода в методе main то необходимо изменить код в цикле while:

C#
1
2
3
4
5
6
7
8
9
10
            while (true) //старое условие не совсем понятно зачем,
                              //по хорошему код нужно внести в отдельный метод
            {
                Console.Write("Введите имя старшего по возрасту, если старшего нет, введите - нет: ");
                name = Console.ReadLine();
                if(name == name1 || name == name2)
                    break;
                else
                    Console.WriteLine("Неправильно, вводите только имена которые вводили выше.");
            }
Для того чтобы оперативно получать ответ на свой вопрос пишите более точно:

Цитата Сообщение от Emin Посмотреть сообщение
как можно в этот метод
В какой метод?

Цитата Сообщение от Emin Посмотреть сообщение
Я ввел имя Воля и Павел и их возрасты и а в конце программа спрашивает кто старше и я ввожу 3 имя Тима и он должен говорить что не правильно введите имя которое вы ввели выше
Используйте хотя бы запятые и двоеточия чтобы другие хотя бы что то понять смогли.
1
0 / 0 / 0
Регистрация: 23.07.2020
Сообщений: 45
16.08.2020, 15:02  [ТС]
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
  static string InputName()
        {
            string s = "0123456789";
            string name = "";
 
            while (name.Trim().Length == 0 || name.ToCharArray().Intersect(s.ToCharArray()).Count() > 0 || name.Length < 3 || name.Length > 20)
 
            {
                Console.Write("Введите правильно имя: ");
                name = Console.ReadLine();
            }
            Console.WriteLine("Добро пожаловать, " + name + "!");
            return name;
        }

Спасибо большое а как можно тут сделать так чтобы, нельзя было вводить повторяющийся имена
0
7 / 5 / 2
Регистрация: 25.10.2019
Сообщений: 20
16.08.2020, 15:35
Цитата Сообщение от Emin Посмотреть сообщение
Спасибо большое а как можно тут сделать так чтобы, нельзя было вводить повторяющийся имена
У вас есть два способа:

1. Передавать имя в метод как аргумент:

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
        static string InputName(string first_name = "") //аргумент является первым именем введенным ранее,
            //если не передавать значением по умолчанию будет пустая строка
        {
            string s = "0123456789";
            string name = "";
 
            while (name.Trim().Length == 0 || name.ToCharArray().Intersect(s.ToCharArray()).Count() > 0 || name.Length < 3 || name.Length > 20)
            {
                Console.Write("Введите правильно имя: ");
                name = Console.ReadLine();
                if(name == first_name)
                {
                    Console.WriteLine("Повторяющиеся имена запрещены.");
                    return InputName(first_name);
                }
            }
 
            Console.WriteLine("Добро пожаловать, " + name + "!");
            return name;
        }
2. Модификатор public
(замените string name1 = InputName(); на public string name1 = InputName();, это сделает поле доступным на уровне класса)
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
        static string InputName()
        {
            string s = "0123456789";
            string name = "";
 
            while (name.Trim().Length == 0 || name.ToCharArray().Intersect(s.ToCharArray()).Count() > 0 || name.Length < 3 || name.Length > 20)
            {
                Console.Write("Введите правильно имя: ");
                name = Console.ReadLine();
                if(name == name1)
                {
                    Console.WriteLine("Повторяющиеся имена запрещены.");
                    return InputName();
                }
            }
 
            Console.WriteLine("Добро пожаловать, " + name + "!");
            return name;
        }
Добавлено через 3 минуты
А вообще совет, вам стоит изучить лучше типы данных и классы в C# чтобы не делать плохой код, писать свои классы и работать с уже существующими, в частности ваша программа совершенно не способна к расширению, если вам понадобится например сравнить 10 имен и выбрать наибольшее? Задумайтесь над этим вопросом.
1
0 / 0 / 0
Регистрация: 23.07.2020
Сообщений: 45
16.08.2020, 15:45  [ТС]
Цитата Сообщение от rockmaks_00 Посмотреть сообщение
Передавать имя в метод как аргумент:

а можете этот пункт обьеснить я вставил его в код но все равно можно писать одинаковые имена
Цитата Сообщение от rockmaks_00 Посмотреть сообщение
//аргумент является первым именем введенным ранее,
//если не передавать значением по умолчанию будет пустая строка
какой имено аргумент я просто новичок в этом а так без понятия не хочу копи пастить
0
7 / 5 / 2
Регистрация: 25.10.2019
Сообщений: 20
16.08.2020, 16:12
Лучший ответ Сообщение было отмечено Emin как решение

Решение

Цитата Сообщение от Emin Посмотреть сообщение
а можете этот пункт обьеснить я вставил его в код но все равно можно писать одинаковые имена
Вам необходимо в метод передавать имя с которым вы собираетесь сравнивать, тоесть:
C#
1
2
3
4
5
string name1 = InputName(); //тут вы первый раз вводите и т.к. вам сравнивать не с чем аргумент используется по умолчанию
int years1 = InputYears();
 
string name2 = InputName(name1); //тут вы уже имеете значение и передаете его в метод 
int years2 = InputYears();
Цитата Сообщение от Emin Посмотреть сообщение
какой имено аргумент я просто новичок в этом а так без понятия не хочу копи пастить
у вас есть метод который называется InputName(), если вы определяете его как static string InputName() то он не имеет аргументов, если как static string InputName(string first_name) то это метод с обязательным аргументом, если как static string InputName(string first_name = "") то это метод с аргументом по умолчанию (аргумент не обязательно передавать).
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
16.08.2020, 16:12
Помогаю со студенческими работами здесь

Не работает маленькая программа
Даны два целых числа a и b, которые могут быть положительными или отрицательными, найти сумму всех чисел, из которых они состоят, включая...

маленькая программа на пхп (PHP)
есть задача такая простенькая условия задачи внизу : &quot;Составить алгоритм и программу с графическим интерфейсом, которые находят...

Найдите ошибку (маленькая программа)
Program lab3; var i: integer; begin While true do Begin If i&lt;&gt;10 then Begin i:=i+1; End

Маленькая программа перевода чисел и подсчёта
Программа должна получиться не сложная, но проблема в том, что я начинающий пользователь Basic и не до конца знаю все команды. Именно по...

Маленькая программа, про удаление символов в тексте.
Дано предложение (любое, введенное с клавиатуры), удалить все символы &quot;О&quot; Заранее спасибо.


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
Уведомление о неверно выбранном значении справочника
Maks 06.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "НарядПутевка", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если в документе выбран неверный склад. . .
Установка Qt Creator для C и C++: ставим среду, CMake и MinGW без фреймворка Qt
8Observer8 05.04.2026
Среду разработки Qt Creator можно установить без фреймворка Qt. Есть отдельный репозиторий для этой среды: https:/ / github. com/ qt-creator/ qt-creator, где можно скачать установщик, на вкладке Releases:. . .
AkelPad-скрипты, структуры, и немного лирики..
testuser2 05.04.2026
Такая программа, как AkelPad существует уже давно, и также давно существуют скрипты под нее. Тем не менее, прога живет, периодически что-то не спеша дополняется, улучшается. Что меня в первую очередь. . .
Отображение реквизитов в документе по условию и контроль их заполнения
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеСпецтехники", разработанного в конфигурации КА2. Данный документ берёт данные из другого нетипового документа. . .
Фото всей Земли с борта корабля Orion миссии Artemis II
kumehtar 04.04.2026
Это первое подобное фото сделанное человеком за 50 лет. Снимок называют новым вариантом легендарной фотографии «The Blue Marble» 1972 года, сделанной с борта корабля «Аполлон-17». Новое фото. . .
Вывод диалогового окна перед закрытием, если документ не проведён
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать программный контроль на предмет проведения документа. . .
Программный контроль заполнения реквизитов табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: 1. Реализовать контроль заполнения реквизита. . .
wmic не является внутренней или внешней командой
Maks 02.04.2026
Решение: DISM / Online / Add-Capability / CapabilityName:WMIC~~~~ Отсюда: https:/ / winitpro. ru/ index. php/ 2025/ 02/ 14/ komanda-wmic-ne-naydena/
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru