Loading...
Samuil.Petrow avatar Samuil.Petrow 1550 Точки

[Homework] C# Basics - Console Input/Output

Лекцията може да не е минала, но щом ни пуснаха домашното трябва да го налазваме - ще е полезна темата за тези, които са имали повечко време и са стигнали до тук и са си прочели презентацията.

1. Sum of 3 Integers (Уж integers, а пък в примерите дробни числа.. тогава и ние няма да се ограничаваме до целочислени)

2. Print Company Information (правя всички телефонни номера стрингове, защото не знаем в какъв формат евентуално биха ни ги подали)

3. Circle Perimeter And Area (решение от Lyubo)

4. Number Comparer

5. Formatting Numbers (решение от Lyubo)

6. Quadratic Equation (решение от Lyubo)

7. Sum of 5 Numbers (не мога да измисля по-лесно решение в момента)

8. Numbers from 1 to n

9. Sum of N Numbers

10. Fibonacci Numbers

11. Numbers in interval dividable by given number (може да се оптимизира като се намери първият търсен елемент и после се прескача през 5 и още 1-2 проверки)

12. //TODO

52
Programming Basics 07/10/2014 21:34:09
Stoyan.Stoyanov avatar Stoyan.Stoyanov 96 Точки

Някой може ли да ме "светне" къде е проблемът в моето решение на 6-та задача:

http://pastebin.com/tFHiCa5n

0
mantodeus avatar mantodeus 17 Точки

В скобите е, при формулата за дискриминантата,просто сложи едни допълнителни скоби между първата част на формулата и деленето на 2  :

 

double x1 = (((-1 * bDouble) + Math.Sqrt(discriminant)) / (2 * aDouble));
double x2 = (((-1 * bDouble) - Math.Sqrt(discriminant))) / (2 * aDouble));

2
Stoyan.Stoyanov avatar Stoyan.Stoyanov 96 Точки

Вярно!

Благодаря, явно това съм го пропуснал. Сега работи както трябва.

0
garbuchev avatar garbuchev 18 Точки

Една забележка за Problem11 Numbers in Interval Dividable by Given Number.
Мисля, че всички решения, които видях тук, работят, ако въведете числата в нарастващ ред. Това го НЯМА в условието.
Ясно е, че всички са разсъждавали от гледна точка на това "start" / "end" в примерите, но задачата няма да сработи, ако първото ви число е по-голямо wink

Надявам се забележката да е от полза.

3
beBoss avatar beBoss 507 Точки

Да така е, ама на всякъде в примера първите са по-малки от вторите, пък и задачата е с тях да работи, не с други. Иначе един if Може лесно да реши проблема(като размени стоиностите)

3
Stoyan.Stoyanov avatar Stoyan.Stoyanov 96 Точки

Да, и аз си помислих същото, затова го направих с if: http://pastebin.com/mr1iHrK2

А иначе, дали е фатално, ако ми е невъзможно да реша 12-та задача (Falling rocks)? :)

0
beBoss avatar beBoss 507 Точки

Чак фатално - не. За изпита ще е хубаво 3 задачи поне да решиш + останалите бонуси и може би ще си вътре. По принцип тези задачи със звездите, не всеки ще ги реши, но те не са и задължителни. Те са по-скоро ако останалите са ти лесни и няма какво да правиш, малко да поблъскаш и върху по-трудните. Ще е хубаво все пак да се опиташ, дори и да не можеш. От всяка задача, която те затруднява, научаваш нещо ново и един вид различно мислене за всеки малък проблем по нея.

1
scinetic avatar scinetic 40 Точки

На 11-та задача ми се получава Unhandled Exception: System.FormatException: Input string was not in a correct format, дори когато ползвам твойто решение :|

0
Alekscho85 avatar Alekscho85 13 Точки

Колега ЕТО ТУК един пример за решението на 11-та задача. Надявам се да ти е полезен.

0
nikolay.dimov83 avatar nikolay.dimov83 143 Точки

