Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > C# (си шарп)
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 22.05.2018, 14:39   #1
lisica198808
Пользователь
 
Регистрация: 06.11.2012
Сообщений: 64
По умолчанию Вывести элементы арифметической прогрессии

У меня вводится на форме первый(минимальный) элемент прогрессии,последний(максимальный), количество элементов. После нажатии кнопки "Рассчитать" необходимо посчитать ряд арифметической прогрессии - сохранить его в динамический массив и вывести в соответствующий label на форме.

Код:
 private void button1_Click(object sender, EventArgs e)
        {
            if ((max.Text != "") & (min.Text != "") & (kol_el.Text != ""))
            {
            double max_set = Double.Parse(max.Text);
            double min_set = Double.Parse(min.Text);

            int kol = Int32.Parse(kol_el.Text);

          
                double[] mas = new double[kol];
                                
                //определим элементы , используя  свойство, формулу арифметической прогрессии
                // по св-ву прогрессии значения находятся на одинаковом расстоянии, шаге друг от друга
               // double d = (mas[kol - 1] - mas[0]) / (kol - 1);

                for (int i = 0; i < kol; i++)
                {
                    mas[0] = min_set;
                  //  mas[kol - 1] = max_set;
                  double  d = (mas[kol - 1] - mas[0]) / (kol - 1);
                  mas[i] = mas[0] + d*(i-1);;
                   
                    //mas[i + 1] = mas[i] + d;
                }

                text.Text = "Арифметический ряд:";
                for (int i = 0; i < kol; i++)
                {
                  quant_el.Text +=  Math.Round(mas[i], 2).ToString()+" ";
                   
                }

            }
        }
С рекурсией - запуталась как грамотно ряд считать ,сделала так.. Но, не доделано..
У меня повторяется при выводе первый элемент ряда или вообще не то, что нужно в результате. Как исправить чтоб все необходимые элементы повторялись, выводились, сохранялись правильно в массив?

Последний раз редактировалось lisica198808; 22.05.2018 в 14:54.
lisica198808 вне форума Ответить с цитированием
Старый 22.05.2018, 14:43   #2
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,708
По умолчанию

Код:
mas[0] = min_set;
                  //  mas[kol - 1] = max_set;
                  double  d = (mas[kol - 1] - mas[0]) / (kol - 1);
Зачем это все в цикле?

Код:
mas[i] = mas[0] + d
Как там у нас звучит определение арифметической прогрессии? Все последующие равны первый + разность?

Код:
for (int i = 0; i < kol; i++)
Разве два элемента у вас уже не заданы?
p51x вне форума Ответить с цитированием
Старый 22.05.2018, 14:59   #3
lisica198808
Пользователь
 
Регистрация: 06.11.2012
Сообщений: 64
По умолчанию

Цитата:
Сообщение от p51x Посмотреть сообщение
Как там у нас звучит определение арифметической прогрессии? Все последующие равны первый + разность?
Код:
  mas[i] = mas[0] + d*(i-1);
я по ходу исправляла - не внимательная((
lisica198808 вне форума Ответить с цитированием
Старый 22.05.2018, 15:04   #4
lisica198808
Пользователь
 
Регистрация: 06.11.2012
Сообщений: 64
По умолчанию

Цитата:
Сообщение от p51x Посмотреть сообщение
Разве два элемента у вас уже не заданы?
у меня известен первый, последний элемент ряда. и разность считается, чтоб найти элементы всего ряда..
так аккуратнее?:

Код:
 mas[0] = min_set;
mas[kol - 1] = max_set;
double d = (mas[kol - 1] - mas[0]) / (kol - 1); 
 for (int i = 0; i < kol; i++)
                {                  
                  mas[i] = mas[0] + d*(i-1);        
                }
lisica198808 вне форума Ответить с цитированием
Старый 22.05.2018, 15:11   #5
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,708
По умолчанию

Ну вот возьмите и проверьте самый первый проход цикла. Чему у вас получится mas[0]? А чему должен?
p51x вне форума Ответить с цитированием
Старый 22.05.2018, 15:27   #6
lisica198808
Пользователь
 
Регистрация: 06.11.2012
Сообщений: 64
По умолчанию

первый у меня уже известен,равен минимальному, то есть цикл должен начинаться так?
Код:
 for (int i = 1; i < kol; i++)
                {                  
                  mas[i] = mas[0] + d*(i-1);        
                }

Последний раз редактировалось lisica198808; 22.05.2018 в 15:39.
lisica198808 вне форума Ответить с цитированием
Старый 22.05.2018, 15:39   #7
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,708
По умолчанию

Ну теперь проверьте mas[1]
p51x вне форума Ответить с цитированием
Старый 22.05.2018, 15:39   #8
lisica198808
Пользователь
 
Регистрация: 06.11.2012
Сообщений: 64
По умолчанию

а на выводе
Код:
 text.Text = "Элементы множества:";
                for (int i = 1; i < kol; i++)
                {
                    quant_el.Text +=  Math.Round(mas[i], 2).ToString()+" ";
                   
                }
Так считает, только у меня выводится не заданное количество , а количество - 1 ((
lisica198808 вне форума Ответить с цитированием
Старый 22.05.2018, 15:45   #9
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,708
По умолчанию

А на выводе вы почему вдруг перестали mas[0] выводить?
p51x вне форума Ответить с цитированием
Старый 22.05.2018, 15:53   #10
lisica198808
Пользователь
 
Регистрация: 06.11.2012
Сообщений: 64
По умолчанию

Цитата:
Сообщение от p51x Посмотреть сообщение
А на выводе вы почему вдруг перестали mas[0] выводить?
нуу.. я просто вижу что у меня mas[0] = mas[1]. или mas[0] дважды выводится..запутала себя.. только не пойму почему...
lisica198808 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Дан первый член и разность арифметической прогрессии, найти член прогрессии с номером n nomin Помощь студентам 2 06.12.2014 16:43
Даны 3 числа. Определить являються ли они частью арифметической прогрессии, геометрической прогрессии. ( С++ ) Irina32 Общие вопросы C/C++ 1 07.10.2013 15:40
Вычислить сумму арифметической прогрессии Адольфовна Паскаль, Turbo Pascal, PascalABC.NET 2 15.03.2011 12:49
c++. Cумма членов арифметической прогрессии alen7 Помощь студентам 6 25.11.2010 16:26
Заполнить массив первыми 10 членами арифметической прогрессии с известным первым членом прогрессии А и ра basav1k Фриланс 8 27.05.2010 00:33