Jump to content

Расчёт прибыли


qmxptnzbvtrwd@yandex.ru
 Share

Recommended Posts

Появилась идея сделать программу для подсчёта прибыли или убыли при перепродаже. Много раз сталкивался с ситуациями, где требуется продумать сколько будет прибыли. Сча напишу и выложу, может кому нужна

Скрины кода выложу ещё, на Microsoft Visual Studio 2013, С++ сделана по-быстрому :crazy:

Link to comment
Share on other sites

QzxNsj, лол. Сам хотел, все руки не доходили. Правда, с плюсами у меня некоторые разногласия, так что писать хотел на шарпе.
Link to comment
Share on other sites

&Trane™, я этим занимался раньше, забросил из-за отсутствия помощи со стороны игроков, на старом винчестере у меня где-то завалялся старый проект, но винчестер уже не в рабочем состоянии!

Laelius, я конечно понимаю, что ты опытный барыга, как и я, но всё же это программа может подсчитать надо ли тебе это дело, стоит ли вообще покупать товар для перепродажи! К тому же есть подсчёт "-10%" за услуги рынка.

RainbowDash, C# это старое, переходи на C++ ;)

Link to comment
Share on other sites

попробуй еще написать программу для расчета количества урона/дефа при точке

Link to comment
Share on other sites

Вот код с рабочей программой, которая завершила расчёт. Может кто найдёт уязвимости...

 

 

Daniilka, попробую, спасибо за предложение, если не сложно, выложи таблицу расчёта дефа/урона при усилении ;)

95912_.png

Link to comment
Share on other sites

QzxNsj, честно говорю, я себе даже не представляю, как может возникнуть потребность в такой программе. Ну на крайняк, в экселе можно прикинуть пару формул. А чтобы понять, не уйдешь ли ты в минус у перекупщика - просто берешь цену закупки и делишь на 0,9. Это и будет твоя новая цена, ниже которой сделка для тебя будет убыточна.
Link to comment
Share on other sites

Daniilka, попробую, спасибо за предложение, если не сложно, выложи таблицу расчёта дефа/урона при усилении ;)

 

была бы таблица и сам написал, надо у Снорлакса спросить гг
Link to comment
Share on other sites

Автор, ты купил себе "с++ для чайников" и сразу перешел к практике? :)

 

По коду могу дать несколько советов.

1) Всегда делай "защиту от дурака", то есть обрабатывай входные данные. Если вместо числа введут символ прога упадет.

2) не нужно объявлять намспейс, это плохой тон в программировании. Пиши std::cout, std::cin, myNamespace::MyClass  и тд.

3) объявление каждой переменной должно быть на отдельной строке, для лучшей читабельности.

 

удачи в изучении плюсов

Link to comment
Share on other sites

Автор, ты купил себе "с++ для чайников" и сразу перешел к практике? :)

 

По коду могу дать несколько советов.

1) Всегда делай "защиту от дурака", то есть обрабатывай входные данные. Если вместо числа введут символ прога упадет.

2) не нужно объявлять намспейс, это плохой тон в программировании. Пиши std::cout, std::cin, myNamespace::MyClass  и тд.

3) объявление каждой переменной должно быть на отдельной строке, для лучшей читабельности.

 

удачи в изучении плюсов

 

В этом вся соль версии "Express" ;)

1. Спасибо за идею, я до этого думал над этим, но не знаю как реализовать..

2.Ок, буду писать это вместо namespace!

3. Вот тут уточните, пожалуйста, вроде все делал как надо, вот только в послелнем объявлении не учел, кажется так..Спасибо большое :)

QzxNsj, честно говорю, я себе даже не представляю, как может возникнуть потребность в такой программе. Ну на крайняк, в экселе можно прикинуть пару формул. А чтобы понять, не уйдешь ли ты в минус у перекупщика - просто берешь цену закупки и делишь на 0,9. Это и будет твоя новая цена, ниже которой сделка для тебя будет убыточна.

 

Вообще-то программа ддя подсчета прибыли... Дураком нужно быть, что в минус улететь. И я только учусь, критика приветствуется :)
Link to comment
Share on other sites

Вообще-то программа ддя подсчета прибыли... Дураком нужно быть, что в минус улететь. И я только учусь, критика приветствуется :)

 

Цыплят по осени считают... Я всегда прибыль считал тогда, когда ее получал. То есть, смотрел сколько у меня было голда и сколько стало. Зачем считать то, что еще не получил - для меня так и остается загадкой. Тем более, что продажная цена динамически изменяется зависимо от многих факторов. Лучше уже посчитать выгодность отдельных товаров для максимизации этой самой прибыли. Да и есть куча других нюансов (спрос на тот или иной товар, конкуренция и т.д.). Так что тут не только расчеты нужны, но и опыт, а в идеале - статистика. Но, как говорится, - каждому свое. Удачи в реализации программки)))
Link to comment
Share on other sites

Цыплят по осени считают... Я всегда прибыль считал тогда, когда ее получал. То есть, смотрел сколько у меня было голда и сколько стало. Зачем считать то, что еще не получил - для меня так и остается загадкой. Тем более, что продажная цена динамически изменяется зависимо от многих факторов. Лучше уже посчитать выгодность отдельных товаров для максимизации этой самой прибыли. Да и есть куча других нюансов (спрос на тот или иной товар, конкуренция и т.д.). Так что тут в идеале не только расчеты нужны, но и опыт, а в идеале - статистика. Но, как говорится, - каждому свое. Удачи в реализации программки)))

 

Я бы это не называл таким словом) Да, ты полностью прав.

 

Вот у меня идея появилась сделать программу для подсчета дефа/урона при усилении, есть где-то табличка, вот по ней буду делать, несмотря на погрешности.

Очень печально, что не умею все это дело красиво оформлять :(

Link to comment
Share on other sites

Я бы это не называл таким словом) Да, ты полностью прав.

 

Вот у меня идея появилась сделать программу для подсчета дефа/урона при усилении, есть где-то табличка, вот по ней буду делать, несмотря на погрешности.

Очень печально, что не умею все это дело красиво оформлять :(

 

в принципе можно будет сделать не большую программу для подсчета не только дефа и урона, но и других параметров(крит, хп и тд)

п.с. могу набросать пример по самой первой таблице

Link to comment
Share on other sites

В этом вся соль версии "Express" ;) 1. Спасибо за идею, я до этого думал над этим, но не знаю как реализовать..

Элементарно:

int value = 0;while(true){	std::cout << "ввести значение: ";	if(!(std::cin >> value))//если введенное значение не целочисленное	{		std::cout << "введеное значение не корректно"; //сообщаем об этом		std::cin.clear();//очищаем поток ввода		std::cin.sync();		continue;// прерываем цикл и переходим на следующую итерацию	}			...	break; // выходим если все отработало правильно}

Конечно использование операторов break и continue не желательно, но что бы не усложнять код исключениями и классами пусть будет так.

 

3. Вот тут уточните, пожалуйста, вроде все делал как надо, вот только в послелнем объявлении не учел, кажется так..Спасибо большое

Я имею в виду, что следует объявлять переменные так:

int firstValue = 0;

int secondValue = 0;

Хотя в мелких программах не очевидно, но в крупных, где тысячи строк, это значительно повышает читаемость.

Link to comment
Share on other sites

Fobb, Cпасибо, всё ясно и понятно :)

 

 

Вылаживаю код программы в таком виде, сейчас выложу ещё для подсчёта урона/дефа.

