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) / ДнейВГоду * ДнейВМесяце.
Смысл в том, что у вас не число, а символьное изображение числа, строка символов. И в этом случае решение правильное.
Но если число будет вводиться, да ещё и как строка, а, например, вычисляться, то вот тут уже такой подход не работает.
Это решение реально круче и компактнее. Только хорошо, если бы пользователю прям при выполнении предоставляли возможность ввести число, типа: …… char number[ ] = “0”; cin>>number; …… cout << "Это же число в обратном порядке: " << number[3] << number[2] << number[1] << number[0] << endl; ……
[code] int main() { setlocale(LC_ALL, “rus”); int a = 0; cout <> a; int b = 10; int c = a % b; int d = a / b; int e = d % b; int f = d / b; int g = f % b; int h = f / b; cout << "в обратном порядке цифры из которых сосотит это число – " <<c<<e<<g<<h<< endl; cout << "\n"; return 0;
} [/code]
#include
using namespace std; int main() { setlocale(LC_ALL,”rus”); int first = 5678; int second = 3087; cout << " Result " << first + second << endl;
Формула, которая формирует новое число X:
X = X * 10 + (a % 10), где a – исходное число.
#include
using namespace std;
int main() {
int x = 5678;
int reverse_x = 0;
while (x) {
reverse_x = reverse_x * 10 + x % 10;
x /= 10;
}
cout << reverse_x << endl;
return 0;
}
А у меня ничего не получается я ничего не поннял просто
я не знаю сколько надо долбить теорию
//—————————————————————————
#include
#pragma hdrstop
#include
#include
#include
//—————————————————————————
using namespace std;
#pragma argsused
int _tmain(int argc, _TCHAR* argv[])
{
double sum, res, srok;
cout<<"5% prozentna stavka v RIK!!!"<<endl;
cout<>sum;
cout<>srok;
res=sum*0.05*(srok/12);
cout<<"Zarobitok za vesy termin = "<<res<<"$"<<endl;
cout<<"Zarobitok za misyaz = "<<res/srok<<"$"<<endl;
cout<<"Zarobitok za misyaz = "<<res+sum<<"$"<<endl;
system("pause");
return 0;
}
//—————————————————————————
Не нужно долбить теорию…
А нужно задачи решать, решать и решать.
А если “ничего” не выходит, то нужно конкретно задавать вопросы – что там не выходит.
P.S. Обсуждать здесь детали неудобно (из-за движка), но можно на форуме:
http://rus-linux.net/forum/viewforum.php?f=31
#include
using namespace std;
int main()
{
char number[] = "5678";
setlocale(LC_ALL, "rus");
cout << "Данное число: " << number << endl;
cout << "Это же число в обратном порядке: " << number[3] << number[2] << number[1] << number[0] << endl;
system("pause");
return 0;
}
Мне такое решение больше нравится)
Или смысл был в том, чтобы выполнить с помощью деления по модулю?
Смысл в том, что у вас не число, а символьное изображение числа, строка символов. И в этом случае решение правильное.
Но если число будет вводиться, да ещё и как строка, а, например, вычисляться, то вот тут уже такой подход не работает.
Это решение реально круче и компактнее.
Только хорошо, если бы пользователю прям при выполнении предоставляли возможность ввести число, типа:
……
char number[ ] = “0”;
cin>>number;
……
cout << "Это же число в обратном порядке: " << number[3] << number[2] << number[1] << number[0] << endl;
……
[code]
int main()
{
setlocale(LC_ALL, “rus”);
int a = 0;
cout <> a;
int b = 10;
int c = a % b;
int d = a / b;
int e = d % b;
int f = d / b;
int g = f % b;
int h = f / b;
cout << "в обратном порядке цифры из которых сосотит это число – " <<c<<e<<g<<h<< endl;
cout << "\n";
return 0;
}
[/code]
#include
using namespace std;
int main()
{
setlocale(LC_ALL,”rus”);
int first = 5678;
int second = 3087;
cout << " Result " << first + second << endl;
system("pause");
return 0;
}
как мог
Моё решение первой задачи.
Работает с разным количеством знаков в числе.
unsigned int iNumber(0);
unsigned int iCurrent_digit;
unsigned int iNumber_temp;
int iBit (0);
cout <> iNumber)
{
if (iNumber >= 1 && iNumber <= 4294967295) break;
else cerr << "\nЧисло не из указанного диапазона. Введите ещё раз\n";
}
cout < 0; iBit++)
{
iNumber_temp = iNumber_temp / 10;
}
// Выводим числа в обратном порядке
for ( ; iBit > 0 ; iBit--)
{
iCurrent_digit = iNumber % 10;
if (iCurrent_digit == 0) break;
cout << iCurrent_digit;
iNumber /= 10;
}
Странно, но парсер обрубил часть кода и со скобками и << поработал. Печалька.
Эта проблема уже решена. Добавляйте код в комментарии между code и /code в квадратных скобках
Решение первой задачи,как вариант.
[code]
#include
#include
#include
using namespace std;
int main()
{
setlocale(LC_ALL, “rus”);
int a = 5678;
int b;
cout << "Данное число: " << a << endl;
cout << "Число наоборот: " ;
for (int i(0); i < 4 ; i++)
{
b = (a%(int)(pow(10,i+1)))/(int)pow(10,i);
cout << b;
}
_getch();
return 0;
}
[/code]
Как делить по модулю я честно говоря не догадался .
Но с расчетом депозита вроде как сделал еще проще =)
Задано ціле число A. Перевірити істинність висловлення: «Число
A є непарним та негативним» Как сжелать этот код в с ++?