Задача - Лица на фигури (15 задача от лекцията Логически проверки)
Здравейте, може би ще ви се стори глупав въпроса, но трябва да Ви попитам. Условието на задачата е следното:
Да се напише програма, която въвежда размерите на геометрична фигура и пресмята лицето й. Фигурите са четири вида: квадрат (square), правоъгълник (rectangle), кръг (circle) и триъгълник (triangle). На първия ред на входа се чете вида на фигурата (square, rectangle, circle или triangle). Ако фигурата е квадрат, на следващия ред се чете едно число – дължина на страната му. Ако фигурата е правоъгълник, на следващите два реда четат две числа – дължините на страните му. Ако фигурата е кръг, на следващия ред чете едно число – радиусът на кръга. Ако фигурата е триъгълник, на следващите два реда четат две числа – дължината на страната му и дължината на височината към нея. Резултатът да се закръгли до 3 цифри след десетичната точка.
Въпросът ми е мога ли да инициализирам променлива вътре в if конструкцията, така че след като например прочетем square от конзолата, да се изпълни това което е във "къдравите" скоби? Аз пробвах, но не се получава и не мога да разбера защо. Ето част от задачата ми:
using System;
class Program
{
static void Main()
{
string figure = Console.ReadLine();
string square = null;
if (figure == square)
{
var a = double.Parse(Console.ReadLine());
Console.WriteLine(a * a);
}
}
}
Благодаря предварително за помощта!
using System;
class Figures
{
static void Main()
{
var figure = string.Format(Console.ReadLine());
if(figure == "square")
{
var a = double.Parse(Console.ReadLine());
Console.WriteLine(Math.Round(a*a,3));
}
if(figure == "restangle")
{
var a = double.Parse(Console.ReadLine());
var b = double.Parse(Console.ReadLine());
Console.WriteLine(Math.Round(a * b, 3));
}
if(figure == "circle")
{
var r = double.Parse(Console.ReadLine());
Console.WriteLine(Math.Round(Math.PI * r * r, 3));
}
if (figure == "triangle")
{
var h = double.Parse(Console.ReadLine());
var a = double.Parse(Console.ReadLine());
Console.WriteLine(Math.Round((h * a) / 2, 3));
}
}
}
Някой може ли да ми каже защо кода не ми работи?
Имаш правописна грешка при rectangle.
И аз така бях тръгнала да го пиша, но ми даваше грешка, която не можах да изчистя. Затова на всяка фигура си създадох и по една променлива за площ, след която закръглям формулата за лице на съответната фигура и си я вадя накрая само като стойност. Нещо такова:
if (figure == "square")
{
var a = double.Parse(Console.ReadLine());
var area = Math.Round(a * a, 3);
Console.WriteLine(area);
}
Дано помага.
За първи път виждам вариант да се направи калкулация в CWL,
Три действия в един ред.
Console.WriteLine(Math.Round((h * a) / 2, 3)); . - Елегантно.
Целия блок за да има смисъл:
{
var h = double.Parse(Console.ReadLine());
var a = double.Parse(Console.ReadLine());
Console.WriteLine(Math.Round((h * a) / 2, 3));
}
Декларираме променливите и после се калкулират и форматират на изхода на конзолата.