#include <conio.h>#include <iostream>using namespace std;int main(){   setlocale(LC_ALL, "Russian");   double First_Price, Now_Prise, Quantity, First_Quantity, Now_Quantity,Profit;   cout << "Введите начальную цену покупки: ";   cin >> First_Price;   cout << "Введите количество товара: ";   cin >> Quantity;   cout << "Введите цену продажи: ";   cin >> Now_Prise;   First_Quantity = First_Price * Quantity;   Now_Quantity = Now_Prise * Quantity;   Profit = (Now_Quantity - First_Quantity) - (Now_Quantity - First_Quantity)*0.1;   cout << "Ты можешь увеличить свой капитал на " << Profit << " золота" << endl;   _getch();   return 0;}
Link to comment
Share on other sites

Код программы для подсчёта дефа/урона при усилении. Защиту от дурака пока не применяю.

#include <conio.h>#include <iostream>using std::cout;using std::cin;using std::endl;int main(){   setlocale(LC_ALL, "Russian");   cout << "1 - Оружее(Урон, Магическая сила); 2 - Доспехи (Защита, Магическая защита);" << endl;   cout << "Введите номер действия: ";   int ID_Number, Amplific_W, Amplific_E, Weapon, Equipment;   double Amp_Weapon, Amp_Equipment;   cin >> ID_Number;   if (ID_Number == 1) {      cout << "Введите количество начального Урона, Магической силы: ";      cin >> Weapon;      cout << "Введите уровень усиления: ";      cin >> Amplific_W;      if (Amplific_W == 1) {         Amp_Weapon = Weapon + Weapon*0.02;         cout << "Ваш Урон, Магическая сила после усиления на +1 = " << Amp_Weapon;      }      if (Amplific_W == 2) {         Amp_Weapon = Weapon + Weapon*0.04;         cout << "Ваш Урон, Магическая сила после усиления на +2 = " << Amp_Weapon;      }      if (Amplific_W == 3) {         Amp_Weapon = Weapon + Weapon*0.06;         cout << "Ваш Урон, Магическая сила после усиления на +3 = " << Amp_Weapon;      }      if (Amplific_W == 4) {         Amp_Weapon = Weapon + Weapon*0.1;         cout << "Ваш Урон, Магическая сила после усиления на +4 = " << Amp_Weapon;      }      if (Amplific_W == 5) {         Amp_Weapon = Weapon + Weapon*0.14;         cout << "Ваш Урон, Магическая сила после усиления на +5 = " << Amp_Weapon;      }      if (Amplific_W == 6) {         Amp_Weapon = Weapon + Weapon*0.21;         cout << "Ваш Урон, Магическая сила после усиления на +6 = " << Amp_Weapon;      }      if (Amplific_W == 7) {         Amp_Weapon = Weapon + Weapon*0.33;         cout << "Ваш Урон, Магическая сила после усиления на +7 = " << Amp_Weapon;      }      if (Amplific_W == {         Amp_Weapon = Weapon + Weapon*0.49;         cout << "Ваш Урон, Магическая сила после усиления на +8 = " << Amp_Weapon;      }      if (Amplific_W == 9) {         Amp_Weapon = Weapon + Weapon*0.66;         cout << "Ваш Урон, Магическая сила после усиления на +9 = " << Amp_Weapon;      }      if (Amplific_W == 10) {         Amp_Weapon = Weapon + Weapon*0.86;         cout << "Ваш Урон, Магическая сила после усиления на +10 = " << Amp_Weapon;      }      else {         cout << "Неверный уровень усиления!" << endl;      }   }   if (ID_Number == 2) {      cout << "Введите количество начальной Защиты, Магической защиты: ";      cin >> Equipment;      cout << "Введите уровень усиления: ";      cin >> Amplific_E;      if (Amplific_E == 1) {         Amp_Equipment = Equipment + Equipment*0.06;         cout << "Ваша Защита, Магическая защита после усиления на +1 = " << Amp_Equipment;      }      if (Amplific_E == 2) {         Amp_Equipment = Equipment + Equipment*0.1;         cout << "Ваша Защита, Магическая защита после усиления на +2 = " << Amp_Equipment;      }      if (Amplific_E == 3) {         Amp_Equipment = Equipment + Equipment*0.15;         cout << "Ваша Защита, Магическая защита после усиления на +3 = " << Amp_Equipment;      }      if (Amplific_E == 4) {         Amp_Equipment = Equipment + Equipment*0.24;         cout << "Ваша Защита, Магическая защита после усиления на +4 = " << Amp_Equipment;      }      if (Amplific_E == 5) {         Amp_Equipment = Equipment + Equipment*0.37;         cout << "Ваша Защита, Магическая защита после усиления на +5 = " << Amp_Equipment;      }      if (Amplific_E == 6) {         Amp_Equipment = Equipment + Equipment*0.53;         cout << "Ваша Защита, Магическая защита после усиления на +6 = " << Amp_Equipment;      }      if (Amplific_E == 7) {         Amp_Equipment = Equipment + Equipment*0.72;         cout << "Ваша Защита, Магическая защита после усиления на +7 = " << Amp_Equipment;      }      if (Amplific_E == {         Amp_Equipment = Equipment + Equipment*0.98;         cout << "Ваша Защита, Магическая защита после усиления на +8 = " << Amp_Equipment;      }      if (Amplific_E == 9) {         Amp_Equipment = Equipment + Equipment*1.34;         cout << "Ваша Защита, Магическая защита после усиления на +9 = " << Amp_Equipment;      }      if (Amplific_E == 10) {         Amp_Equipment = Equipment + Equipment*1.85;         cout << "Ваша Защита, Магическая защита после усиления на +10 = " << Amp_Equipment;      }      else {         cout << "Неверный уровень усиления!" << endl;      }   }   _getch();   return 0;}

 