Някой може ли да ми даде линк къде да чета за писане на игри от типа на falling rocks и snake - разбрах че има видео някъде. Вече е време да я реша 12-ката :)

0
beBoss avatar beBoss 507 Точки

@ViValDam ще те помоля, да слагаш кода си в някое онлайн репозитори, като гитхъб или пейст бин и да даваш линк, защото както виждаш това тук, не изглежда добре. Също така ще те помоля да си редактираш постовете вместо за всяко нещо да пускаш нов и нов коментар и да спамиш излишно. Прочети правилата на форума, за да няма недоразбиране и да се избягват конфликти!

4
Ivaylo.Il avatar Ivaylo.Il 226 Точки

Моля за подсказка за 10 задача (Фибоначи), но не искам готово решение. Искам сам да се опитам да я реша само с лека насока. Благодаря предварително.

0
RoYaL avatar RoYaL Trainer 6849 Точки

Подсказката е в това какво са числата на фибоначи:

Всяко следващо число е сума от предходните две:

Първото число е 0, Второто е 1, Третото е 0+1=1. Четвъртото е 1+1 = 2, Петото 2+1 = 3. Шестото 3+2 = 5, Седмото 5+3 = 8, Осмото 8 + 5 = 13 и т.н.

Т.е. трябва да се начосиш към начин, в който си наясно какви са били предходните 2 числа, за да създадеш следващото.

3
ViValDam avatar ViValDam 15 Точки

Пускам ,ти моето готово , решение - не го гледай , ако не искаш wink, ащото не се сещам за подсказка smile , освен самото определение за числата на Фибоначи , но то го има навсякъде !

Съвсем не е лошо , да се гледат чужди решения - така се учи човек !

Има различни начини да се реши задачатаэи и ето как аз я реших :

 

static void Main()
{
     int row = 4;
     Console.WriteLine(" FIBONACCHI NUMBERS\n");
     Console.WriteLine("n comments\n");
     while (true)
    {
         int n = int.Parse(Console.ReadLine());
         Console.SetCursorPosition(5, row);

         int counter = n;
         int previous= 0;
         int current = 1;
         int next;

         if (n == 1)
         {
             Console.WriteLine(" 0");
         }
        
          else // n>1
         {
             Console.Write(" 0 ");

             while (counter > 1) 
            {
                next = previous + current; 
                Console.Write(next + " ");
                previous = current; 
                current = next;
                counter--; 
            }
            Console.WriteLine();
      }
      row ++;
    }
 }

Цикъла   while (true){ }   е за да не стартирам програмата за всяка нова стойност на  n , пък и така се вижда на екрана половината от триъгълника на Фибоначи smile  - можеш да го махнеш , ако искаш този цикъл- не е в задачата !

Console.SetCursorPosition(5, row);  е команда , която слага курсора на конзолата в позиция, където искаш да си го сложиш ти самият , променливата   row е за тази команда, показва на кой ред искам да сложа курсора  ,а числото 5 показва на колко позиции от ляво на дясно го слагам -  използвам тази команда ,за да отпачатам всичко на един ред  - и  n  , и числата на Фибоначи за този  n -  за тази цел, връщам курсора нагоре и на дясно) - и това , с курсора, можеш да махнеш, ако желаеш - не е в задачата !

2
RoYaL avatar RoYaL Trainer 6849 Точки

Да, в този случай ще трябва да манипулираш с две променливи предходните числа :) Можеш и с масив, в който пълниш в цикъла:

j[i] = (i > 1) ? (j[i-2] + j[i-1]) : i;

2
Nukem avatar Nukem 6 Точки

моето решение за задача 11.

using System;

