Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/4: Рейтинг темы: голосов - 4, средняя оценка - 5.00
1 / 1 / 0
Регистрация: 30.03.2015
Сообщений: 8
1

Баг цикла в подсчете количества итераций для палиндромов

08.08.2016, 20:58. Показов 819. Ответов 1

Author24 — интернет-сервис помощи студентам
Хочу написать софтину которая будет считать количество итераций для палиндромов
Написал и все работает!
Но работает при условии что нужна только одна итерация, если 2 и больше то цикл бесконечен и все. Никак не пойму в каком месте ошибка.

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
public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
 
        public static UInt64 Reverse_Number (UInt64 a)//Реверс числа (запись числа в обратном порядке)
        {
            UInt64 b; //Объявление переменной для вывода
            string s = a.ToString(); //перевод входного значения в текст
            char[] ar = s.ToCharArray(); //перевод текста в массив значений
            Array.Reverse(ar); //Реверс массива
            s = new String(ar); //Переменная текста с реверсированым значением
            b = Convert.ToUInt64(s); //Перевод текста в число
            return (b); //Вывод числа
        }
        public static bool Proverka_Polindrom (UInt64 a) //Проверка полиндрома (читается ли число задом на перед так же само)
        {
            bool c; //Объявление переменной для вывода
            UInt64 b = Reverse_Number(a); //Реверс числа (метод в библиотеке)
            if (a == b) //Проверка чисел на равность
            { //Если числа полиндромы
                c = true; //Переменная правдивая
            }
            else
            {//Если числа не полиндромы
                c = false; //Переменная не правдива
            }
            return c; //Вывод переменной
        }
        private void button1_Click(object sender, EventArgs e)
        {
            UInt64 a, b, fin = 0;
            a = Convert.ToUInt64(textBox1.Text); //Ввод начального значения
            bool p = false; //Переменная для выхода из цикла
            int q = 0; //Счетчик интераций
 
            //Ниже настройка програссбара
            progressBar1.Minimum = 0;
            progressBar1.Maximum = 50000000;
            progressBar1.Step = 1;
            progressBar1.Value = 0;
 
            for (UInt64 i = 0; p == false; i++)
            {
                progressBar1.PerformStep();//Шаг прогрессбара
                b = Reverse_Number(a);//Число а превращается в обратное (123->321)
                fin = a + b;//Сумма чисел
                p = Proverka_Polindrom(fin);//Проверка полиндрома (читается ли число задом на перед так же само), выдает булеан
                q = q++;//Увеличение счетчика                
            }
            textBox2.Text = Convert.ToString(fin);//вывод полиндрома(если он получился)
            label1.Text = Convert.ToString(q);//вывод счетчика
        }
    }
Поясню еще раз.
Если вводим число 15 то программа считает 15+51=66 число читается в обе стороны одинаково и все выводится.
Если вводим число 195 то в теории должно быть:
195+591=786;
786+687=1473;
1473+3741=5214;
5214+4125=9339; // число стало палиндромом и у нас есть 4 итерации
Но оно не выводит ничего а банально цикл ходит по кругу((((
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
08.08.2016, 20:58
Ответы с готовыми решениями:

Формула подсчета количества итераций цикла for
Доброго времени суток Помогите ответом/советом/уч. материалом Пусть, for( int i = 1; i <= 10;...

Выход из цикла после выполнения определённого количества итераций
:x start "" "URL" goto x Как сделать, что б цыкл был не вечный, а кончался, к примеру, на 20

Найти количество итераций при подсчете суммы ряда
Найти количество итераций при подсчете суммы ряда до того , как n-ый член суммы будет меньше...

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

1
Эксперт .NETАвтор FAQ
10410 / 5140 / 1825
Регистрация: 11.01.2015
Сообщений: 6,226
Записей в блоге: 34
08.08.2016, 23:02 2
hpdrl_pdsp,
Вероятно после строки
C#
1
q = q++;//Увеличение счетчика
нужно
C#
1
a = fin;
0
08.08.2016, 23:02
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
08.08.2016, 23:02
Помогаю со студенческими работами здесь

Ошибка в подсчете количества инверсий
Здравствуйте, помогите разобраться с подсчетом количества инверсий, в случае повторяющихся...

Использование this при подсчете количества символов
Только учусь, потому вопрос из разряда "для новичков". Задача. Необходимо посчитать количество...

Ошибка в подсчете количества вхождений символа в строку
Подскажите пожалуйста, в чем ошибка? int _tmain(int argc, _TCHAR* argv) { char sym = 'a';...

Учет двух условий при подсчете количества объектов
Доброго времени суток! Возник следующий вопрос. нужно посчитать количество объектов,...


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru