3 / 3 / 0
Регистрация: 09.12.2014
Сообщений: 56
|
|
1 | |
Найти самое длинное и короткое название. Из самого длинного названия удалить число символов, равных длине само29.06.2015, 10:53. Показов 686. Ответов 0
Метки нет (Все метки)
Найти самое длинное и короткое название. Из самого длинного названия удалить число символов, равных длине самого короткого, начиная с третьего символа самого длинного.
Вывести этот элемент. #include "stdafx.h" #include <fstream> #include <iostream> #include <string> #include <vector> using namespace std; class Operator { public: double summr(); void Init(string n, double m, double r, int p); void Read(); void Display(); double vigod(); //выгода double GetM(); double GetR(); Operator(string n, double m, double r, int p); //конструктор с параметрами Operator(); //конструктор без параметров void Load(string n); void Save(string n); void Putname(string s); string Getname(); protected: string name; // оператор double min; //минуты double roum; //роуминг int proc; // %роуминга }; double Operator::summr() { return min / roum; } void Operator::Init(string n, double m, double r, int p) { name = n; // оператор min = m; roum = r; proc = p; } void Operator::Putname(string s) { name = s; } string Operator::Getname() { return name; } void Operator::Load(string n) { ifstream fin; //файловый вывод fin.open(n.c_str());//перевод в массив char fin >> name >> min >> roum >> proc; fin.close(); } void Operator::Save(string n) { ofstream fout;//файловый вывод fout.open(n.c_str()); fout << name << " " << min << " " << roum << " " << proc; fout.close(); } void Operator::Read() { cout << "Оператор" << endl; cin >> name; cout << "Стоимость минуты" << endl; cin >> min; cout << "Роуминг" << endl; cin >> roum; cout << "Процент роуминга от обычных разговоров" << endl; cin >> proc; } void Operator:isplay() { cout << "Оператор " << name << endl; cout << "Стоимость минуты " << min << endl; cout << "Роуминг " << roum << endl; cout << "Процент роуминга от обычных разговоров " << proc << endl; } Operator::Operator(string n1, double m1, double r1, int p1)//конструктор спараметрами { Init(n1, m1, r1, p1); } Operator::Operator() //конструктор без параметров { Init("MTC", 3, 4, 10); } double Operator::vigod() { double pr; // % роуминга pr = proc / 100; return (roum*(pr * 100)) + (((1 - pr) * 100)*min); } double Operator::GetM() // минуты { return min; } double Operator::GetR() // роуминг { return roum; } class c_sms ublic Operator { public: c_sms(); c_sms(string n1, double m1, double r1, int p1, double s1); double vigod(); void Putsms(double s); double Getsms(); void operator=(Operator p); void Display(); void Load(string n);//перегрузка void Save(string n); private: double sms; }; void c_sms::Load(string n) { ifstream fin;//файловый вывод fin.open(n.c_str());//перевод в массив fin >> name >> min >> roum >> proc >> sms; fin.close(); } void c_sms::Save(string n) { ofstream fout;//файловый вывод fout.open(n.c_str()); fout << name << " " << min << " " << roum << " " << proc << " " << sms; fout.close(); } void c_sms:isplay() { Operator:isplay(); cout << "СМС " << sms << endl; } void c_sms::operator=(Operator p) { sms = p.vigod() / 2; } c_sms::c_sms() :Operator() { sms = 10; } c_sms::c_sms(string n1, double m1, double r1, int p1, double s1) : Operator(n1, m1, r1, p1) { sms = s1;//объявление дополнительной среды } void c_sms::Putsms(double s) { sms = s; } double c_sms::Getsms() { return sms; } double c_sms::vigod() { double pr; pr = proc / 100; return ((roum*(pr * 100)) + (((1 - pr) * 100)*min) + sms); } class Potrebitel { public: double summ(); Potrebitel(char *n1, double m1, double r1, int p1, char *n2, double m2, double r2, int p2, char *n3, double m3, double r3, int p3, int a1, int a2, int a3, int b1, int b2, int b3, char* n4, double m4, double r4, int p4, double s4, char* n5, double m5, double r5, int p5, double s5); Operator boleewig(); void Display(); friend double summr(Potrebitel k); double summin(); private: Operator t1; //телефон 1 Operator t2; //телефон 2 Operator t3; //телефон 3 c_sms t4; c_sms t5; int minm1, minm2, minm3, minr1, minr2, minr3; }; void Potrebitel:isplay() // вывод на экран { cout << "Первый телефон " << endl; t1.Display(); cout << "Второй телефон " << endl; t2.Display(); cout << "Третий телефон " << endl; t3.Display(); } double summr(Potrebitel k) { double first, second, third; first = k.t1.summr(); second = k.t2.summr(); third = k.t3.summr(); return first + second + third; } Potrebitel::Potrebitel(char* n1, double m1, double r1, int p1, char* n2, double m2, double r2, int p2, char* n3, double m3, double r3, int p3, int a1, int a2, int a3, int b1, int b2, int b3, char* n4, double m4, double r4, int p4, double s4, char* n5, double m5, double r5, int p5, double s5) { t1.Init(n1, m1, r1, p1); t2.Init(n2, m2, r2, p2); t3.Init(n1, m3, r3, p3); t4.Init(n4, m4, r4, p4); t5.Init(n5, m5, r5, p5); t4.Putsms(s4); t5.Putsms(s5); minm1 = a1; minm2 = a2; minm3 = a3; minr1 = b1; minr2 = b2; minr3 = b3; } double Potrebitel::summ() //общие затраты { return minm1*t1.GetM() + minr1*t1.GetR() + minm2*t2.GetM() + minr2*t2.GetR() + minm3*t3.GetM() + minr3*t3.GetR(); } Operator Potrebitel::boleewig() // находим более выгодный тариф { double a, b, c; a = t1.vigod(); //телефон 1 b = t2.vigod(); //телефон 2 c = t3.vigod(); // телефон 3 if ((a<b) && (a<c)) return t1; // сравниваем находим более выгодный if ((b<a) && (b<c)) return t2; else return t3; } double Potrebitel::summin() { return (t1.GetM() + t2.GetM() + t3.GetM() + t4.GetM() + t5.GetM()); } int main() { setlocale(LC_ALL, "Russian"); //чтение названий операторов и занесение объектов класса "оператор" в контейнер vector<Operator> list; int kol; do { cout << "Введите количество операторов: "; cin >> kol; } while (kol<1 || kol>100); for (int i = 0; i < kol; i++) { Operator *op = new Operator(); cout << "Введите название оператора " << i + 1 << ": "; string name; cin >> name; op->Putname(name); list.push_back(*op); } //по заданию: Найти самое длинное и короткое название. Из самого длинного названия удалить число символов, //равных длине самого короткого, начиная с третьего символа самого длинного. Вывести этот элемент. int min = 100 * 100 * 100, //длина минимального названия _min = 0, //номер объекта с минимальным названием в контейнере max = 0, //длина максимального названия _max = 0; //номер объекта с максимальным названием в контейнере for (int i = 0; i < list.size(); i++) { string name = list[i].Getname(); int size = name.size(); if (size < min) { min = size; _min = i; } if (size > max) { max = size; _max = i; } } //если минимальный и максимальный - не один и тот же элемент, то делаем по заданию string name = list[max].Getname(), part1 = "", part2 = ""; if (_min != _max) if (name.length() > 2) { part1 = name[0] + name[1]; if (name.length() > (2+min)) for (int i = 2 + min; i < name.length(); i++) part2 += name[i]; name = part1 + part2; //вывод cout << endl << "Удалили " << min << " символов из названия " << list[max].Getname() << ", начиная с третьего символа." << endl; cout << "Получили: " << name << endl << endl; list[max].Putname(name); } // system("pause"); return 0; } помогите с программой выдает предупреждения и из-за этого не работает как надо
0
|
29.06.2015, 10:53 | |
Ответы с готовыми решениями:
0
Есть названия трёх городов. Вывести самое длинное и короткое названия, количество символов в них Найти самое длинное и самое короткое слово и количество символов в них Найти самое короткое и самое длинное число. Вывести найденные числа и их длину Найти самое короткое и самое длинное число |
29.06.2015, 10:53 | |
29.06.2015, 10:53 | |
Помогаю со студенческими работами здесь
1
Вывести на экран самое длинное и самое короткое название городов Вывести на экран самое длинное и самое короткое название города Вывести на экран самое длинное и самое короткое название города Вывести на экран самое длинное и самое короткое название города Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |