Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.50/6: Рейтинг темы: голосов - 6, средняя оценка - 4.50
0 / 0 / 0
Регистрация: 31.08.2011
Сообщений: 32
.NET 4.x

Ввод данных и вычисление значения выражения

13.01.2013, 16:28. Показов 1307. Ответов 10
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте, помогите пожалуйста разобраться как правильно написать код.
Работаю в Visual C# 2010 Express, дано задание: В программу вводятся: действительное число a, натуральное число n. Вычислить: a/1 + a/2 + ... + a/n; a и n вводит пользователь в textbox
Как я понимаю переменная a тут статична, тоесть как ввели её так и ввели, а вот если например a=4, n=3, то вычисление должно быть таким (4/1)+(4/2)+(4/3), для решения задачи необходимо использовать циклический алгоритм, в теле цикла надо складывать.
Вот как я написал код для button:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
       private void button1_Click(object sender, EventArgs e)
        {
            int a, n, i;
            double res;
            string error;
            error = "Ошибка ввода данных";
            if (int.TryParse(textBox1.Text, out a) & (a >= 2))
            if (int.TryParse(textBox2.Text, out n) & (n >= 2))  
            
            {
                res=0;
                for (i = 2; i <= n; i++)
                    res = res + (a / i);
                label3.Text=Convert.ToString(res);
            }
            else label3.Text=error;
 
                
        }
Я пытаюсь сделать проверку ввода данных, почему то так не проверяет.
ПОМОГИТЕ пожалуйста внести коррективы.

Для примера было подобное задание у меня, которое уже решено:
В программу вводится натуральное число n. Вычислить: (1 + 1/2)*(1 + 1/3)* ... *(1 + 1/n).
тут вот правильный код:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
      private void button1_Click(object sender, EventArgs e)
        {
            int n, i;
            double res;
            string error;
            error = "Ошибка ввода данных";
            if (int.TryParse(textBox1.Text, out n) & (n >= 2))
            {
                res = 1;
                i = 2;
                //цикл с условием
                do
                {
                    res = res * (1 + 1 / i);
                    i++;
                }
                while (i <= n);
                label3.Text =Convert.ToString(res);
            }
            else label3.Text = error;
        }
или так:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
       private void button2_Click(object sender, EventArgs e)
        {
            int n, i;
            double res;
            string error;
            error = "Ошибка ввода данных";
            if (int.TryParse(textBox1.Text, out n) & (n >= 2))
            {
                res = 1;
                for (i = 2; i <= n; i++)
                    res = res * (1 + 1 / i);
                label3.Text =Convert.ToString( res);
            }
            else label3.Text = error;
        }
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
13.01.2013, 16:28
Ответы с готовыми решениями:

Вычисление выражения, используя двоично-десятичные вычисления (ввод данных с клавиатуры)
Составить программу для вычисления выражения , используя двоично-десятичные вычисления. При этом обеспечить ввод исходных чисел с...

Ввод значения аргумента x и вычисление значения функции y
Разработать программу, которая вводит значения аргумента x и вычисляет значение функции y:

Вычисление значения выражения в зависимости от значения аргумента

10
Master of Orion
Эксперт .NET
 Аватар для Psilon
6102 / 4958 / 905
Регистрация: 10.07.2011
Сообщений: 14,522
Записей в блоге: 5
13.01.2013, 16:33
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
       private void button1_Click(object sender, EventArgs e)
        {
            int a, n;
            if (int.TryParse(textBox1.Text, out a) && a >= 2 && int.TryParse(textBox2.Text, out n) && n >= 2)
               label3.Text = GetAnswer(a, n);
            else label3.Text = "Error while converting string to digit"
        }
 
         private double GetAnswer(double a, int n)
        {
            double result = 0;
            for(int i = 1; i <= n; i++)
               result += a / i;
            return result;
        }
1
0 / 0 / 0
Регистрация: 31.08.2011
Сообщений: 32
13.01.2013, 16:48  [ТС]
Psilon, Спасибо за ответ, если не трудно поясните код пожалуйста
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
      private void button1_Click(object sender, EventArgs e)
        {
            int a, n;
            if (int.TryParse(textBox1.Text, out a) && a >= 2 && int.TryParse(textBox2.Text, out n) && n >= 2) //тут я понял проверка идет корректно
               label3.Text = GetAnswer(a, n); //Что делает эта строка?
            else label3.Text = "Error while converting string to digit"
        }
 
         private double GetAnswer(double a, int n) //  тут непонятно новое событие откуда берется
        {
            double result = 0;
            for(int i = 1; i <= n; i++)
               result += a / i;
            return result;
        }
0
Master of Orion
Эксперт .NET
 Аватар для Psilon
6102 / 4958 / 905
Регистрация: 10.07.2011
Сообщений: 14,522
Записей в блоге: 5
13.01.2013, 16:53
velyar, вызывает функцию с параметрами. Функция сама пишется, ручками, на форме нигде не шлепается
0
0 / 0 / 0
Регистрация: 31.08.2011
Сообщений: 32
13.01.2013, 16:57  [ТС]
Psilon, что то это больно сложно для меня пока, а можете если не трудно написать код , но только чтобы это было в теле события кнопки button1 , ввод исходных данных textBox1 и textBox2, и вывод результата на label3, а то препод скажет что это пока сложно.
0
Master of Orion
Эксперт .NET
 Аватар для Psilon
6102 / 4958 / 905
Регистрация: 10.07.2011
Сообщений: 14,522
Записей в блоге: 5
13.01.2013, 17:00
velyar, можно, хотя смысла нету.
C#
1
2
3
4
5
6
7
8
9
10
11
12
      private void button1_Click(object sender, EventArgs e)
        {
            int a, n;
            if (int.TryParse(textBox1.Text, out a) && a >= 2 && int.TryParse(textBox2.Text, out n) && n >= 2) 
            {
               double result = 0;
               for(int i = 1; i <= n; i++)
                  result += a / i;
               label3.Text = result.ToString(); //Что делает эта строка?
            }
            else label3.Text = "Error while converting string to digit"
        }
1
0 / 0 / 0
Регистрация: 31.08.2011
Сообщений: 32
13.01.2013, 17:05  [ТС]
Psilon, а почему вы не объявляете переменную i?
0
Master of Orion
Эксперт .NET
 Аватар для Psilon
6102 / 4958 / 905
Регистрация: 10.07.2011
Сообщений: 14,522
Записей в блоге: 5
13.01.2013, 17:26
velyar, она в цикле объявляется (int i = 0;...)
0
0 / 0 / 0
Регистрация: 31.08.2011
Сообщений: 32
13.01.2013, 17:36  [ТС]
Psilon, пытаюсь понять как теперь это вычисляется
вот код
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
 private void button1_Click(object sender, EventArgs e)
        {
            int a, n;
            string error;
            error = "Ошибка ввода данных";
            if (int.TryParse(textBox1.Text, out a) && a >= 1 && int.TryParse(textBox2.Text, out n) && n >= 1)  
           
           {
                double res=1;
                for (int i = 1; i <= n; i++)
                    res=res+(a / i);
                label3.Text=Convert.ToString(res);
            }
            else label3.Text=error;
        }
Например я ввожу a=2 и n=1, начальный результат равен 1, идет проверка i<=n, i у нас получается равно n, и по идее он должен просто посчитать a/n тоесть результат должен быть 2, а он получается считает еще предыдущий результат 1 и + 2
0
Master of Orion
Эксперт .NET
 Аватар для Psilon
6102 / 4958 / 905
Регистрация: 10.07.2011
Сообщений: 14,522
Записей в блоге: 5
13.01.2013, 17:41
velyar, ну так зачем вы исправили правильный код на неправильный? А преподавателю, который заставляет сразу на винформе писать, передайте (если есть возможность), что он не очень умен.
0
0 / 0 / 0
Регистрация: 31.08.2011
Сообщений: 32
13.01.2013, 17:52  [ТС]
Psilon, я уже задавал такой вопрос, почему мы начинаем не с консольных приложений а сразу всё делаем в Visual Studio, ответила что так идет по плану
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
13.01.2013, 17:52
Помогаю со студенческими работами здесь

Ввод чисел с клавиатуры, вычисление выражения
помогите пожалуйста.. задача: ввести числа с клавиатуры, a, x и b, посчитать y=a*x+b*x. у меня не получается( проблема с выводом...

Вычисление значения выражения
Ребят, помогите срочно нужно, но не как не врублюсь. Условия: Составить схему алгоритма и программу для вычисления выражения ...

Вычисление значения выражения
вычислить y y=\sum_{p=1}^{m} \frac{1}{sin({e}^{p}-1)}

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

Вычисление значения выражения
Помогите пожалуйста. Нарисуйте форму и напишите программный код решения следующей задачи: Ввод исходных данных и вывод результата...


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

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Символьное дифференцирование
igorrr37 13.02.2026
/ * Программа принимает математическое выражение в виде строки и выдаёт его производную в виде строки и вычисляет значение производной при заданном х Логарифм записывается как: (x-2)log(x^2+2) -. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru