1. Распространённая задача: Дано четырехзначное число (к примеру 5678), вывести на экран в обратном порядке цифры из которых это число состоит. То есть мы должны увидеть на экране 8765. Подсказка: чтобы взять из числа отдельные цифры, надо применять деление по модулю на 10.
Показать код
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
#include <iostream>
usingnamespacestd;
intmain()
{
setlocale(LC_ALL,"rus");
intmainNumber=5678;
cout<<"Дано целое число: "<<mainNumber<<endl;
cout<<"Число наизнанку: ";
// остаток от деления четырехзначного числа 5678 на 10
cout<<mainNumber%10;// 5678 % 10 = 8
// далее делим mainNumber на 10 и записываем в переменную
// так как тип переменной int, дробная часть отбросится
// и mainNumber будет равен 567 (а не 567,8)
mainNumber/=10;
// показываем остаток от деления 567 на 10 на экран
cout<<mainNumber%10;
mainNumber/=10;
cout<<mainNumber%10;
mainNumber/=10;
cout<<mainNumber%10;
mainNumber/=10;
cout<<endl<<endl;
return0;
}
Результат:
2. На сайте практически любого коммерческого банка, можно встретить так называемый Депозитный калькулятор, который позволяет людям, не желающим углубляться в формулы расчета процентных ставок, узнать какую прибыль они получат. Для этого им достаточно заполнить определённые поля, нажать на кнопку и увидеть результат. Это простая программа, которую уже сможет написать каждый из вас. Итак, задача: Пользователь вводит сумму депозита и количество месяцев хранения денег в банке. Необходимо провести расчет и показать на экран прибыль с депозита в месяц, за весь срок депозита, и общую сумму к выплате в конце срока. Валюта пусть будет – доллар США. Процентная ставка – 5% годовых. Формула расчета процентов в месяц – СуммаДепозита * (ПроцентнаяСтавка / 100) / ДнейВГоду * ДнейВМесяце.
// умножаем % за 1 месяц на весь срок депозита и записываем в profit
profit*=amountMonth;
cout<<profit<<" $"<<endl;
cout<<"Общая сумма выплаты в конце срока: "
<<sumDeposit+profit<<" $";
cout<<endl<<endl;
return0;
}
Результат:
Возможно у вас возникли вопросы по решению задач – задавайте их в комментариях!
4.4
47
151 thoughts on “Задачи: арифметические операции в С++”
float stavka = 1.05; int srok = 0; float dohod = 0; float dohodVmes = 0; int vklad = 0; cout << "введите сумму вклада" <> vklad; cout << "введите срок депозита" <> srok; dohodVmes = (stavka*vklad-vklad) / 12; dohod = (vklad*srok*stavka)/12; cout << "ваша прибыль в месяц = " << dohodVmes << endl; cout << "сума к выплате в конце срока= " << dohod << endl;
Здравствуйте…извините конечно, я вот так сразу и с замечаниями ))) Мой вариант считает более корректно. Вся суть в том, что у вас не правильно считается месячная прибыль. Вы привязались к количеству дней, а оно в разных месяцах разное! Поэтому расчет и в итоге будет не совсем правильный. Да и банки считают помесячно. Ваш вариант будет считать правильно если разбить ежемесячный доход на 12 месяцев и учесть кол-во дней в каждом. Если 1000 долларов под 5% положить на год, то прибыль будет 50 у.е )) ..как ни крути ))
int main() { setlocale(LC_ALL , “Russian”); short int a, b, c, d, e; a=b=c=d=0; cout << "Введите 4 значительное число \t:" <> e ; d = e%10; c = e/10%10; b =e/10/10%10; a = e/10/10/10%10; cout << "Ваши цифры в обратном порядке – " << d << c << b << a << endl; return 0; }
Нет! Это не движок сайта, а это какое-то убоище! :-(
Кстати, в этой задаче (№1) можно … и хорошо бы “обмануть” пользователя. Обмануть тем, что cin первоначально вводит символьные данные и только затем преобразовывает их в требуемый тип. Можно просто не делать вообще никаких преобразований: #include using namespace std;
int main() { string e; while( true ) { cout << "Введите любое положительное целое : "; getline( cin, e ); cout << "Введенные цифры в обратном порядке : "; for( string::const_reverse_iterator i = e.rbegin(); i != e.rend(); i++ ) cout << *i; cout << endl; } }
Объясните по следующему моменту: Если расчет ставки делать так – amountMonth = deposit * (5 / 100) / 365 * 31; то значения равны 0. Если присвоить значение переменной 5, и вставить в скобки, то все работает… float procent = 5; amountMonth = deposit * (procent / 100) / 365 * 31; Почему первый вариант не просчитывает корректно?
float stavka = 1.05;
int srok = 0;
float dohod = 0;
float dohodVmes = 0;
int vklad = 0;
cout << "введите сумму вклада" <> vklad;
cout << "введите срок депозита" <> srok;
dohodVmes = (stavka*vklad-vklad) / 12;
dohod = (vklad*srok*stavka)/12;
cout << "ваша прибыль в месяц = " << dohodVmes << endl;
cout << "сума к выплате в конце срока= " << dohod << endl;
Здравствуйте…извините конечно, я вот так сразу и с замечаниями )))
Мой вариант считает более корректно. Вся суть в том, что у вас не правильно считается месячная прибыль. Вы привязались к количеству дней, а оно в разных месяцах разное! Поэтому расчет и в итоге будет не совсем правильный. Да и банки считают помесячно. Ваш вариант будет считать правильно если разбить ежемесячный доход на 12 месяцев и учесть кол-во дней в каждом.
Если 1000 долларов под 5% положить на год, то прибыль будет 50 у.е )) ..как ни крути ))
Мой вариант программы. Оцените.
#include
using namespace std;
int main(void)
{
setlocale(LC_ALL, "Russian");
double deposit; //ваш депозит
double rate; //ваш процент
int month; //количество месяцев
int Num; //количество дней в месяце
cout << deposit;
cout << month;
cout << Num;
cout <<rate;
double S = (deposit*(rate/100)) / month;
cout << "Ваш месячный процент=" << S;
cout << "\n";
cout << "Ваш процент за год=" << S*month<<endl;
}
Не дочитал условия и сделал по своей формуле….но все работает отлично!!
#include
#include
using namespace std;
int main()
{
setlocale(LC_ALL, "rus");
float deposit = 0;
float stavka = 0;
float kol_mes = 0;
float preb = 0;
cout << deposit;
cout << stavka;
cout << kol_mes;
preb = kol_mes * (deposit / 100) * (stavka / 12);
cout << "Ваша прибыль составит " << preb << endl;
_getch();
return 0;
}
1. Можно и так :
#include
#include
using namespace std;
int main() {
setlocale(LC_ALL , “Russian”);
short int a, b, c, d, e;
a=b=c=d=0;
cout << "Введите 4 значительное число \t:" <> e ;
d = e%10;
c = e/10%10;
b =e/10/10%10;
a = e/10/10/10%10;
cout << "Ваши цифры в обратном порядке – " << d << c << b << a << endl;
return 0;
}
А я бы так сделал:
int i=1234;
for(;i;i/=10) cout<<i%10; cin.get();
> 1. Можно и так :
Можно и так…
Только тогда уже “по мотивам вашего решения” лучше сделать вот так:
#include
using namespace std;
int main() {
unsigned long long e;
while( true ) {
cout <> e;
cout << "Введенные цифры в обратном порядке : ";
for( ; e != 0; e /= 10 )
cout << e % 10;
cout << endl;
}
return 0;
}
И число здесь не 4-х значное, а любой разрядности, и код короче.
Нет! Это не движок сайта, а это какое-то убоище! :-(
Кстати, в этой задаче (№1) можно … и хорошо бы “обмануть” пользователя. Обмануть тем, что cin первоначально вводит символьные данные и только затем преобразовывает их в требуемый тип. Можно просто не делать вообще никаких преобразований:
#include
using namespace std;
int main() {
string e;
while( true ) {
cout << "Введите любое положительное целое : ";
getline( cin, e );
cout << "Введенные цифры в обратном порядке : ";
for( string::const_reverse_iterator i = e.rbegin(); i != e.rend(); i++ )
cout << *i;
cout << endl;
}
}
2-й обман здесь состоит в том, что мне удалось обмануть этот придурастый движок сайта, который сжирает:
cin >> e;
Если оно следует за cout …
#include
using std::cout;
using std::cin;
using std::endl;
int main()
{
setlocale(0, "Russian");
float Deposit = 0;
int month = 0;
float procent = 5;
float result = 0;
cout << "Введите сумму депозита:" <> Deposit;
cout << "Введите кол-во месяцев:" <> month;
result = Deposit * (procent / 100) / 365 * 31;
cout << "Сумма по окончанию срока депозита:" << result + Deposit << endl;
return 0;
}
Вот мой код, работает, но я поленился вводить переменные для кол-ва дней
Объясните по следующему моменту:
Если расчет ставки делать так – amountMonth = deposit * (5 / 100) / 365 * 31;
то значения равны 0.
Если присвоить значение переменной 5, и вставить в скобки, то все работает…
float procent = 5;
amountMonth = deposit * (procent / 100) / 365 * 31;
Почему первый вариант не просчитывает корректно?
#include
using std::cout;
using std::cin;
int main()
{
float sumDeposit = 0, hranenie = 0, otvet = 0, procentStav = 0;
int dneyvMes9ce = 0, dneyvGody = 0;
cout<<dneyvGody;
cout<<dneyvMes9ce;
cout<<sumDeposit;
cout<<hranenie;
cout<<procentStav;
//formula rac4eta procentov v mesac:
otvet = sumDeposit * (procentStav / 100) / 365 * 30;
cout<<"============================================\n";
cout<<"Procent v mes9c po formule: "<<sumDeposit<<" * "<<procentStav<<"% / "<<dneyvGody<<" * "<<dneyvMes9ce<<" = "<<otvet<<"$";
cout<<"\nProcent za vec' srok: "<<otvet*hranenie+sumDeposit<<"$";
return 0;
}