namespace Homework4_Task11
{
class Numbers_interval
{
static void Main()
{
/*
Numbers in Interval Dividable by Given Number
Write a program that reads two positive integer numbers and prints
how many numbers p exist between them such that the reminder of the division by 5 is 0.
*/
int first = int.Parse(Console.ReadLine());
int secound = int.Parse(Console.ReadLine());
int division = Math.Abs(first-secound);
if(first>secound)
{
for (int i = first; first > secound; first--)
{
if (first % 5 == 0)
{
Console.WriteLine(first);
}
}
}
else
{
for (int i = secound; secound > first; secound--)
{
if (secound % 5 == 0)
{
Console.WriteLine(secound);
}
}
}
}
}
}

0
RoYaL avatar RoYaL Trainer 6849 Точки

Извинявай, би ли казал защо е такова решението? :) В смисъл с два цикъла? :)

Аз реших да го правя с един цикъл, колкото числа в редицата се делят на 5 без остатък да ги пълня в масив, после каунта на масива е колко са числата, а неговите елементи - самите числа:

 

int division = 5;

Console.WriteLine("Enter start: ");
int start = Convert.ToInt32(Console.ReadLine());
Console.WriteLine("Enter end: ");
int end = Convert.ToInt32(Console.ReadLine());
List<string> counter = new List<string>();
for (int i = start; i <= end; i++)
{
     if (i % division == 0)
     {
         counter.Add(i.ToString());
     }
}

string numbers = counter.Count > 0 ? String.Join(" ", counter) : " - ";
Console.WriteLine("p: " + counter.Count + " numbers: " + numbers);

1
Lili26 avatar Lili26 48 Точки

Samuil.Petrow 

На третата задача си пропуснал да  декларираш PI.

Ето моето решение:

{
Console.WriteLine("Enter the radius of a circle:");
Double radius = Convert.ToDouble(Console.ReadLine());
const double PI = (double)Math.PI;
double perimeter = (2* Math.PI * radius);
double area = (Math.PI * radius);
string outPut = string.Format("Perimeter is: {0:F2}", perimeter);
Console.WriteLine(outPut);
outPut = string.Format("Area is: {0:F2}", area);
Console.WriteLine(outPut);
Console.ReadLine();
}

smile

0
RoYaL avatar RoYaL Trainer 6849 Точки

@Lili26,

 

За какво ти е тази декларация?

 

const double PI = (double)Math.PI;

 

При при положение, че дори не я ползваш, а и е безсмислено да я ползваш, след като можеш да си ползваш Math.PI?

 

Това ми звучи като да си направиш метод

 

public int Pow(int num, int power)

{

    return Math.Pow(num, power)

}

 

1
Lili26 avatar Lili26 48 Точки

 RoYaL

Вярно!

Прав си. Поправих си задачката. Благодаря за инфото. 

0
Maka7a avatar Maka7a 6 Точки

@Samuil.Petrow

За 7-ма задача можеш да използваш "Console.SetCursorPosition(numbersAsString.Length + 1, 0);" за да изкараш резултата на същия ред :)

0
Samuil.Petrow avatar Samuil.Petrow 1550 Точки

И като го опиташ на изпита гърмиш с 0 точки :) Ако искам да изкарам нещо на един ред просто ще печатам без нов ред.

2
Maka7a avatar Maka7a 6 Точки

Защо ще даде 0 точки ??

0
Можем ли да използваме бисквитки?
Ние използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Можете да се съгласите с всички или част от тях.
Назад
Функционални
Използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Използваме „сесийни“ бисквитки, за да Ви идентифицираме временно. Те се пазят само по време на активната употреба на услугите ни. След излизане от приложението, затваряне на браузъра или мобилното устройство, данните се трият. Използваме бисквитки, за да предоставим опцията „Запомни Ме“, която Ви позволява да използвате нашите услуги без да предоставяте потребителско име и парола. Допълнително е възможно да използваме бисквитки за да съхраняваме различни малки настройки, като избор на езика, позиции на менюта и персонализирано съдържание. Използваме бисквитки и за измерване на маркетинговите ни усилия.
Рекламни
Използваме бисквитки, за да измерваме маркетинг ефективността ни, броене на посещения, както и за проследяването дали дадено електронно писмо е било отворено.