Вот ссылка на собранную программу http://drop3.dropmefiles.com/dl/YVMLw/8507947

Clausboy, http://drop3.dropmefiles.com/dl/1jLG0/8508511 - Ссылка на скачивание "Расчёта прибыли"

Вот это таблицей пользовался:

Опубликованное фото

Link to comment
Share on other sites

Coollrelax, У меня всё работает

 

у тебя библиотеки вместе с вижуалкой установились
Link to comment
Share on other sites

QzxNsj, скорее всего экзешник из папки дебаг поэтому и не работает без дополнительных либ.

Установи конфигурацию release и нажми F7

Link to comment
Share on other sites

Fobb, Вот сделал.

Daniilka, http://rghost.ru/54733392

 

вот мой вариант: http://rghost.ru/54734905

% дефа брал и твоей таблицы, а урон из

Опубликованное фото

она будет чуть по-новее...

Link to comment
Share on other sites

Daniilka, Аж 723 Кб, но тут и оформление есть. На чём написал? :blush:

 

c++
Link to comment
Share on other sites

Daniilka, Там есть несколько ошибок:

1. Когда вводишь 0, пишет "Количество дефа не может быть отрицательным!", когда 0 - не отрицательное число.

2.Одинаковый вывод ошибок в уроне и дефе, т.е если ввести 0 или отрицательное значение в уроне, программа выдаст ошибку

"Количество дефа не может быть отрицательным!

 

 

СКИНЬ КОД

Link to comment
Share on other sites

Daniilka, Там есть несколько ошибок:

1. Когда вводишь 0, пишет "Количество дефа не может быть отрицательным!", когда 0 - не отрицательное число.

2.Одинаковый вывод ошибок в уроне и дефе, т.е если ввести 0 или отрицательное значение в уроне, программа выдаст ошибку

"Количество дефа не может быть отрицательным!

 

 

СКИНЬ КОД

 

спасибо, исправил http://rghost.ru/54735564

