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

Определить, являются ли числа "тройкой Пифагора"

07.02.2020, 21:59. Показов 5216. Ответов 18
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
На языке программирования C# написать программу с консольным интерфейсом. Результат
работы программы должен соответствовать показанному в примере.

1) Ввести с клавиатуры три целых числа (a, b, c).
2) Определить, являются ли они тройкой Пифагора (с2 = а2 + b2 или а2=b22 или b222).
3) В случае некорректного ввода принять число равным 0.
4) Ответ вывести в виде сообщения. Выделить значения цветами, как показано в примере.

Пример.
Введите три целых числа a, b, c:
a: 3
b: 5
c: 4
Числа 3, 5, 4 являются тройкой Пифагора. Так как 32+42=52 (25 = 25).
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
07.02.2020, 21:59
Ответы с готовыми решениями:

Определить, являются ли числа тройкой Пифагора
Доброго времени суток, формучане. Помогите, пожалуйста, с заданиями: 1. Ввести с клавиатуры три целых числа (a, b, c). Определить,...

Определить, являются ли введенные пользователем числа тройкой Пифагора
Ввести с клавиатуры три целых числа (a, b, c). Определить, являются ли они тройкой Пифагора (с2 = а2 + в2).

Для трех данных целых чисел проверить, являются ли они тройкой Пифагора
Для трех данных целых чисел проверить, являются ли они тройкой Пифагора.

18
9 / 5 / 4
Регистрация: 09.01.2020
Сообщений: 66
08.02.2020, 09:19
По цветам так и не понял. Поэтому и не делал

UPD: вышло не оч по коду, но зато все работает


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
static void Main(string[] args)
{
            Console.Write("Введите целое число 'a': ");
            int a = CheckedValue(Console.ReadLine());
            Console.Write("Введите целое число 'b': ");
            int b = CheckedValue(Console.ReadLine());
            Console.Write("Введите целое число 'c': ");
            int c = CheckedValue(Console.ReadLine());
 
            if (IsGood(a, b, c) && (a + b + c) != 0)
            {
                Console.WriteLine();
                Console.WriteLine("Числа {0}, {1}, {2} являются тройкой Пифагора. Так как:", a, b, c);
                IsGoodMessage(a, b, c);
            }
            else
                Console.WriteLine("Числа {0}, {1}, {2} не являются тройкой Пифагора.", a, b, c);
 
 
            Console.ReadLine();
 
}
 
public static bool IsGood(int a, int b, int c)
{
            bool isResult = false;
 
            if (Math.Pow(c, 2) == (Math.Pow(a, 2) + Math.Pow(b, 2)) ||
                Math.Pow(a, 2) == (Math.Pow(b, 2) + Math.Pow(c, 2)) ||
                Math.Pow(b, 2) == (Math.Pow(a, 2) + Math.Pow(c, 2)))
                isResult = true;
 
            return isResult;
}
 
public static void IsGoodMessage(int a, int b, int c)
{
            if (Math.Pow(c, 2) == (Math.Pow(a, 2) + Math.Pow(b, 2)))
                Console.WriteLine("{0}^2 = {1}^2 + {2}^2 ({3} = {4})", c, a, b, (Math.Pow(c, 2)), (Math.Pow(a, 2) + Math.Pow(b, 2)));
            else if (Math.Pow(a, 2) == (Math.Pow(b, 2) + Math.Pow(c, 2)))
                Console.WriteLine("{0}^2 = {1}^2 + {2}^2 ({3} = {4})", a, b, c, (Math.Pow(a, 2)), (Math.Pow(b, 2) + Math.Pow(c, 2)));
            else
                Console.WriteLine("{0}^2 = {1}^2 + {2}^2 ({3} = {4})", b, a, c, (Math.Pow(b, 2)), (Math.Pow(a, 2) + Math.Pow(c, 2)));
        }
 
        public static int CheckedValue(string value)
        {
            int isResult = 0;
            try
            {
                isResult = Convert.ToInt32(value);
            }
            catch
            {
                
            }
 
            return isResult;
}
0
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16140 / 11264 / 2888
Регистрация: 21.04.2018
Сообщений: 33,111
Записей в блоге: 2
08.02.2020, 10:48
Pvhz_
C#
24
25
26
27
28
29
30
31
        public static bool IsGood(int a, int b, int c)
        {
            bool isResult = false;
            int[] arr = { a, b, c };
            Array.Sort(arr);
 
            return Math.Pow(arr[2], 2) == (Math.Pow(arr[1], 2) + Math.Pow(arr[2], 2));
        }
