Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > C# (си шарп)
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 19.03.2012, 17:44   #1
bufalo
Пользователь
 
Регистрация: 19.09.2011
Сообщений: 32
Лампочка Класс и метод

Разработать собственный класс, содержащий метод для вычисления стоимости покупки с учетом скидки. Скидка в 3% предоставляется, если сумма покупки больше 5000 руб., в 5% - если сумма больше 10000 руб. Результат оформить в виде:
Введите сумму покупки: = …
Вам предоставляется скидка = …% Сумма с учетом скидки составит: … руб.
заранее благодарен за помощь.

Вот мои нароботки этой программы, препод сказал, что она сделана неправильно.
Единственное, что он сказал, что скидка должна отниматься, а не прибавляться.

Код:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
 
namespace ConsoleApplication1
{
    class Program
    {
        static void metod (int x,double rez)
        {
            if (x > 5000 && x<10000) { rez =x-(x * 0.03); Console.WriteLine("Вам предоставляется скидка в 3%"); Console.WriteLine("Цена покупки со скидкой равна: " + "руб"+ rez); Console.ReadKey(); } 
            else if (x > 10000) { rez =x-(x * 0.05); Console.WriteLine("Вам предоставляется скидка в 5%"); Console.WriteLine("Цена со скидкой 5% равна: "+ rez); Console.ReadKey(); }
            else if (x != 5000) { Console.WriteLine("У вас нет скидки, сумма Вашей покупки равна:"+x); }
        }
 
        static void Main(string[] args)
        {
            int x;
            double rez=0;
            Console.WriteLine("Введите цену покупки: ");
            x = Convert.ToInt16(Console.ReadLine());
            metod(x,rez);
            Console.ReadKey();
        }
    }
}
bufalo вне форума Ответить с цитированием
Старый 19.03.2012, 17:49   #2
Lasur
Форумчанин
 
Аватар для Lasur
 
Регистрация: 13.10.2011
Сообщений: 143
По умолчанию

Неужели оно компилируется? Тут, как минимум, одна ошибка, не дающая скомпилировать проект, и одна, приводящая к неправильному ответу.
Вы ее запускали?

Вру, прога работает, просто не привык к такому коду...
Если не учитывать оформление, вроде все правильно.

Я все же выпишу замечания по коду:
1)Зачем все операторы писать в одну строку?
2)Зачем конвертить в Int16, если тип x - Int32?
Код:
x = Convert.ToInt16(Console.ReadLine());
3)Вместо
Код:
rez =x-(x * 0.03)
проще
Код:
rez =x * 0.97
4)Дерево выбора можно упростить:
Код:
if (x>10000)
{
    //Если цена больше 10000
    return;
}
if (x>5000)
{
    //Если цена между 5000 и 10000
    return;
}
//Если цена меньше или равна 5000
5)И каков смысл передавать res в метод, если можно инициализировать внутри метода?
Все имена, фамилии, ники, даты и события упоминаемые в моих постах, являются вымышленными. Все совпадения с реально существующими - случайны.

Последний раз редактировалось Lasur; 19.03.2012 в 18:33.
Lasur вне форума Ответить с цитированием
Старый 19.03.2012, 18:21   #3
bufalo
Пользователь
 
Регистрация: 19.09.2011
Сообщений: 32
По умолчанию

Lasur, если это все добавить и тем самым исправить программу, она будет соответствовать условию или нет?
bufalo вне форума Ответить с цитированием
Старый 19.03.2012, 18:28   #4
Lasur
Форумчанин
 
Аватар для Lasur
 
Регистрация: 13.10.2011
Сообщений: 143
По умолчанию

Она возвращала правильный результат и до этого.
Единственное мое предположение, почему "препод" мог сказать, что она сделана неправильно, так как увидел +rez в Console.WriteLine().
Все имена, фамилии, ники, даты и события упоминаемые в моих постах, являются вымышленными. Все совпадения с реально существующими - случайны.

Последний раз редактировалось Lasur; 19.03.2012 в 18:35.
Lasur вне форума Ответить с цитированием
Старый 19.03.2012, 18:54   #5
bufalo
Пользователь
 
Регистрация: 19.09.2011
Сообщений: 32
По умолчанию

ясно, спасибо.
bufalo вне форума Ответить с цитированием
Старый 20.03.2012, 15:26   #6
KobolD
Форумчанин
 
Регистрация: 10.06.2010
Сообщений: 239
По умолчанию

Тольк я не вижу чтобы вы собственный клас разработали.
Подразумевается что вы должны создать экземпляр класса и уже в нем вести обработку. Попробуй так.
Код:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("Введите цену покупки: ");
            double x = Convert.ToDouble(Console.ReadLine());
            MyClass NewItem = new MyClass(x);//Создаешь новый экземпляр класса
            NewItem.Print();//Вывод на экран информации о стоимости и скидке
            Console.ReadKey();
        }
    }

    //Вот тут ты объявляешь новый класс
    class MyClass 
    {
        //Поля класса
        private double Sum;
        private int Sk;

        //Конструктор класса
        public MyClass(double Price)
        {
            if (Price > 10000)
                Sk = 5;
            if (Price > 5000)
                Sk = 3;
            Sum = Price*(1-Sk/100);
            //Print();//Вывод на экран информации о стоимости и скидке
        }

        //Инкапсуляция
        public double Price { get { return Sum; } }
        public int Skidka { get { return Sk; } }

        // Методы класса
        public void Print()
        {
            if (Sk == 0)
                Console.WriteLine("У вас нет скидки, сумма Вашей покупки равна:" + Sum.ToString());
            else
                Console.WriteLine("Вам предоставляется скидка в {0}%. Цена с учетом скидки равна: {1}", Sk,Sum);
        }
    }
}
Чтобы слова не расходились с делом, нужно молчать и ничего не делать.
KobolD вне форума Ответить с цитированием
Старый 20.03.2012, 17:18   #7
bufalo
Пользователь
 
Регистрация: 19.09.2011
Сообщений: 32
По умолчанию

всем спасибо!
bufalo вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Класс запускает поток, который заполняет этот класс. Обмен класс <=> поток. Человек_Борща Общие вопросы Delphi 8 27.02.2012 23:24
исследовать метод квадратных корней и метод Холецкого для решения СЛАУ Vит@x@ Помощь студентам 0 22.11.2011 10:47
Описать класс-родитель и класс-потомок. Delphi 7 Andrew_M Помощь студентам 0 15.01.2011 14:42
Как добавить Метод в класс Список с++ lirikoff Помощь студентам 5 26.08.2010 20:08