void __fastcall TForm1::Image2Click(TObject *Sender){if (Edit1->Text=="") {Application->MessageBox("Вводное поле не может быть пустым!", "Подсчет Дэфа/Урона", MB_OK); }else  {x=StrToFloat(Edit1->Text);if (x<=0){Application->MessageBox("Количество урона не может быть отрицательным или равным нулю!","Подсчет Дэфа/Урона", MB_OK);}else        {if (ComboBox1->ItemIndex == 0) {    y=(x/100)*3;  }  if (ComboBox1->ItemIndex == 1) {    y=(x/100)*6;  }  if (ComboBox1->ItemIndex == 2) {    y=(x/100)*9;  }  if (ComboBox1->ItemIndex == 3) {    y=(x/100)*14;  }  if (ComboBox1->ItemIndex == 4) {    y=(x/100)*17;  }  if (ComboBox1->ItemIndex == 5) {    y=(x/100)*28;  }  if (ComboBox1->ItemIndex == 6) {    y=(x/100)*40;  }  if (ComboBox1->ItemIndex == 7) {    y=(x/100)*55 ;  }  if (ComboBox1->ItemIndex == 8) {   y=(x/100)*72 ;  }  if (ComboBox1->ItemIndex == 9) {    y=(x/100)*92 ;  }z=x+y;Edit2->Text=FloatToStr(floor(z)); }}}//---------------------------------------------------------------------------void __fastcall TForm1::Image3Click(TObject *Sender){if (Edit3->Text=="") {Application->MessageBox("Вводное поле не может быть пустым!", "Подсчет Дэфа/Урона", MB_OK); }else  {v=StrToFloat(Edit3->Text);if (v<=0){Application->MessageBox("Количество дефа не может быть отрицательным или равным нулю!","Подсчет Дэфа/Урона", MB_OK);}else        {if (ComboBox2->ItemIndex == 0) {    b=(v/100)*5;  }  if (ComboBox2->ItemIndex == 1) {    b=(v/100)*10;  }  if (ComboBox2->ItemIndex == 2) {    b=(v/100)*15;  }  if (ComboBox2->ItemIndex == 3) {    b=(v/100)*24;  }  if (ComboBox2->ItemIndex == 4) {    b=(v/100)*37;  }  if (ComboBox2->ItemIndex == 5) {    b=(v/100)*53;  }  if (ComboBox2->ItemIndex == 6) {    b=(v/100)*72;  }  if (ComboBox2->ItemIndex == 7) {    b=(v/100)*98 ;  }  if (ComboBox2->ItemIndex == 8) {   b=(v/100)*134 ;  }  if (ComboBox2->ItemIndex == 9) {    b=(v/100)*185 ;  }n=v+b;Edit4->Text=FloatToStr(floor(n)); }}}
Link to comment
Share on other sites

вот мой вариант: http://rghost.ru/54734905

% дефа брал и твоей таблицы, а урон из

Опубликованное фото

она будет чуть по-новее...

 

Не плохо, но я не уверен что данные в таблице верны
Link to comment
Share on other sites

Не плохо, но я не уверен что данные в таблице верны

 

да, ты прав...

сегодня утром проверял % именно по дамагу и понял, что % зависит от вида и уровня пухи.

например, берем посох нп с точкой +9 и посох нв так же с точкой +9

у нп 81.195% , а у нв 79.838%

так же сравнивал лук нп и арену 15лвл  с точками +10, расхождения примерно в 2%

Link to comment
Share on other sites

да, ты прав...

сегодня утром проверял % именно по дамагу и понял, что % зависит от вида и уровня пухи.

например, берем посох нп с точкой +9 и посох нв так же с точкой +9

у нп 81.195% , а у нв 79.838%

так же сравнивал лук нп и арену 15лвл  с точками +10, расхождения примерно в 2%

 

с таким успехом на 50 уровне. будет разница в 60% :lol:

шутки шутками, но бесят эти зависимости... чем больше тем меньше... и в % защиты та же фигня...

 

Link to comment
Share on other sites

Появилась идея сделать программу для подсчёта прибыли или убыли при перепродаже. Много раз сталкивался с ситуациями, где требуется продумать сколько будет прибыли. Сча напишу и выложу, может кому нужна

Скрины кода выложу ещё, на Microsoft Visual Studio 2013, С++ сделана по-быстрому :crazy:

 

калькулятор в помощь
Link to comment
Share on other sites

калькулятор в помощь

 

Пальма не поможет. Еще раз пишу...Я только учусь! Далее будут программы, в которых калькулятор бессилен...
Link to comment
Share on other sites

спасибо, исправил http://rghost.ru/54735564

void __fastcall TForm1::Image2Click(TObject *Sender){if (Edit1->Text=="") {Application->MessageBox("Вводное поле не может быть пустым!", "Подсчет Дэфа/Урона", MB_OK); }else  {x=StrToFloat(Edit1->Text);if (x<=0){Application->MessageBox("Количество урона не может быть отрицательным или равным нулю!","Подсчет Дэфа/Урона", MB_OK);}else        {if (ComboBox1->ItemIndex == 0) {    y=(x/100)*3;  }  if (ComboBox1->ItemIndex == 1) {    y=(x/100)*6;  }  if (ComboBox1->ItemIndex == 2) {    y=(x/100)*9;  }  if (ComboBox1->ItemIndex == 3) {    y=(x/100)*14;  }  if (ComboBox1->ItemIndex == 4) {    y=(x/100)*17;  }  if (ComboBox1->ItemIndex == 5) {    y=(x/100)*28;  }  if (ComboBox1->ItemIndex == 6) {    y=(x/100)*40;  }  if (ComboBox1->ItemIndex == 7) {    y=(x/100)*55 ;  }  if (ComboBox1->ItemIndex == {   y=(x/100)*72 ;  }  if (ComboBox1->ItemIndex == 9) {    y=(x/100)*92 ;  }z=x+y;Edit2->Text=FloatToStr(floor(z)); }}}//---------------------------------------------------------------------------void __fastcall TForm1::Image3Click(TObject *Sender){if (Edit3->Text=="") {Application->MessageBox("Вводное поле не может быть пустым!", "Подсчет Дэфа/Урона", MB_OK); }else  {v=StrToFloat(Edit3->Text);if (v<=0){Application->MessageBox("Количество дефа не может быть отрицательным или равным нулю!","Подсчет Дэфа/Урона", MB_OK);}else        {if (ComboBox2->ItemIndex == 0) {    b=(v/100)*5;  }  if (ComboBox2->ItemIndex == 1) {    b=(v/100)*10;  }  if (ComboBox2->ItemIndex == 2) {    b=(v/100)*15;  }  if (ComboBox2->ItemIndex == 3) {    b=(v/100)*24;  }  if (ComboBox2->ItemIndex == 4) {    b=(v/100)*37;  }  if (ComboBox2->ItemIndex == 5) {    b=(v/100)*53;  }  if (ComboBox2->ItemIndex == 6) {    b=(v/100)*72;  }  if (ComboBox2->ItemIndex == 7) {    b=(v/100)*98 ;  }  if (ComboBox2->ItemIndex == {   b=(v/100)*134 ;  }  if (ComboBox2->ItemIndex == 9) {    b=(v/100)*185 ;  }n=v+b;Edit4->Text=FloatToStr(floor(n)); }}}

Может все же лучше было бы использовать сase вместо if ? Если ошибаюсь, поправьте )

Link to comment
Share on other sites

Пальма не поможет. Еще раз пишу...Я только учусь! Далее будут программы, в которых калькулятор бессилен...

 

Например?

Подсчет кол - ва игроков в локе?

бред.

Но то, что ты занялся этим, это хорошо)

Удачи в твоих начинаниях.

P/s без обид ;)

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

×
×
  • Create New...