Добавлено через 6 минут
C#
36
37
38
39
40
41
42
43
        public static void IsGoodMessage(int a, int b, int c)
        {
            int[] arr = { a, b, c };
            Array.Sort(arr);
 
            if (IsGood(a,b,c))
            Console.WriteLine("{0}^2 = {1}^2 + {2}^2 ({3} = {4})", arr[2], arr[0], arr[1], (Math.Pow(arr[2], 2)), (Math.Pow(arr[0], 2) + Math.Pow(arr[1], 2)));
        }
Добавлено через 30 секунд
C#
46
47
48
49
50
51
52
        public static int CheckedValue(string value)
        {
            if (int.TryParse(value, out int isResult))
                return isResult;
 
            return 0;
        }
Добавлено через 13 минут
Цитата Сообщение от 4elove4 Посмотреть сообщение
1) Ввести с клавиатуры три целых числа (a, b, c).
2) Определить, являются ли они тройкой Пифагора (с2 = а2 + b2 или а2=b2+с2 или b2=а2+с2).
3) В случае некорректного ввода принять число равным 0.
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
    class Program
    {
        static void Main(string[] args)
        {
 
            int[] numbers = new int[3];
 
            Console.Write("Введите целое число 'a': ");
            numbers[0] = int.TryParse(Console.ReadLine(), out int num) ? num : 0;
            Console.Write("Введите целое число 'b': ");
            numbers[1] = int.TryParse(Console.ReadLine(), out num) ? num : 0;
            Console.Write("Введите целое число 'c': ");
            numbers[2] = int.TryParse(Console.ReadLine(), out num) ? num : 0;
            Console.WriteLine();
 
            Array.Sort(numbers);
 
            if (Math.Pow(numbers[2], 2) == (Math.Pow(numbers[0], 2) + Math.Pow(numbers[1], 2)))
                Console.WriteLine("Числа {0}, {1}, {2} являются тройкой Пифагора. Так как: {0}^2 + {1}^2 = {2}^2", 
                    numbers[0], numbers[1], numbers[2]);
            else
                Console.WriteLine("Числа {0}, {1}, {2} не являются тройкой Пифагора.",
                    numbers[0], numbers[1], numbers[2]);
 
 
            Console.ReadLine();
Цитата Сообщение от 4elove4 Посмотреть сообщение
4) Ответ вывести в виде сообщения. Выделить значения цветами, как показано в примере.
Где пример?

Добавлено через 1 минуту
И нет проверки на положительность чисел.
Подразумевается , что вводится отрицательные числа не будут.
0
Заблокирован
08.02.2020, 10:58
Цитата Сообщение от Элд Хасп Посмотреть сообщение
numbers[0] = int.TryParse
в какой версии C# TryParse возвращает числа?
0
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16140 / 11264 / 2888
Регистрация: 21.04.2018
Сообщений: 33,111
Записей в блоге: 2
08.02.2020, 11:02
Цитата Сообщение от Holiday13 Посмотреть сообщение
в какой версии C# TryParse возвращает числа?
В той где есть тернарный оператор
numbers[0] = int.TryParse(Console.ReadLine(), out int num) ? num : 0;
0
9 / 5 / 4
Регистрация: 09.01.2020
Сообщений: 66
08.02.2020, 11:29
Элд Хасп

Зачем ты сделал акцент на мой код?
Специально для тебя написал же UPD.

Цитата Сообщение от Элд Хасп Посмотреть сообщение
И нет проверки на положительность чисел.
Подразумевается , что вводится отрицательные числа не будут.
Если будет ввод отрицательных чисел, на выходе они все равно будут положительными.. лол
0
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16140 / 11264 / 2888
Регистрация: 21.04.2018
Сообщений: 33,111
Записей в блоге: 2
08.02.2020, 11:47
Цитата Сообщение от Pvhz_ Посмотреть сообщение
Зачем ты сделал акцент на мой код?
А в теме были ещё другие коды?

Добавлено через 1 минуту
Цитата Сообщение от Pvhz_ Посмотреть сообщение
Если будет ввод отрицательных чисел, на выходе они все равно будут положительными.. лол
Но сортировка сработает не правильно.
Для отрицательных чисел большее, то которое меньше по модулю.
Если на входе могут быть отрицательные числа, то сортировать надо по модулю, а не по значению.

Добавлено через 4 минуты
4elove4, Pvhz_, здесь просто несколько противоречивое задание.
Тройка Пифагара по ОПРЕДЕЛЕНИЮ состоит из НАТУРАЛЬНЫХ чисел.
А в задаче написано 1) Ввести с клавиатуры три ЦЕЛЫХ числа.
А целое число не обязательно натуральное.
Это неправильная формулировка задачи или надо учитывать возможность ввода ненатуральных чисел?
0
Заблокирован
08.02.2020, 11:56
Цитата Сообщение от Элд Хасп Посмотреть сообщение
где есть тернарный оператор
упс, проглядел, почему не:
C#
1
int.TryParse(Console.ReadLine(), out numbers[i]);//?
0
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16140 / 11264 / 2888
Регистрация: 21.04.2018
Сообщений: 33,111
Записей в блоге: 2
08.02.2020, 12:19
Цитата Сообщение от Holiday13 Посмотреть сообщение
почему не:....
Потому, что методы TryParse возвращает булевое значение. Его надо проверить тернарным оператором и вернуть разные значения в зависимости от результатов проверки.
Если значение корректно, то вернуть второй параметр TryParse.
Если не корректно - вернуть ноль.

