Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
3 / 3 / 0
Регистрация: 09.12.2014
Сообщений: 56
1

Найти самое длинное и короткое название. Из самого длинного названия удалить число символов, равных длине само

29.06.2015, 10:53. Показов 686. Ответов 0
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Найти самое длинное и короткое название. Из самого длинного названия удалить число символов, равных длине самого короткого, начиная с третьего символа самого длинного.
Вывести этот элемент.
#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
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
29.06.2015, 10:53
Ответы с готовыми решениями:

Есть названия трёх городов. Вывести самое длинное и короткое названия, количество символов в них
Обязательный старт - запись названий в строку, или в отдельные строки. При таком выполнении...

Найти самое длинное и самое короткое слово и количество символов в них
Помогите решить задачи на строки.на стандартные операции и функции для строк 1.В предложении...

Найти самое короткое и самое длинное число. Вывести найденные числа и их длину
Ввести n чисел с консоли. Найти самое короткое и самое длинное число. Вывести найденные числа и...

Найти самое короткое и самое длинное число
В задаче нужно ввести n чисел с консоли, найти самое короткое и самое длинное число. Вывести...

0
29.06.2015, 10:53
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
29.06.2015, 10:53
Помогаю со студенческими работами здесь

Вывести на экран самое длинное и самое короткое название городов
1.&quot;составить программу на языке Turbo Pascal и блок схему к ней:вывести на экран таблицу перевода...

Вывести на экран самое длинное и самое короткое название города
Даны названия трех городов. Вывести на экран самое длинное и самое короткое название

Вывести на экран самое длинное и самое короткое название города
Даны названия трех городов. Вывести на экран самое длинное и самое короткое название.

Вывести на экран самое длинное и самое короткое название города
1) запрашивает названия трех городов; 2) проверяет, чтобы все они были разной длины, если это не...


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

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru