Форум программистов, компьютерный форум, киберфорум
C# .NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.58/19: Рейтинг темы: голосов - 19, средняя оценка - 4.58
0 / 0 / 0
Регистрация: 25.11.2009
Сообщений: 16

Калькулятор тарифов.

25.11.2009, 00:33. Показов 3983. Ответов 21
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Есть необходимость создать приложение предназначенное для выбора оптимального тарифа оператора сотовой связи. Входной txt файл содержит дату, время звонка, продолжительность, и номер на который звонишь. Даже не знаю каким макаром это все реализовать. Буду очень благодарен если кто нибудь поможет. (Хотя бы разработать алгоритм)

Мои мысли насчет этого, загоняем все данные из txt в компонент textbox, затем ... мысль останавливается. Тарифы кстати думаю можно подобрать по принципу кто то звонит больше ночью -ему один тариф, кто то больше днем- тому другой и все остальные в этом духе.
P.S. Сам не первый день работаю на с# но эта задача для меня сложновата.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
25.11.2009, 00:33
Ответы с готовыми решениями:

1С Измение тарифов
Люди, помогите)) В моей стране отменили отчисление в Пенсионный фонд с покупки валюты, которое раньше составляло 1%. Теперь это отчисление...

Расчет тарифов с условиями
Добрый день! Необходимо посчитать итоговую сумму по трем условиям. Есть определенные типы диапазонов по весу, и каждому диапазону...

Задача о выборе тарифов
Есть задача над которой несколько дней голову ломаю n клиентов готовы платить за наши услуги по ai каждый. Задано k. Нужно выбрать k...

21
46 / 46 / 3
Регистрация: 18.10.2009
Сообщений: 119
25.11.2009, 00:37
для начала нужно придумать тарифную сетку - или она дана?
0
0 / 0 / 0
Регистрация: 25.11.2009
Сообщений: 16
25.11.2009, 00:39  [ТС]
Тарифную сетку можно взять в принципе любую, я думаю состоять она будет максимум из 5-ти тарифов.
Если не сложно уточни, что должно в неё входить?
0
46 / 46 / 3
Регистрация: 18.10.2009
Сообщений: 119
25.11.2009, 00:47
составь )
Маркепузики это такие выдумщики что универсально под все тарифы ты не напишешь прогу. В принципе тебе необходимо написать тарификатор. Это задача на миллионы зелёных

Добавлено через 4 минуты
составь тарифы помогу с тарификатором. Благо не впервой...
0
0 / 0 / 0
Регистрация: 25.11.2009
Сообщений: 16
25.11.2009, 00:59  [ТС]
Я составил, вот сетка:
Миниатюры
Калькулятор тарифов.  
0
46 / 46 / 3
Регистрация: 18.10.2009
Сообщений: 119
25.11.2009, 01:14
не хватает абонентки в "Расчетливом"
не хватает времени "ночи" в "Ночном"
для тарифа "МЫ" потребуется номерная ёмкость МТС. Её я тебе не дам

Добавлено через 4 минуты
в принципе можешь её задать как +79160000000-+79169999999 для упрощения, но придётся вести это в виде таблицы где-то
0
0 / 0 / 0
Регистрация: 25.11.2009
Сообщений: 16
25.11.2009, 01:17  [ТС]
У расчетливого абонентка 350. В ночном ночью на местные 2 на остальные 2,5.
Всмысле в виде таблицы? Таблица со всем значениями номеров от +79160000000 до +79169999999?
0
46 / 46 / 3
Регистрация: 18.10.2009
Сообщений: 119
25.11.2009, 01:25
тебе надо составить список из объектов c полями из текстового файла. И свойствами для расчёта тарифа:
bool Night{get;}//ночное ли время?
bool MTS{get;}//номер мтс?
ещё что-то может

Добавлено через 1 минуту
затем взять любой месяц из текстового файла (там он один будет?) и посчитать по каждому тарифу стоимость - это сможешь сделать?
0
0 / 0 / 0
Регистрация: 25.11.2009
Сообщений: 16
25.11.2009, 01:28  [ТС]
Сомневаюсь, а как посчитать скажем несколько звонков в одном месяце?
0
46 / 46 / 3
Регистрация: 18.10.2009
Сообщений: 119
25.11.2009, 01:29
пример файла тогда давай
0
0 / 0 / 0
Регистрация: 25.11.2009
Сообщений: 16
25.11.2009, 01:32  [ТС]
Все номера на 919 это МТС.
Вложения
Тип файла: txt Mts.txt (479 байт, 37 просмотров)
0
46 / 46 / 3
Регистрация: 18.10.2009
Сообщений: 119
25.11.2009, 01:36
Это ты сам такой нарисовал или тебе такой дали?
1
0 / 0 / 0
Регистрация: 25.11.2009
Сообщений: 16
25.11.2009, 01:38  [ТС]
Сам.
0
46 / 46 / 3
Регистрация: 18.10.2009
Сообщений: 119
25.11.2009, 01:38
обычно данные выгружаются в csv или tab-delimited (что в принципе частный случай CSV).
1
0 / 0 / 0
Регистрация: 25.11.2009
Сообщений: 16
25.11.2009, 01:39  [ТС]
то есть отделяются запятыми?
0
46 / 46 / 3
Регистрация: 18.10.2009
Сообщений: 119
25.11.2009, 01:41
файл должен бы так выглядеть например (такое можно получить например копированием из экселя)
Вложения
Тип файла: txt Mts.txt (309 байт, 24 просмотров)
1
46 / 46 / 3
Регистрация: 18.10.2009
Сообщений: 119
25.11.2009, 02:23
Например так - реализовал 2 тарифа. Не учитывал дату звонка - по идее надо проверять что они в одном месяце.
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
    class Program
    {
 
        struct Call
        {
            public DateTime Date;
            public TimeSpan Dur;
            public string Num;
            public bool Night
            {
                get { return Date.Hour >= 21 || Date.Hour < 7; }// c 21:00 до 6:59:59
            }
            public double Minutes
            {
                get { return Dur.TotalMinutes; }
            }
            public bool MTS
            {
                get { return Num.StartsWith("8919"); }
            }
            public Call(string line)
            {
                var cols = line.Split('\t');
                Date = DateTime.Parse(cols[0] + " " + cols[1], CultureInfo.GetCultureInfo("ru-RU"));
                Dur = TimeSpan.Parse(cols[2]);
                Num = cols[3];
 
            }
 
        }
 
        private static Call[] s_calls;
        static void Main(string[] args)
        {
            var lines = System.IO.File.ReadAllLines("mts.txt");
            s_calls = new Call[lines.Length-1];
            for (var i = 1 /*в нулевой заголовки*/; i < lines.Length; i++ )
            {
                s_calls[i-1] = new Call(lines[i]);
            }
            Console.ReadLine();
 
        }
       
            
        abstract class MonthTarifier
        {
            public virtual double Payment { get { return 0; } }
            public abstract double GetPrice(Call call);
            public virtual int IncludedMinutes { get { return 0; } }
            private double minutes = 0;
            public virtual double Calc(Call[] calls)
            {
                var price = Payment;
                for(var i = 0; i<calls.Length; i++)
                {
                    price += CalcOne(calls[i]);
                }
                var nochnoy = new Nochnoy();
                var priceN = nochnoy.Calc(s_calls);
                var raschetliviy = new Raschetliviy();
                var priceR = raschetliviy.Calc(s_calls);
                if(priceR>priceN)
                {
                    Console.WriteLine("Расчётливый выгоднее ночного");
                }
                else
                {
                    if(priceN==priceR)
                        Console.WriteLine("Расчётливый и ночной одинаково выгодны");
                    else
                        Console.WriteLine("Ночной выгоднее расчётливого");
 
 
                }
                return price;
            }
            public virtual double CalcOne(Call call)
            {
                double min = Math.Ceiling(call.Minutes);//поминутная тарификация
                if(IncludedMinutes>=minutes)
                {
                    minutes += min;
                    if(minutes<=IncludedMinutes) return 0;
                    return (minutes - IncludedMinutes)*GetPrice(call);
                }
                minutes += min;
                return min*GetPrice(call);
            }
 
        }
        class Nochnoy: MonthTarifier
        {
            public override double GetPrice(Call call)
            {
                var price = call.MTS ? 4.5 : 5.0;
                if(call.Night) price /= 2;
                return price;
            }
        }
        class Raschetliviy : MonthTarifier
        {
            public override double Payment
            {
                get
                {
                    return 350;
                }
            }
            public override double GetPrice(Call call)
            {
                return 6;
            }
            public override int IncludedMinutes
            {
                get
                {
                    return 60;
                }
            }
        }
 
 
        
    }
1
0 / 0 / 0
Регистрация: 25.11.2009
Сообщений: 16
25.11.2009, 02:29  [ТС]
А здесь считывает со всех строк и столбцов?
0
46 / 46 / 3
Регистрация: 18.10.2009
Сообщений: 119
25.11.2009, 02:37
Ты же говоришь что с C# знаком )
1
0 / 0 / 0
Регистрация: 25.11.2009
Сообщений: 16
25.11.2009, 02:40  [ТС]
)) Да и еще вопрос при компиляции ошибка подобного рода :
Error 1 Program 'C:\Documents and Settings\Admin\Local Settings\Application Data\Temporary Projects\WindowsApplication1\obj\Debug\W indowsApplication1.exe' has more than one entry point defined: 'WindowsApplication1.Form1.Program.Main( string[])' C:\Documents and Settings\Admin\Local Settings\Application Data\Temporary Projects\WindowsApplication1\Form1.cs 50 21 WindowsApplication1

В ошибках подобного рода я не разбираюсь, не подскажешь что бы это могло быть?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
25.11.2009, 02:40
Помогаю со студенческими работами здесь

Подсчитать сумму тарифов за каждый месяц
Подсчитать сумму тарифов за каждый месяц, вывести строка - название тарифа, столбец - Январь, Февраль, Март. Помоги подлатать запрос ...

Вывести сумму тарифов за месяцы в диапазоне [a,b]
Помогите, пожалуйста, с Excel воевать, не пойму с какой стороны подойти - надо вывести сумму тарифов за месяцы в диапазоне . В общем надо,...

Расчет двух тарифов в обычный день и по льготному тарифу
Добрый день , прошу помощи в составлении таблицы и подсчета общего количество переговоров по льготному тарифу. Создал таблицу но не...

Объединение запросов на сумму тарифов и сумму подписок
Сумма за тариф по месяцам WITH CTE_table (name, January, February, March) AS ( SELECT tarif.name, (CASE WHEN...

Как преобразовать обычный калькулятор в калькулятор использующий класс стек?
#include &lt;iostream&gt; int main(){ int a = 0; int b = 0; char operation; std::cout &lt;&lt; &quot;Enter first number: &quot;; ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь(не выше 3-го порядка) постоянного тока с элементами R, L, C, k(ключ), U, E, J. Программа находит переходные токи и напряжения на элементах схемы классическим методом(1 и 2 з-ны. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru