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

Решение квадратных уравнений

31.03.2019, 09:53. Показов 1738. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем бобра, у меня маленькая проблема. Сама программа работает(работала), свою основную функцию выполняла- высчитывание корней.
Я решил добавить функцию проверки( от дураков, вдруг введут не цифру, а букву)
Столкнулся с тем, что в методе для проверки - мне нельзя НЕ присвоить переменной Z значение в блоке else. Думаю, что возможно из-за этого в программе остается мусор, а присвоить значени null нельзя. И в итоге программа не завершается, а предлагает потом ввести еще раз цифры, только не все, а например только b и с. Или только с.
Как мне это решить? И есть другой метод проверки(до регулярных выражений еще не дошел)

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
 static void CheckDoub(out double z)
        {
            if(double.TryParse(Console.ReadLine(), out double x))
            {
                
                z=x;
            }
            else
            {
                Console.WriteLine("Неверный формат ввода!");
                z = 0;
                Main();
            }
        }
И делает она так, как я понял, когда намеренно вводишь буквы...

Вот весь код программы:

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
using System;
namespace Neraven
{
    class Program
    {
 
        static void Main()
        {
            double a, b, c, D, x1, x2;
            Console.WriteLine("Решение квадратных уравнений типа +(-)ax^2+(-)bx+(-)c=0");
 
            Console.WriteLine("Введите число а");
            CheckDoub(out  a);
 
            Console.WriteLine("Введите число b");
            CheckDoub(out b);
 
            Console.WriteLine("Введите число c");
            CheckDoub(out c);
 
 
            D = b * b - (4 * a * c);
            if (D > 0 || D == 0)
            {
                
                x1 = -b + (Math.Sqrt(D)) / (2 * a);
                x2 = -b - (Math.Sqrt(D)) / (2 * a);
                if (x1 == x2)
                {
                    Console.WriteLine($"Уравнение имеет один корень, х1 = {x1}");
                }
                else
                {
                    Console.Write($"Уравнение имеет два корня: x1 = {x1}, x2 = {x2}");
                }
                
            }
            else
            {
                Console.WriteLine("Действительных корней нет.");
            }
 
            
            Console.ReadKey();
        }
//Проверка число или нет
         static void CheckDoub(out double z)
        {
            if(double.TryParse(Console.ReadLine(), out double x))
            {
                
                z=x;
            }
            else
            {
                Console.WriteLine("Неверный формат ввода!");
                z = 0;
                Main();
            }
        }
    }
}
Миниатюры
Решение квадратных уравнений  
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
31.03.2019, 09:53
Ответы с готовыми решениями:

класс решение квадратных уравнений
Ребят,помогите исправить,так же препод сказал поставить границы класса,кто может объяснить,что за границы??? using System; using...

Генератор квадратных уравнений
Ребят, очень нужна ваша помощь. Нужно написать генератор квадратных уравнений. Подскажите с помощью какого алгоритма это возможно сделать?...

Класс квадратных уравнений
Здравствуйте, уважаемые члены форума! Помогите, пожалуйста, решить вопрос: Как описать класс для решения квадратных уравнений вида ax^2 +...

3
 Аватар для samana
2639 / 1567 / 853
Регистрация: 23.02.2019
Сообщений: 3,876
31.03.2019, 12:10
Лучший ответ Сообщение было отмечено Paycom как решение

Решение

Формулу не проверял, но по поводу запроса числа, пока оно не будет корректным, можно сделать так:
C#
1
2
3
4
5
6
7
8
9
10
private static double CheckDoub(string mess)
{
    double x = 0;
    Console.WriteLine(mess);
    while (!double.TryParse(Console.ReadLine(), out x))
    {
        Console.WriteLine("Неверный формат ввода!\n" + mess);
    }
    return x;
}
Здесь просто идёт бесконечный цикл запроса числа и попытки его парсинга, до тех пор, пока оно не станет успешным.

Тогда переменным назначать значение можно с помощью:
C#
1
2
3
a = CheckDoub("Введите число а");
b = CheckDoub("Введите число b");
c = CheckDoub("Введите число c");
1
7 / 7 / 0
Регистрация: 04.02.2019
Сообщений: 12
31.03.2019, 22:50  [ТС]
Спасибо!! Работает даже лучше чем я ожидал, не нужно делать возврат в метод маин и он все проверяет, проблемы действительно не стало. Только теперь бы понять, какая у меня там ошибка..
0
 Аватар для samana
2639 / 1567 / 853
Регистрация: 23.02.2019
Сообщений: 3,876
01.04.2019, 10:11
Цитата Сообщение от Paycom Посмотреть сообщение
Только теперь бы понять, какая у меня там ошибка..
Вы ведь начинали запускать метод Main снова и снова, вне зависимости от того, какая из переменных (a,b или c) была некорректно введена. Даже если а и b были корректными, а переменная c вдруг с ошибкой, то вы начинали всё сначала вызовом Main().
Кода вы "перезапускали" Main, это не означало, что предыдущий Main перестал работать. На самом деле вы накручивали рекурсию (когда метод вызывает сам себя).
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
01.04.2019, 10:11
Помогаю со студенческими работами здесь

Ошибка в решении квадратных уравнений
В чем проблема? Почему студия просит поставить скобку, хотя она уже стоит, а если ее поставить, то все после нее отсекается и не работает. ...

Многоразовый калькулятор квадратных уравнений в консоли
Помогите создать многоразовый калькулятор квадратных уравнений в консоли. То есть в начале пользователю предлагается "Ввести...

Программа для решения квадратных уравнений
В общем надо написать прогу для расчета корней квадратного уравнения. Вот что у меня получилось: int a =...

NaN выводит программа решения квадратных уравнений
using System; class KvadrYravn { static void Main() { Console.WriteLine("Введите коэффициенты a, b, c с новой...

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


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru