[Homework] C# Basics - Primitive Data Types and Variables - Isosceles Triangle
Колеги и колежки моля споделете решенията си за 9та задача , на мен лично тя ми се струва най-сложна от домашното за Primitive Data Types and Variables ...
Колеги и колежки моля споделете решенията си за 9та задача , на мен лично тя ми се струва най-сложна от домашното за Primitive Data Types and Variables ...
накратко, отиваш в charmap (start>>Run>>charmap), намираш символа копираш го или му вземаш кода и го пълниш в char, След това печаташ празни места и знаци, нищо сложно
Console.WriteLine("c".PadLeft(4));
Console.WriteLine(("c"+" "+"c").PadLeft(5));
Console.WriteLine(("c" + " " + "c").PadLeft(6));
Console.WriteLine("c" + " " + "c" + " " + "c" + " " + "c" + " ");
//Може и без Padleft, просто слагаш празни места преди знака.
/* Padleft(5) - казва абе изпечатай ми 5 празни позиции, и на мястото на тези позиции от дясно на ляво попълвай, това което ти подам "в случая c", ама ако случайно това което ти подам е по-дълго ами просто си печатай както си знаеш, пусни го намали от 5 на 4 и сравни с ще разбереш и за padleft */
ето и друг вариант :
Console.WriteLine(new string(' ', 3) + "©");
Задачата е логическа. Решение от типа просто начертай, за да изглежда по същия начин както в условието не виждам смисъл да се коментира. Аз бих подходил така, че да решим задачата за различни големини триъгълници.
Ако триъгълникът е реализиран от Х редове, с прости сметки виждаме, че броят елементи на ред е (Х*2)-1. Това значи, че както е в условието - на 4 реда, броят елементи на последния ред е 7 (4 C и 3 празни).
Разглеждайки как е изграден триъгълникът ми се струва, че първият и последният ред са "нестандартни", а междинните са - тоест, подходящи са за включване в цикъл, който да ги изчертава. Първият ред съдържа C винаги на позиция X, последният ред редува C и празни (Х*2)-1 пъти, а на междинните редове C е на позиция Х-i и Х+i, където i е броячът на цикъла.
Сега остава да се напише кодът. :)
Евала бе Иво,
точно така. най-добре е да се разгледа задачата при триъгълник с произволна големина. Разбира се се има предвид равнобедрен такъв като височината се определя от броя редове. Нашата задача е за 4 реда, но може спокойно да се направи за N на борй
Здравей, колега решението на задачата ти изглежда вярно, но направило ли ти е впечатление, че когато се визуализира на конзолата триъгалника не е образуван от знака за copyright 'c' ,а от символа 'апостроф и ' на кирилица - пробваи да закоментираш реда //Console.OutputEncoding = System.Text.Encoding.UTF8; в програмата си и нещата ще изглеждат по друг начин.
към кода си в началото. Това ще инструктира конзолата да разпознава символи от UTF-8 стандарта.Console.OutputEncoding=System.Text.Encoding.UTF8;
Ето го моето решение :
string empty = " ";
char symbol = (char)0XA9;
Console.WriteLine(empty + empty + empty + symbol);
Console.WriteLine(empty + empty + symbol + empty + symbol);
Console.WriteLine(empty + symbol + empty + empty + empty + symbol);
Console.WriteLine(symbol + empty + symbol + empty + symbol + empty + symbol);
А тук си поиграх с подобни задачи , че ми хареса :
// 'C' inside
Console.WriteLine(empty + empty + empty + symbol);
Console.WriteLine(empty + empty + symbol + empty + symbol);
Console.WriteLine(empty + symbol + empty + 9 + empty + symbol);
Console.WriteLine(symbol + empty + symbol + empty + symbol + empty + symbol);
Console.WriteLine();
Console.WriteLine();
// heart
Console.WriteLine(empty + empty + symbol + empty + empty + empty + symbol);
Console.WriteLine(empty + symbol + empty + symbol + empty + symbol + empty + symbol);
Console.WriteLine(symbol + empty + empty + empty + symbol + empty + empty + empty + symbol);
Console.WriteLine(empty + symbol + empty + empty + empty + empty + empty + symbol);
Console.WriteLine(empty + empty + symbol + empty + empty + empty + symbol);
Console.WriteLine(empty + empty + empty + symbol + empty + symbol);
Console.WriteLine(empty + empty + empty + empty + symbol);
Започваш така
using System;
class IsoscelesTriangle
{
static void Main()
{
Console.OutputEncoding=System.Text.Encoding.UTF8; // Задаваш на конзолата формат UTF8 за текста
//Можеш да го направиш по два начина - екранизиране или с char
//това е първият начин
string triangle =@"
©
© ©
© ©
© © © ©";
Console.WriteLine(triangle);
//втори начин
char symbol = (char)0XA9;
string space = " ";
Console.WriteLine(space + space+ symbol);
Console.WriteLine(space + space + symbol + space+ symbol);
Console.WriteLine(space + symbol + space + space + space+ symbol);
Console.WriteLine(symbol + symbol + symbol + symbol);
}
}
Триъгълника трябва да е от 9 символа, равностранен , по 4 символа на страна - това за първият вариант.
Вторият ти е също неправилен ! Не го ли тества ?
Виж моят, в поста над твоят, е същата идея , но е правилно изчислен и съответно изчертава правилно триъгълника .
Дала съм и "сърце" и още един триъгълник със символа в средатата му - като правиш такава програма - нарисувай си фигурката първо на лист !
string empty = " ";
char symbol = (char)0XA9;
Console.WriteLine(empty + empty + empty + symbol);
Console.WriteLine(empty + empty + symbol + empty + symbol);
Console.WriteLine(empty + symbol + empty + empty + empty + symbol);
Console.WriteLine(symbol + empty + symbol + empty + symbol + empty + symbol);
Трябва да си поправиш настройките на конзолата.
Cntr i F5 дясно копче на полето горе (където ти се намира X и minimize) избираш properties, след това Font и вместо Raster Fonts трябва да го направиш на Lucida Console даваш OK и би трябвало да си готов.
Здравей, просто закоментираи реда с енкодинга //Console.OutputEncoding=System.Text.Encoding.UTF8;
Ами аз изрисувах фигурата, но не и с тоя знак (c) защото в конзола не го изписва въпреки, че го намерих като Unicode. В условието на задачата се загатва за некакъв конвърт от Unicode към UTF-8, но това ми е малко неясно.
Ако кажеш как да изобразя (c) в конзола на Windows ще си супер.
А иначе по-долу решението:
using System;
class CharacterTriangle
{
static void Main(string)
{
char drawingChar = '\u00A9';
int height = 4;
string identStringTop = new string(' ', height - 1);
string top = identStringTop + drawingChar + identStringTop;
Console.WriteLine(top);
for (int i = 2; i < height; i++)
{
string identStringSide = new string(' ', height - i);
string middleTriangleSpace = new string(' ', 2*i - 3);
Console.WriteLine(identStringSide + drawingChar + middleTriangleSpace + drawingChar + identStringSide );
}
for (int i = 0; i < height; i++)
{
string partBase = drawingChar.ToString() + ' ';
Console.Write(partBase);
}
Console.WriteLine("\n");
}
}
Трябва да добавиш ето този код:
using System.Text;
Console.OutputEncoding = Encoding.UTF8;
забелязах че го няма в твоята задача.
Ако пак не стане трябва да си поправиш настройките на Конзолата.
Ето го и моето решение на задачата:
Console.OutputEncoding = Encoding.UTF8;
char copyRightSymbol = '\u00A9';
Console.WriteLine(
" " + copyRightSymbol);
Console.WriteLine(
" " + copyRightSymbol + " " + copyRightSymbol);
Console.WriteLine(
" " + copyRightSymbol + " " + copyRightSymbol);
Console.WriteLine(
copyRightSymbol + " " + copyRightSymbol + " " + copyRightSymbol + " " + copyRightSymbol);
Надявам се да съм бил полезен Лека на всички.
Трябва да е равностранен триъгълник, а при теб се получава пръвоъгълен. :)
Добре де не може ли да се измисли нещо с for цикъл. Би трябвало да може според входни данни да можеш да направиш такъв триъгълник.
Естествено, че може. Това реално си е задача за рисуване, каквито ще бъде 3-тата ви на изпита.