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

Во время проги, зависает компилятор

28.07.2015, 23:29. Показов 731. Ответов 4
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
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
using System;
 
namespace MathEquastions
{
    class Program
    {
 
        public static void Main(String[] args)
        {
            double a, b, c;
 
            Console.Write("Введите\n a = ");
            a = Convert.ToDouble(Console.ReadLine());
 
            Console.Write("Введите\n b = ");
            b = Convert.ToDouble(Console.ReadLine());
 
            Console.Write("Введите\n c = ");
            c = Convert.ToDouble(Console.ReadLine());
 
            if (a == 0 || b == 0 || c == 0)
            {
                Console.Write("Ошибка, неправильно ввели данные\n");
                Console.ReadKey();
 
            }
 
 
            String res = algoritm(a, b, c);
            Console.WriteLine(res);
            Console.ReadKey();
 
        }
 
        private static string algoritm(double a, double b, double c)
        {
            double D, x1, x2;
            D = b * b - 4 * a * c;
            if (D < 0)
            {
                Console.Write("Корней нет\n");
            }
            x1 = (-b + Math.Sqrt(D)) / (2 * a);
            x2 = (-b - Math.Sqrt(D)) / (2 * a);
            String s1 = x1.ToString();
            String s2 = x2.ToString();
 
            String res = s1 + s2;
            return res;
 
        }
 
 
    }
}
Собственно решает квадратные уравнения два вопроса.

Первый как в выводе Стринга res, дописать пробелы?

И если вместе вместо цифр, ввсести какой нибудь другой символ, компилятор виснет намертво, как его разблокировать или как запретить ввод символов кроме цифр?

Спасибо

для проверки возьмите ур ние с корнями:

x^2 + 3x - 10
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
28.07.2015, 23:29
Ответы с готовыми решениями:

Если есть время напишите проги
Интересно как решаются задачи. Если у кого есть время и желание напишите))) Всем ставлю + 1. ...

Краш во время работы проги (Недопустимое основание)
&quot;An unhandled exception of type 'System.ArgumentException' occurred in mscorlib.dll Additional...

Как примерно оценить время выполнения проги?
И вообще как текущее время определить?

Как получить лоступ к СОМ-порту!? Он все время закрыт! Вот код проги:
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data;...

4
18 / 18 / 4
Регистрация: 05.06.2012
Сообщений: 1,020
28.07.2015, 23:59 2
Цитата Сообщение от abcdfg Посмотреть сообщение
как запретить ввод символов кроме цифр?
Ограничить ввод

Цитата Сообщение от abcdfg Посмотреть сообщение
Первый как в выводе Стринга res, дописать пробелы?
C#
1
 res += "  ";
0
3 / 3 / 0
Регистрация: 30.09.2013
Сообщений: 92
29.07.2015, 00:20  [ТС] 3
Я разобрался с пробелами, насчет ввода, кроме форм не как?
жаль хотелось сначала по практиковаться без форм и т.д.
0
2 / 2 / 0
Регистрация: 29.07.2015
Сообщений: 13
29.07.2015, 09:10 4
abcdfg, ввод в консоли в основном через методы ReadLine() / Read() / ReadKey()
чтобы программа не зависала на преобразованиях, оберните код в конструкцию try..catch или используйте метод Double.TryParse
0
52 / 48 / 23
Регистрация: 27.07.2015
Сообщений: 145
30.07.2015, 00:10 5
Я бы так этот код переписал:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
        private static void algoritm(double a, double b, double c, out double x1, out double x2)
        {
            double D;
            D = b * b - 4 * a * c;
            if (D < 0)
            {
                Console.WriteLine("Корней нет");    //  зачем Write и в конце писать \n ?
                x1 = Double.PositiveInfinity;       
                x2 = Double.NegativeInfinity;
            }
            else
            {
                x1 = (-b + Math.Sqrt(D)) / (2 * a);
                x2 = (-b - Math.Sqrt(D)) / (2 * a);
            }            
        }
Код становится универсальнее, можно не только в консоль выкинуть, но и использовать дальше для расчетов.

Вывод результата в консоль:
C#
1
2
3
4
algoritm(a, b, c, out x1, out x2);
                
Console.WriteLine("Первый корень уравнения: {0}, второй корень уравнения: {1}", x1.ToString(), x2.ToString());
Console.ReadKey();
Удобно, если надо в строку текста переменные выводить. Даже ToString, по-моему, необязателен.

Наконец, код с защитой от дурака. Использовал try и catch. У Вас, кстати, в строке 21 else не хватало - сообщение об ошибке писалось, а формула все равно считалась. От деления на ноль защищал уже C# :-).
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
        public static void Main(String[] args)
        {
            try
            {
                double a, b, c, x1, x2;
 
                Console.Write("Введите\n a = ");
 
                a = Convert.ToDouble(Console.ReadLine());
 
                Console.Write("Введите\n b = ");
                b = Convert.ToDouble(Console.ReadLine());
 
                Console.Write("Введите\n c = ");
                c = Convert.ToDouble(Console.ReadLine());
 
                if (a == 0 || b == 0 || c == 0)
                {
                    Console.WriteLine("Ошибка, неправильно ввели данные");
                    Console.ReadKey();
                }
                else
                {
                    algoritm(a, b, c, out x1, out x2);
                    Console.WriteLine("Первый корень уравнения: {0}, второй корень уравнения: {1}", x1.ToString(), x2.ToString());
                    Console.ReadKey();
 
                }
 
                
                
 
            }
            catch (FormatException e)
            {
                Console.WriteLine("Похоже, Вы ввели не число, а что-то еще");
                Console.ReadKey();
            }
            catch
            {
                Console.WriteLine("Что-то пошло не так");
                Console.ReadKey();
            }
 
        }
Только, на мой взгляд, это лишнее. Консоль предполагает определенную квалификацию оператора. А защиту от дурака лучше делать в формах потом.
0
30.07.2015, 00:10
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
30.07.2015, 00:10
Помогаю со студенческими работами здесь

Установил фотошоп, вместо проги установились другие проги (игры онлайн,браузеры,рекламы и т.д.)
Здравствуйте, уважаемые программисты или форумчане! Скачал и установил с одного сайта фотошоп, а во...

Зависает во время работы ПК
История у компа такая, перепаял 3 вздутых конденсатора в цепи питания процессора, установил другой...

Как отследить из проги на Си завершение другой проги
Есть две программы, одна написана не мной и исходников нет (main), вторую я пытаюсь написать сам...

Во время игры компьютер зависает
Ситуация такая, играю в игру World of Tanks, при загрузке боя, полоса загрузки прогружает примерно...


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

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