Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/5: Рейтинг темы: голосов - 5, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 26.03.2019
Сообщений: 28
1

Написать функцию, которая вычисляет НОД n чисел

23.11.2019, 17:46. Показов 913. Ответов 1

Здравствуйте, уважаемые программисты!
Понадобилось мне написать функцию, которая вычисляет НОД n чисел, и у меня возникла достаточно необычная проблема: при n=2 поле для ввода чисел появлялось 4 раза, при n=3 - 6, при n=4 - 8, а при n>=5 - вообще почему-то 3, причем после этого программа зависла. Сталкиваться с таким мне еще не приходилось, поэтому, не могли бы вы подсказать, в чем заключается причина данного явления? Буду очень вам признателен!
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
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
 
namespace GCD
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
 
        uint GreatestCommonDivisor(uint n)
        {
            if (n > 1)
            {
                uint a = uint.Parse(Microsoft.VisualBasic.Interaction.InputBox(""));
                uint b = uint.Parse(Microsoft.VisualBasic.Interaction.InputBox(""));
                uint GCD = 0;
                if (a != b)
                {
                    while (a != 0 && b != 0)
                    {
                        if (a > b)
                        {
                            a %= b;
                            if (a == 0) GCD = b;
                        }
                        else
                        {
                            b %= a;
                            if (b == 0) GCD = a;
                        }
                    }
                }
                else GCD = a;
                for (uint i = 0; i < n - 2; i++)
                {
                        a = uint.Parse(Microsoft.VisualBasic.Interaction.InputBox(""));
                        while (a != 0 && GCD != 0)
                        {
                            if (a > GCD) a %= GCD;
                            else
                            {
                                GCD %= a;
                                if (GCD == 0) GCD = a;
                            }
                        }
                }
                return GCD;
            }
            else return 0;
        }
 
        private void button1_Click(object sender, EventArgs e)
        {
            uint n = uint.Parse(textBox1.Text);
            if (GreatestCommonDivisor(n) == 0) textBox2.Text="The amount of numbers is not valid.";
            else textBox2.Text = GreatestCommonDivisor(n).ToString();
        }
 
        private void button2_Click(object sender, EventArgs e)
        {
            Application.Exit();
        }
    }
}
__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
23.11.2019, 17:46
Ответы с готовыми решениями:

Написать функцию, которая вычисляет частное от деления двух чисел
1.1 Написать функцию, которая вычисляет частное от деления двух чисел. 1.2 Выполнить перегрузку...

Написать функцию, которая вычисляет значение "а" в степени "b"
1.1 Написать функцию, которая вычисляет значение &quot;а&quot; в степени &quot;b&quot;, где a и b –функции....

Написать функцию, которая возвращает максимальное из двух целых чисел...
1.1 Написать функцию, которая возвращает максимальное из двух целых чисел, полученных в качестве...

Написать программу, которая введенному значению аргумента вычисляет значение функции, заданной в виде графика
Народ помогите пожалуйста, у меня ни как не получается. Написать программу в Win Froms в С#,...

1
3130 / 2223 / 1098
Регистрация: 14.08.2016
Сообщений: 7,606
25.11.2019, 17:43 2
Brother Ray, в самом методе 2 раза вызывается на 24,25, потом еще в цикле на 46 при n>=3
метод же вызывается на 65 и на 66, итого 2*2 для n<3, 2*3 для n=3,2*4 при n=4
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
25.11.2019, 17:43

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

Написать функцию, которая вычисляет минимум из четырех чисел. Использовать функцию min
package com.javarush.test.level02.lesson08.task04; public class Solution { public static...

Написать функцию, которая вычисляет максимальное из трех чисел
В С++ написать функцию, которая вычисляет максимальное из трех чисел :) плиз...

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


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

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

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