Классы в С++
Простые объекты
Задача про деньги 1.За 1 доллар дают 1274 кьята 38 пью. За 1 рубль дают 6 центов. В одном долларе 100 центов. Книга стоит K кьят.
Написать программу, чтобы вычислить сколько она будет стоить в России (рубли, копейки)
Решение:За 1 доллар можно получить 1274 кьята и 38 пью. За книгу уже заплатили K кьят.
Неизвестно, сколько кьят дают за 1 рубль.
Поэтому сначала нужно узнать сколько книга стоит в долларах, а потом можно будет узнать сколько она стоит в рублях.
Чтобы узнать сколько книга стоит в долларах представим, что у нас 100$. Тогда за 100$ получим 127438 кьят.
Пишем программу:
// Начало мантры #include <iostream> #include <cstdlib> using namespace std; // Конец мантры // Напишем функцию печать рублей и копеек // Даем функции только копейки // функция не отдает никаких чисел, только печатает void print(int kop){ cout<<kop/100<<' '<<kop%100<<endl; }; int main(){ int K; // кьяты int R,k; // рубли и копейки int D, cn; // доллары и центы cin>>K; // За каждые 100$ мы должны получить 127438 кьята // И все деньги постчитаем в центах. cn=K*100*100/127438; // За 1рубль дают 6 центов, значит за 100 копеек дают 6 центов // Вычисляем сколько получим копеек k=cn*100/6; // Есть функция печати рублей и копеек, если есть только копейки // Печатаем. Вызываем функцию. print(k); }
У человека было R1 рублей и kop1 копеек. Cначала он получил ещe R2 рублей и kop2
копеек. А потом потратил R3 рублей и kop3 копеек.Написать программу, чтобы вычислить сколько у него осталось рублей и копеек.
Решение:Все деньги в задачах состоят из двух частей: рубли и копейки, доллары и центы, кьят и пью ...
Удобно писать программы, когда можно думать о деньгах просто, а не вспоминать, как считаем: в рублях или копейках.
Для этого можно использовать классы.
// Начало мантры #include <iostream> #include <cstdlib> using namespace std; // Конец мантры class Rus{ public: int R; // рубли int kop; // копейки void print(); // печать сразу всего }; // Rus::print() - полное имя функции. Принадлежит Rus (как фамилия) void Rus::print(){ cout<<R<<" руб. "<<kop<<" коп."<<endl; }; int main(){ Rus money; // кошелек money.R = 10; // 10 рублей в кошельке money.kop = 75; // 75 в кошельке // Напечатаем money.print(); }
Перепишите и запустите прогамму.
Но это еще не решение задачи.
Нужно:
- Складывать деньги
- Вычитать деньги
// Начало мантры #include <iostream> #include <cstdlib> using namespace std; // Конец мантры class Rus{ public: int R; // рубли int kop; // копейки // функция получает деньги void getMoney(int Rub, int kop); // Функция складывает деньги Rus add(Rus money); // Функция считает сколько осталось после траты money Rus minus(Rus money); // печать void print(); }; void Rus::print(){ cout<<R<<" руб. "<<kop<<" коп."<<endl; }; // Функция получения денег. // можно положить любое число копеек и рублей // она посчитает правильно void Rus::getMoney(int R1, int kop1){ int kp; // kp только для getMoney kp = R1*100+kop1; // все перевели в копейки R = kp /100; // сколько всего получилось рублей kop = kp %100; // сколько всего получилось копеек }; // Функция вернет деньги (Rus). // Rus::add() - полное имя функции // Rus money - функция получит тоже деньги // чтобы складывать Rus Rus::add(Rus money){ Rus tmp; // место для подсчета денег // Считаем все в копейках: tmp.kop = (R *100 + kop); // наши деньги // Добавили money tmp.kop = tmp.kop + money.R * 100 + money.kop; // Считаем рубли tmp.R = tmp.kop / 100; // обычные копейки tmp.kop = tmp.kop % 100; // Возвращаем посчитанные деньги return tmp; }; // Вычитание Rus Rus::minus(Rus money){ Rus tmp; // Здесь нужно написать про вычитание return tmp; }; int main(){ Rus dengi, dengiP,dengiM; Rus new_dengi; int rub, kops; // Получим деньги: cin>>dengi.R; // получили рубли cin>>dengi.kop; // получили копейки dengi.print(); // напечатали для проверки cin>>rub; // получили рубли cin>>kops; // получили копейки dengiP.getMoney(rub, kops); dengiP.print(); // напечатали для проверки // Сложили деньги new_dengi = dengi.add(dengiP); // Напечатали new_dengi.print(); //Тратим деньги cin>>rub; // получили рубли cin>>kops; // получили копейки dengiM.getMoney(rub, kops); new_dengi=dengi.minus(dengiM); new_dengi.print(); }
Допишите функцию вычитания денег.
За 1 доллар дают 65 рублей 33 коп. В одном долларе 100 центов. Автомат по продаже мороженного принимает деньги в рублях и долларах. Сдачу отдает только в долларах и центах. Мороженное стоит D долларов, p центов. Человек положил в автомат R рублей.
Написать программу, чтобы вычислить сколько он получит сдачи в долларах и центах.
Решение:Задачу решать удобно если у нас есть русские деньги и американские деньги.
Пишем программу// Начало мантры #include <iostream> #include <cstdlib> using namespace std; // Конец мантры class American; class Rus; class Rus{ public: int R; // int kop; // // получить деньги с клавиатуры void getMoney(); // сложить деньги Rus add(Rus dengy); // вычесть деньги Rus minus(Rus dengy); // проверить хватает ли на мороженное и посчитать сдачу American diff(American money); // печать void print(); }; class American{ public: int D; // доллары int cent; // центы // получить деньги с клавиатуры void getMoney(); // сложить деньги American add(American money); // посчитать сколько осталось после траты money American diff(American money); // превратить в русские деньги и вернуть русские Rus convertToRus(); // void print(); }; //________________________________________________________ // Здесь все про русские деньги //________________________________________________________ // Получить русские деньги с клавиатуры void Rus::getMoney(){ cin>>R>>kop; }; // Печать русских денег void Rus::print(){ cout<<R<<" руб. "<<kop<<" коп."<<endl; }; // Функция вернет деньги (Rus). // Rus::add() - полное имя функции // Rus money - функция получит тоже деньги // чтобы складывать Rus Rus::add(Rus money){ Rus tmp; // место для подсчета денег // Считаем все в копейках: tmp.kop = (R *100 + kop); // наши деньги tmp.kop = tmp.kop + money.R * 100 + money.kop; // Считаем рубли tmp.R = tmp.kop / 100; // обычные копейки tmp.kop = tmp.kop % 100; return tmp; }; // Дописать функцию Rus Rus::minus(Rus dengy){ // Дописать функцию здесь }; // Сдача, которую выдает автомат // по условию задачи American Rus::diff(American ice_price){ American tmp; // превратим русские деньги в американские // в центы int cent,cRus; //эти центы только для функции cRus = (R*100+kop)*100/6533; cent = cRus - (ice_price.D*100+ice_price.cent); if(cent>=0){ tmp.cent=cent%100; tmp.D=cent/100; }else{ tmp.cent=cRus%100; tmp.D=cRus/100; } tmp.print(); // Возвращаем деньги return tmp; }; //________________________________________________________ // Здесь все про американские деньги //________________________________________________________ // получение денег с клавиатуры void American::getMoney(){ // Здесь дописать функцию получения денег с клавиатуры }; // Печать американских денег void American::print(){ cout<<D<<"$ "<<cent<<" cent"<<endl; }; // Сложение американских денег (получил) American American::add(American money){ // Дописать функцию здесь }; // Вычитание американских денег (потратил) American American::diff(American money){ // Дописать функцию здесь }; // Перевод американских денег в русские Rus American::convertToRus(){ // Временные русские деньги (вернем) Rus tmp; // Все сначала получаем в центах и переводим в копейки int cnt = D*100+cent; int kp; kp = cnt*6533/100; // Получаем русские деньги tmp.kop = kp%100; tmp.R=kp/100; tmp.print(); // Возвращаем деньги return tmp; }; // Проверяем все функции int main(){ Rus dengi, dengi_plus,dengi_minus; American money, price; // Получим деньги: cin>>dengi.R; // получили рубли cin>>dengi.kop; // получили копейки dengi.print(); // Цена мороженного cin>>price.D; // получили доллары cin>>price.cent; // получили центы // Проверили, напечатали price.print(); // Купили мороженнон money = dengi.diff(price); // Напечатали money.print(); // Поменяли деньги в другом автомате dengi_minus=money.convertToRus(); // Напечатали dengi_minus.print(); }
Допишите все функции и проверьте их
За 1 доллар дают 1274 кьята 38 пью. В одном долларе 100 центов. Автомат по продаже мороженного принимает деньги во всех валютах. Сдачу отдает только в долларах и центах. Если денег не хватает, то автомат возвращает деньги в долларах и центах. Мороженное стоит D долларов, p центов. Человек положил в автомат K кьят.
Написать программу, чтобы вычислить сколько он получит сдачи в долларах и центах.
Решите эту задачу. Опишите класс Myanmar - деньги Мьянмы