Это условия задачи.
0
Заблокирован
08.02.2020, 12:21
Цитата Сообщение от Элд Хасп Посмотреть сообщение
Если не корректно - вернуть ноль
TryParse этим и занимается
0
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16140 / 11264 / 2888
Регистрация: 21.04.2018
Сообщений: 33,111
Записей в блоге: 2
08.02.2020, 12:27
Цитата Сообщение от Holiday13 Посмотреть сообщение
TryParse этим и занимается
Да.
Но TryParse возвращает ДВА значения.
А переменной int мы можем присвоить только одно значение, которое TryParse возвращает в своём параметре.
И присваивать его или нуль надо в зависимости от значения возвращаемого самим методом TryParse.

Добавлено через 1 минуту
Сам метод TryParse возвращает false или true, а не int значение.
0
Заблокирован
08.02.2020, 12:34
ну и каша....
C#
1
2
3
4
5
6
        int[] numbers = new int[3];
        for (int i = 0; i < 3; i++)
        {
            Console.Write("Введите целое число '{0}': ", (char)(i + 'a'));
            int.TryParse(Console.ReadLine(), out numbers[i]);
        }
1
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16140 / 11264 / 2888
Регистрация: 21.04.2018
Сообщений: 33,111
Записей в блоге: 2
08.02.2020, 12:53
Цитата Сообщение от Holiday13 Посмотреть сообщение
int.TryParse(Console.ReadLine(), out numbers[i]);
Цикл вместо отдельных вводов в данном случае одобряю.
Если названия переменных идёт по алфавиту или как-то иначе упорядочено, то так лучше сделать.

А вот присваивание элементу массива неинициализированного значения, которое возвращает TryParse в случае ошибки - однозначно НЕТ!
В данной реализации и версии Net неиницилизированное значение возвращаемое int.TryParse равно нуль.
Но это недокументированное поведение. И может быть изменено в любой момент.
В C# по документации ВСЕГДА надо инициализировать переменные.
0
9 / 5 / 4
Регистрация: 09.01.2020
Сообщений: 66
08.02.2020, 13:02
Бот не реагирует на сообщения

Раз такой умный, помоги с этим.
UPD: устройся на нормальную работу.
0
 Аватар для Toros1992
899 / 554 / 275
Регистрация: 26.11.2015
Сообщений: 1,758
Записей в блоге: 2
08.02.2020, 15:39
Элд Хасп, во-первых, элементы массива инициализируются при его создании, а во-вторых, возвращение нуля как раз таки прекрасно задукоментировано
0
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16140 / 11264 / 2888
Регистрация: 21.04.2018
Сообщений: 33,111
Записей в блоге: 2
08.02.2020, 15:49
Цитата Сообщение от Toros1992 Посмотреть сообщение
возвращение нуля как раз таки прекрасно задукоментировано
Может я неправильно понимаю смысл написанного
result Int32
.... Преобразование не выполняется , если s параметр null или пустой , не правильного формата, или представляет собой число меньше , чем MinValue или больше MaxValue . Этот параметр передается неинициализированным; Любое значение, изначально введенное в, result будет перезаписано.
Что записано в массиве до этого не имеет значения. В любом случае элемент массива будет перезаписан.

В случае ошибки будет записан не ноль, а неинициализированным значение.
0
 Аватар для Toros1992
899 / 554 / 275
Регистрация: 26.11.2015
Сообщений: 1,758
Записей в блоге: 2
08.02.2020, 15:54
Элд Хасп, чуть выше прочитайте
result
Int32
При возвращении этим методом содержит 32-разрядное целочисленное значение со знаком, эквивалентное числу, содержащемуся в параметре s, если преобразование выполнено успешно, или нуль, если оно завершилось сбоем.
В out параметр невозможно записать что-то неинициализировангое. Это немного противоречит здравому смыслу и правилам языка, по которым параметр, помеченный out обязан получить какое либо значение до выхода из метода
1
3566 / 2507 / 1174
Регистрация: 14.08.2016
Сообщений: 8,219
08.02.2020, 15:56
Элд Хасп,
C#
1
2
            int.TryParse("abc", out int result);
            Console.WriteLine(result); // 0
видимо имелось ввиду дефолтное, а не неинициализированное значение
1
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16140 / 11264 / 2888
Регистрация: 21.04.2018
Сообщений: 33,111
Записей в блоге: 2
08.02.2020, 16:26
Toros1992, Diamante, вопрос снят - был не прав!
Я как-то изначально понял по своему документацию, а глубоко с эти не разбирался.
Думал это очевидно.

В исходниках присваивается именно "0".
https://referencesource.micros... 926efd5fd3
C#
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
1097
1098
1099
1100
1101
1102
        [System.Security.SecuritySafeCritical]  // auto-generated
        internal unsafe static Boolean TryParseInt32(String s, NumberStyles style, NumberFormatInfo info, out Int32 result) {
 
            Byte * numberBufferBytes = stackalloc Byte[NumberBuffer.NumberBufferBytes];
            NumberBuffer number = new NumberBuffer(numberBufferBytes);
            result = 0;
    
            if (!TryStringToNumber(s, style, ref number, info, false)) {
                return false;
            }
 
            if ((style & NumberStyles.AllowHexSpecifier) != 0) {
                if (!HexNumberToInt32(ref number, ref result)) { 
                    return false;
                }
            }
            else {
                if (!NumberToInt32(ref number, ref result)) {
                    return false;
                }
            }
            return true;           
        }
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
08.02.2020, 16:26
Помогаю со студенческими работами здесь

С++ Для трех данных целых чисел проверить, являются ли они тройкой Пифагора
#include &lt;iostream&gt; #include &lt;conio.h&gt; #include &lt;stdio.h&gt; using namespace std; int main () { int x,y,z; ...

Определить, что заданная тройка натуральных чисел a, b, c является тройкой Пифагора
Определить, что заданная тройка натуральных чисел a, b, c является тройкой Пифагора, т.е c2=a2+b2

Установить, являются ли три введённых числа пифагоровой тройкой
Установить, являются ли три введённых числа пифагоровой тройкой, т.е. sqr(a)+sqr(b)=sqr(c) Заранее спасибо! :)

Данная тройка натуральных чисел а, b, с является тройкой Пифагора
Данная тройка натуральных чисел а, b, с является тройкой Пифагора, т.е. c2 = a2 + b2.

Данная тройка натуральных чисел а, b, с является тройкой Пифагора, т.е. с^2= а ^2+ b ^2
не могу понять, можете помочь, желательно с объяснениями Составить программу, печатающую значение true, если высказывание вашего...


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

Или воспользуйтесь поиском по форуму:
19
Ответ Создать тему
Новые блоги и статьи
Сумматор с применением элементов трёх состояний.
Hrethgir 26.03.2026
Тут. https:/ / fips. ru/ EGD/ ab3c85c8-836d-4866-871b-c2f0c5d77fbc Первый документ красиво выглядит, но без схемы. Это конечно не даёт никаких плюсов автору, но тем не менее. . . всё может быть. . .
Автозаполнение реквизитов при создании документа
Maks 26.03.2026
Код из решения ниже размещается в модуле объекта документа, в процедуре "ПриСозданииНаСервере". Алгоритм проверки заполнения реализован для исключения перезаписи значения реквизита, которое может. . .
Команды "Заполнить" и "Очистить" на форме документа
Maks 26.03.2026
1. Команда формы "ЗаполнитьЗапчасти". На примере нетипового документа разработанного в конфигурации КА2. В качестве источника данных указан регистр накопления, в который записываются данные о. . .
Кому нужен AOT?
DevAlt 26.03.2026
Решил сделать простой ланчер Написал заготовку: dotnet new console --aot -o UrlHandler var items = args. Split(":"); var tag = items; var id = items; var executable = args;. . .
Отправка уведомления на почту при изменении наименования справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере изменения наименования типового справочника "Склады" в конфигурации БП3. Перед реализацией необходимо выполнить настройку системной учетной. . .
модель ЗдравоСохранения 5. Меньше увольнений- больше дохода!
anaschu 24.03.2026
Теперь система здравосохранения уменьшает количество увольнений. 9TO2GP2bpX4 a42b81fb172ffc12ca589c7898261ccb/ https:/ / rutube. ru/ video/ a42b81fb172ffc12ca589c7898261ccb/ Слева синяя линия -. . .
Midnight Chicago Blues
kumehtar 24.03.2026
Такой Midnight Chicago Blues, знаешь?. . Когда вечерние улицы становятся ночными, а ты не можешь уснуть. Ты идёшь в любимый старый бар, и бармен наливает тебе виски. Ты смотришь на пролетающие. . .
SDL3 для Desktop (MinGW): Вывод текста со шрифтом TTF с помощью библиотеки SDL3_ttf на Си и C++
8Observer8 24.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-text-sdl3-c. zip finish-text-sdl3-cpp. zip
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru