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

Условный оператор if else- неполадки

04.03.2018, 16:46. Показов 1186. Ответов 5
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Почему значение в else (в конце) приписывается всегда, независимо от ситуации?
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
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
 
namespace ConsoleApplication4
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("========ВЫЧИСЛЕНИЕ ПЛОЩАДИ И ПЕРИМЕТРА ЗАДАННОЙ ФИГУРЫ ПЛАНЕИМЕТРИИ========");
            Console.WriteLine("========ВВЕДИТЕ ГЕОМЕТРИЧЕСКОЕ НАЗВАНИЕ НУЖНОЙ ФИГУРЫ========");
            Console.WriteLine("ДОСТУПНЫ: КРУГ, ТРЕУГОЛЬНИК, ПРЯМОУГОЛЬНИК, КВАДРАТ, ПАРАЛЛЕЛОГРАМ, РОМБ");
            string Figure = Console.ReadLine();
            Figure = Figure.ToUpper();
            Console.WriteLine("========ВЫЧИСЛЯЕМ ПЛОЩАДЬ ДЛЯ ТАКОЙ ФИГУРЫ КАК " + Figure + "========");
            if (Figure == "КРУГ")
            {
                Console.WriteLine("========ВВЕДИТЕ ДЛИНУ РАДИУСА ВАШЕЙ ОКРУЖНОСТИ========");
                double r = Convert.ToDouble(Console.ReadLine());
                double S = r * r * Math.PI;
                double P = 2 * r * Math.PI;
                Console.WriteLine("Площадь Вашей окружности равна " + S + ", а периметр равен " + P);
            }
            if (Figure == "КВАДРАТ")
            {
                Console.WriteLine("========ВВЕДИТЕ ДЛИНУ СТОРОНЫ ВАШЕГО КВАДРАТА========");
                double str = Convert.ToDouble(Console.ReadLine());
                double S = str * str;
                double P = 4 * str;
                Console.WriteLine("Площадь Вашего квадрата равна " + S + ", а периметр равен " + P);
            }
            if (Figure == "ПРЯМОУГОЛЬНИК")
            {
                Console.WriteLine("========ВВЕДИТЕ ДЛИНУ СТОРОНЫ a (высота) ВАШЕГО ПРЯМОУГОЛЬНИКА========");
                double str = Convert.ToDouble(Console.ReadLine());
                Console.WriteLine("========ВВЕДИТЕ ДЛИНУ СТОРОНЫ b (ширина) ВАШЕГО ПРЯМОУГОЛЬНИКА========");
                double str2 = Convert.ToDouble(Console.ReadLine());
                double S = str * str2;
                double P = 2 * (str + str2);
                Console.WriteLine("Площадь Вашего прямоугольника равна " + S + ", а периметр равен " + P);
            }
            if (Figure == "ТРЕУГОЛЬНИК")
            {
                Console.WriteLine("========ЧТО ВАМ ИЗВЕСТНО: ВЫСОТА ИЛИ УГЛ?========");
                string x1 = Console.ReadLine();
                x1 = x1.ToUpper();
                if (x1 == "ВЫСОТА")
                {
                    Console.WriteLine("========ВВЕДИТЕ ДЛИНУ ВЫСОТЫ========");
                    double h = Convert.ToDouble(Console.ReadLine());
                    Console.WriteLine("========ВВЕДИТЕ ДЛИНУ ОСНОВАНИЯ, К КОТОРОМУ ПРОВЕЛЕНА ВЫСОТА========");
                    double str = Convert.ToDouble(Console.ReadLine());
                    double S = (str * h) / 2;
                    Console.WriteLine("Площадь Вашего треугольника равна " + S + ", а вот периметр в данной версии программы  найти нет возмозности.");
                }
                else
                {
                    Console.WriteLine("========ВВЕДИТЕ ГРАДУСНУЮ МЕРУ УГЛА========");
                    double alfaR = Convert.ToDouble(Console.ReadLine());
                    double alfa = alfaR * Math.PI / 180;
                    Console.WriteLine("========ВВЕДИТЕ ДЛИНУ СТОРОН, МЕЖДУ КОТОРЫМИ НАХОДИТСЯ УГОЛ========");
                    Console.WriteLine("========ДЛИНА СТРОНЫ а========");
                    double a = Convert.ToDouble(Console.ReadLine());
                    Console.WriteLine("========ДЛИНА СТРОНЫ b========");
                    double b = Convert.ToDouble(Console.ReadLine());
                    double S1 = (a * b * Math.Sin(alfa) / 2);
                    Console.WriteLine("Площадь Вашего треугольника равна " + S1 + ", а вот периметр в данной версии программы  найти нет возмозности.");
                }
            }
            if (Figure == "ПАРАЛЛЕЛОГРАМ")
            {
                Console.WriteLine("========ЧТО ВАМ ИЗВЕСТНО: ВЫСОТА ИЛИ УГЛ?========");
                string x = Console.ReadLine();
                x = x.ToUpper();
                if (x == "ВЫСОТА")
                {
                    Console.WriteLine("========ВВЕДИТЕ ДЛИНУ ВЫСОТЫ========");
                    double h = Convert.ToDouble(Console.ReadLine());
                    Console.WriteLine("========ВВЕДИТЕ ДЛИНУ ОСНОВАНИЯ, К КОТОРОМУ ПРОВЕЛЕНА ВЫСОТА========");
                    double str = Convert.ToDouble(Console.ReadLine());
                    double S = str * h;
                    Console.WriteLine("========ДЛЯ ВЫЧИСЛЕНИЯ ПЕРИМЕТРА ПОНАДОБЯТСЯ ДОП. СВЕДЕНИЯ:========");
                    Console.WriteLine("========ДЛИНА БОКОВОЙ СТОРОНЫ, ОТЛИЧНОЙ ОТ ОСНОВАНИЯ ========");
                    double b = Convert.ToDouble(Console.ReadLine());
                    double P = 2 * (str + b);
                    Console.WriteLine("Площадь Вашего параллеограма равна " + S + ", а периметр равен " + P);
                }
                else
                {
                    Console.WriteLine("========ВВЕДИТЕ ГРАДУСНУЮ МЕРУ УГЛА========");
                    double alfaR = Convert.ToDouble(Console.ReadLine());
                    double alfa = alfaR * Math.PI / 180;
                    Console.WriteLine("========ВВЕДИТЕ ДЛИНУ СТОРОН, МЕЖДУ КОТОРЫМИ НАХОДИТСЯ УГОЛ========");
                    Console.WriteLine("========ДЛИНА СТРОНЫ а========");
                    double a = Convert.ToDouble(Console.ReadLine());
                    Console.WriteLine("========ДЛИНА СТРОНЫ b========");
                    double b = Convert.ToDouble(Console.ReadLine());
                    double S1 = a * b * Math.Sin(alfa);
                    double P = 2 * (a + b);
                    Console.WriteLine("Площадь Вашего параллеограма равна " + S1 + ", а  периметр равен " + P);
                }
            }
            if (Figure == "РОМБ")
            {
                Console.WriteLine("========ЧТО ВАМ ИЗВЕСТНО: ВЫСОТА ИЛИ УГЛ?========");
                string x = Console.ReadLine();
                x = x.ToUpper();
                if (x == "ВЫСОТА")
                {
                    Console.WriteLine("========ВВЕДИТЕ ДЛИНУ ВЫСОТЫ========");
                    double h = Convert.ToDouble(Console.ReadLine());
                    Console.WriteLine("========ВВЕДИТЕ ДЛИНУ СТОРОНЫ========");
                    double str = Convert.ToDouble(Console.ReadLine());
                    double S = str * h;
                    double P = 4 * str;
                    Console.WriteLine("Площадь Вашего ромба равна " + S + ", а периметр равен " + P);
                }
                else
                {
                    Console.WriteLine("========ВВЕДИТЕ ГРАДУСНУЮ МЕРУ УГЛА========");
                    double alfaR = Convert.ToDouble(Console.ReadLine());
                    double alfa = alfaR * Math.PI / 180;
                    Console.WriteLine("========ВВЕДИТЕ ДЛИНУ СТОРОНЫ========");
                    double a = Convert.ToDouble(Console.ReadLine());
                    double S1 = a * a * Math.Sin(alfa);
                    double P = 4 * a;
                    Console.WriteLine("Площадь Вашего ромба равна " + S1 + ", а  периметр равен " + P);
                }
            }
            if (Figure == "ТРАПЕЦИЯ")
            {
                Console.WriteLine("========ВВЕДИТЕ ДЛИНУ ВЫСОТЫ========");
                double h = Convert.ToDouble(Console.ReadLine());
                Console.WriteLine("========ВВЕДИТЕ ДЛИНУ ПЕРВОГО ОСНОВАНИЯ========");
                double a = Convert.ToDouble(Console.ReadLine());
                Console.WriteLine("========ВВЕДИТЕ ДЛИНУ ВТОРОГО ОСНОВАНИЯ========");
                double b = Convert.ToDouble(Console.ReadLine());
                Console.WriteLine("========ВВЕДИТЕ ДЛИНУ ПЕРВОЙ БОКОВОЙ СТОРОНЫ========");
                double c = Convert.ToDouble(Console.ReadLine());
                Console.WriteLine("========ВВЕДИТЕ ДЛИНУ ВТОРОЙ БОКОВОЙ СТОРОНЫ========");
                double d = Convert.ToDouble(Console.ReadLine());
                double S = ((a + b) / 2) * h;
                double P = a + b + c + d;
                Console.WriteLine("Площадь Вашей трапеции равна " + S + ", а  периметр равен " + P);
            }
        
            else
            {
                Console.WriteLine("К сожалению, такая фигура не найдена! Пожалуйста проверьте правильность написания слова. (список поддерживаемых фигур есть в начале исполлнения программы.)");
            }
            Console.ReadKey();
           
 
        } 
       
 
    }
    }
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
04.03.2018, 16:46
Ответы с готовыми решениями:

Условный оператор: Вычислить заданное целочисленное выражение, используя условный оператор IF
Вычислить заданное целочисленное выражение для данных a,b в формате INTEGER, используя условный...

Используя условный оператор if и оператор альтернативного выбора otherwise найдите значение функции
Помогите пожалуйста написать алгоритм с проверкой условия. Ни как не пойму, там и в зависит от х, и...

Условный оператор, оператор ввода/вывода; плоскость и принадлежность точки
Здравствуйте. В С++ я абсолютный новичок, поэтому с первым же заданием возникли определённые...

Условный оператор и оператор выбора. Даны два угла треугольника. Определить, существует ли такой треугольник
Даны два угла треугольника (в градусах). Определить, существует ли такой треугольник, и если да, то...

5
3560 / 2501 / 1174
Регистрация: 14.08.2016
Сообщений: 8,206
04.03.2018, 16:57 2
не всегда, а только если выбрана не трапеция, потому, что блок else относится к ближайшему блоку if и только к нему
1
899 / 554 / 275
Регистрация: 26.11.2015
Сообщений: 1,758
Записей в блоге: 2
04.03.2018, 16:59 3
Лучший ответ Сообщение было отмечено Никита682002 как решение

Решение

Используйте switch case
Или после каждого if ставьте else, чтобы получилась цепочка условий, а не несколько независимых
1
3 / 2 / 1
Регистрация: 04.03.2018
Сообщений: 26
04.03.2018, 17:09  [ТС] 4
Если ставить после каждого, то ситуация все равно не изменится. swith case должен помочь? Не будет такого, что переписка будет после каждого?
0
899 / 554 / 275
Регистрация: 26.11.2015
Сообщений: 1,758
Записей в блоге: 2
04.03.2018, 17:22 5
Вы не правы. Если вы в 26,34,44,72,105 и132 строках после закрывающей фигурной скобки напишете "else", то все будет работать.
Что ещё за переписка?
0
3 / 2 / 1
Регистрация: 04.03.2018
Сообщений: 26
04.03.2018, 19:11  [ТС] 6
Спасибо! Заменил на конструкцию swith - case, теперь все хорошо!
0
04.03.2018, 19:11
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
04.03.2018, 19:11
Помогаю со студенческими работами здесь

Условный оператор и оператор множественного выбора
Много заданий написал, но я уверен, что решить их не составит вам труда (не то что мне), хоть...

Оператор цикла, условный оператор
сделайте, пожалуйста, кому не сложно

Условный оператор. Оператор выбора
Помогите пожалуйста с задачей, то я в поскале чайник)! Определить , пересекает ли парабола y=ax +...

Условный оператор
1)Составить программу для вычисления значения функции f(x)...


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

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