Регистрация не е нужна, освен при създаване на тема в "Задача на седмицата".

Лесна задача

Лесна задача

Мнениеот Гост » 12 Ное 2020, 18:31

Знам, че съм адски сакат по програмиране и се изнервям, че не знам как да реша тази задача, която ми изгледжа елементарна...Ако може малко помощ

Уссловие:
Дефинирайте клас Number, който има

едно поле стойност (value).
Създайте метод LastDigitName, който да изписва с текст
/думи/ последната цифра на число.

Вход: 13425
Изход: five

-------------------------Moето грешно решение:
Кодът в клас Number:
Код: Избери целия код
public class Number
    {
        public int value;
        public void LastDigit(int n)
        {
            if (n % 10 == 0) { Console.WriteLine( "Zero"); }
            if (n % 10 == 1) { Console.WriteLine("one"); }
            if (n % 10 == 2) { Console.WriteLine("two"); }
            if (n % 10 == 3) { Console.WriteLine("three"); }
            if (n % 10 == 4) { Console.WriteLine("four"); }
            if (n % 10 == 5) { Console.WriteLine("fice"); }
            if (n % 10 == 6) { Console.WriteLine("six"); }
            if (n % 10 == 7) { Console.WriteLine("seven"); }
            if (n % 10 == 8) { Console.WriteLine("eight"); }
            if (n % 10 == 9) { Console.WriteLine("nine"); }
           
        }
       
    }


Кодът в клас Program:
Код: Избери целия код
class Program
    {   
        Number num1 = new Number();
        int value = int.Parse(Console.ReadLine());
        num1.LastDigit(value);             
    }


Мисля, че грешката е в клас програм. но не мога да разбера защо ми го маркира като грешно...
Гост
 

Re: Лесна задача

Мнениеот Davids » 12 Ное 2020, 19:57

Кое наричаш "грешката" - компилационна грешка, грешка по време на изпълнение или просто програмата ти не прави каквот се очаква от нея? Макар и да не е най логически издържаното конвенционално решение, все пак ми се струва, че ако се компилира, би трябвало да връща каквото трябва. След малко ще ти кача няколко разяснения, но първо ми отговори на въпроса. :D
*Нещо непосредствено и интересно, привличащо вниманието на читателя и оставящо го с приятна топла усмивка на лицето.*
----
Вече не го правя само за точката. :lol:
Davids
Математик
 
Мнения: 2394
Регистриран на: 16 Ное 2015, 11:47
Рейтинг: 2552

Re: Лесна задача

Мнениеот Гост » 12 Ное 2020, 20:12

Дава ми следните 2 грешки на реда, в който въвеждам метода

Error 1 Invalid token '(' in class, struct, or interface member declaration

Error 2 Invalid token ')' in class, struct, or interface member declaration

тези грешки сочат към двете скоби около value
Гост
 

Re: Лесна задача

Мнениеот Davids » 12 Ное 2020, 20:43

Гост написа:Дава ми следните 2 грешки на реда, в който въвеждам метода

Error 1 Invalid token '(' in class, struct, or interface member declaration

Error 2 Invalid token ')' in class, struct, or interface member declaration

тези грешки сочат към двете скоби около value

А каква среда ползваш въобще, за да си пишеш задачите? Този проблем, ми се струва, се получава като пишеш наизуст или ползваш нещо като Notepad, понеже ако бяха създавани класовете през що-годе читаво IDE, нямаше да ли липсва Main() метода от класа Program. :D

И все пак, качвам ти примерен код с малко разяснения. Надявам се да схванеш какво имам предвид. Ако нещо не е ясно, питай смело. :D

Класа Number:
Код: Избери целия код
using System;

namespace MyFirstConsoleApp
{
    class Number
    {
        /*
         * За пригледност, трябва ни по-долу.
         */
        public static readonly string[] digitNames = {
            "zero",
            "one",
            "two",
            "three",
            "four",
            "five",
            "six",
            "seven",
            "eight",
            "nine"
        };

        /*
         * Идеята на цялата OOP енкапсулация са именно нивата на достъп.
         * И за да сме готини, външни кодове няма да имат директен достъп до определящата нашето число стойност.
         */
        private readonly int value;

        /*
         * Понеже обект от класа Number не би имал смисъл без съответната стойност, е добре тя да е изискуем параметър в конструктора.
         */
        public Number(int value)
        {
            this.value = value;
        }

        /*
         * Единственото публично освен конструктора на класа ни ще бъде исканият ти метод, който да връща името на последната цифра.
         */
        public string GetLastDigitName()
        {
            //Както може би и сам си усетил, да пишеш 10 if случая не е много гъвкаво
            //Затова сме изнесли имената на цифрите в масив,
            //чиито стойности съответстват на индекси именно остатъците при деление на модула на value на 10.
            return digitNames[Math.Abs(value) % 10];
        }
    }
}



Главният ти Program.cs:
Код: Избери целия код
using System;

namespace MyFirstConsoleApp
{
    class Program
    {
        static void Main(string[] args)
        {
            int value = int.Parse(Console.ReadLine()); //Взимаме стойност от конзолата (липсва ни валидация, но се надяваме на изряден вход :D)
            Number num = new Number(value); //създаваме обект от класа Number, като в конструктора подаваме въведената стойност
            Console.WriteLine(num.GetLastDigitName()); //ползваме публичния метод, който създадохме, за да изведем в конзолата името на последната цифра.
        }
    }
}
*Нещо непосредствено и интересно, привличащо вниманието на читателя и оставящо го с приятна топла усмивка на лицето.*
----
Вече не го правя само за точката. :lol:
Davids
Математик
 
Мнения: 2394
Регистриран на: 16 Ное 2015, 11:47
Рейтинг: 2552

Re: Лесна задача

Мнениеот Гост » 12 Ное 2020, 23:39

Нямам представа как не съм видял, че main метода го няма...това беше една тестова програма и сигурно случайно съм го изтрил...Благодаря иначе!
Гост
 


Назад към C#, Java



Кой е на линия

Регистрирани потребители: Davids, Google Adsense [Bot], Google [Bot], pal702004

Форум за математика(архив)