Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 31.03.2011, 09:38   #1
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию Лафоре, Денежная система Великобритании

Понимаю, что задача простая, но не получается решить уже несколько дней.

Надо преобразовать сумму, записанную в устаревшем формате (в которой 1 фунт=20 шиллингов, 1 шиллинг=12 пенсов) в современную денежную систему (1 фунт=100 пенсов).

Получилось вот так:
Код:
float newmoney = (oldmoney1.funt*240 + oldmoney1.shill*12 + oldmoney1.pens) / 100;
Что неправильно и как надо?)
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 31.03.2011, 10:52   #2
Летучий_СкилетиК
Форумчанин
 
Аватар для Летучий_СкилетиК
 
Регистрация: 04.02.2011
Сообщений: 260
По умолчанию

по моему надо не на 100 делить , а отнять 140, так как по старой системе 1 фунт=240 пенсов, а по новой 100, в сумме вы все перевели в пенсы, осталось только отнять избыток
Летучий_СкилетиК вне форума Ответить с цитированием
Старый 31.03.2011, 11:06   #3
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Отнять 140 от чего?
Если просто заменить \ 100 на - 140, то это будет 1763 (должно получиться 7.89 из 7 фунтов, 17 шиллингов, 9 пенсов в старой системе).
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 31.03.2011, 11:23   #4
Летучий_СкилетиК
Форумчанин
 
Аватар для Летучий_СкилетиК
 
Регистрация: 04.02.2011
Сообщений: 260
По умолчанию

Цитата:
Сообщение от Alex11223 Посмотреть сообщение
Отнять 140 от чего?
Если просто заменить \ 100 на - 140, то это будет 1763 (должно получиться 7.89 из 7 фунтов, 17 шиллингов, 9 пенсов в старой системе).
вы перевели все в pens по старой системе:
Код:
float newmoney = (oldmoney1.funt*240 + oldmoney1.shill*12 + oldmoney1.pens)/100;
если я правильно понял вы хотите получить ответ сколько будет в новой системе. 1фунт в старой системе = 240 пенсов, а новой 100 пенсов, так разница между новой и старой системой в 140 пенсов.,
Код:
float newmoney = ((oldmoney1.funt*240 + oldmoney1.shill*12 + oldmoney1.pens)/100)-140;
это будет все в пенсах в новой системе.

Последний раз редактировалось Летучий_СкилетиК; 31.03.2011 в 16:11.
Летучий_СкилетиК вне форума Ответить с цитированием
Старый 31.03.2011, 11:38   #5
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

А, сори, понял.
т.е. тогда получается чтобы получить ответ в фунтах новой системы надо

Код:
float newmoney = (oldmoney1.funt*240 + oldmoney1.shill*12 + oldmoney1.pens - 140) / 100;
или

Код:
float newmoney = (oldmoney1.funt*240 + oldmoney1.shill*12 + oldmoney1.pens - 140*oldmoney1.funt) / 100;
?

Но ответ все равно не совпадает с правильным.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.

Последний раз редактировалось Alex11223; 31.03.2011 в 11:40.
Alex11223 вне форума Ответить с цитированием
Старый 31.03.2011, 11:43   #6
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
так разница между новой и старой системой в 140 пенсов.,
Вы заблуждаетесь! Это не так.

Alex11223,
имхо, в первом сообщении всё правильно у Вас написано.

Проблема может быть только в том, что надо полученное значение "разложить" на новые фунты и пенсы (функты получить путём целочисленного деления суммы в старых пенсах на 100), новые пенсы - это остаток от целочисленного деления на 100..


Цитата:
Но ответ все равно не совпадает с правильным.
приведите пример, по которому Вы проверяете результат вычислений.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 31.03.2011, 11:45   #7
Mandrivnyk
Software Developer
Участник клуба
 
Аватар для Mandrivnyk
 
Регистрация: 01.03.2011
Сообщений: 1,098
По умолчанию

ИМХО, вопрос в том, что принимать за точку отсчета.
Ты исходишь из того, что неизменной осталась, скажем так, номинальная стоимость пенса, я же понимаю, что неизменным остался фунт.
Поэтому пересчитывать надо не относительно пенса, ибо старый пенс и новый пенс, как говорят в Одессе, две большие разницы, а относительно фунта.
Болтовня ничего не стоит. Покажите мне код. (c) Linus Torvalds
Помог ответ? -- Поставьте отзыв.
Выражения особой благодарности в рублевом эквиваленте отправлять сюда --> R269634919062
Mandrivnyk вне форума Ответить с цитированием
Старый 31.03.2011, 12:00   #8
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Да, тоже думал что же осталось неизменным (что-то даже в гугле не нашел ответа на этот вопрос).

Вот полный текст задачи (из "ООП в С++" Р. Лафоре, встречается начиная с 2 главы):

Цитата:
Устаревшая денежная система Великобритании состояла из фунтов, шиллингов и пенсов. 1 фунт был равен 20 шиллингам, а 1 шиллинг —12 пенсам. Для записи использовалась система, состоящая из знака 2 и трех десятичных значений, разделенных точками. Например, запись £5.2.8 обозначала 5 фунтов, 2 шиллинга и 8 пенсов (пенс — множественное число от пенни). Современная денежная система, принятая в 50-е годы XX века, со-
стоит только из фунтов и пенсов, причем один фунт равен 100 пенсам. Такой фунт называют десятичным. Таким образом, в новой денежной системе указанная сумма будет обозначаться как £5.13 (если быть точнее, £5.1333333). Напишите программу, которая будет преобразовывать сумму, записанную в старом формате (фунты, шиллинги, пенсы), в новый формат (фунты, пенсы).

Форматом взаимодействия программы с пользователем может являться следующий:
Введите количество фунтов: 7
Введите количество шиллингов: 17
Введите количество пенсов: 9
Десятичных фунтов: £7.89
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 31.03.2011, 12:10   #9
Mandrivnyk
Software Developer
Участник клуба
 
Аватар для Mandrivnyk
 
Регистрация: 01.03.2011
Сообщений: 1,098
По умолчанию

Код:
float newmoney = (oldmoney1.funt + oldmoney1.shill/20 + oldmoney1.pens/240);
newmoney -- готовый ответ в фунтах.
Округли до двух знаков после запятой и получишь искомый ответ.
Болтовня ничего не стоит. Покажите мне код. (c) Linus Torvalds
Помог ответ? -- Поставьте отзыв.
Выражения особой благодарности в рублевом эквиваленте отправлять сюда --> R269634919062
Mandrivnyk вне форума Ответить с цитированием
Старый 21.07.2011, 22:47   #10
Костя Соколов
Новичок
Джуниор
 
Аватар для Костя Соколов
 
Регистрация: 21.07.2011
Сообщений: 9
Смех СКОПИРОВАТЬ И НЕПАРИТЬСЯ =3

ВСЕМ ПРИВА.
Я КАК НОВИЧОК МАЛО ЧЕГО ПОНЯЛ ОТСЮДА И РЕШИЛ САМ РАЗОБРАТЬСЯ.

Устаревшая денежная система Великобритании состояла из фунтов, шиллингов и пенсов. 1 фунт был равен 20 шиллингам, а 1 шиллинг —12 пенсам. Для записи использовалась система, состоящая из знака 2 и трех десятичных значений, разделенных точками. Например, запись £5.2.8 обозначала 5 фунтов, 2 шиллинга и 8 пенсов (пенс — множественное число от пенни). Современная денежная система, принятая в 50-е годы XX века, со-
стоит только из фунтов и пенсов, причем один фунт равен 100 пенсам. Такой фунт называют десятичным. Таким образом, в новой денежной системе указанная сумма будет обозначаться как £5.13 (если быть точнее, £5.1333333). Напишите программу, которая будет преобразовывать сумму, записанную в старом формате (фунты, шиллинги, пенсы), в новый формат (фунты, пенсы).

Форматом взаимодействия программы с пользователем может являться следующий:
Введите количество фунтов: 7
Введите количество шиллингов: 17
Введите количество пенсов: 9
Десятичных фунтов: £7.89


РЕШЕНИЕ:

Цитата:
#include <iostream>
using namespace std;
int main()
{
float funt,shill,pens;//посмотрите чтобы стоял float или double
cout << "FUNT : ";//20 (1 фунт 20 шиллингов)
cin >>funt;
cout << "SHILLing : ";//12 (1 шиллинг 12 пенс)
cin>>shill;
cout << "PENNi : ";
cin>> pens;
cout<<"new MONeY : ";
/*new1=funt*20+shill;
new2=new1*12+pens;
new3=new2/240;
cout<<"new MONeY"<<new3<<endl;*/

cout <<"new MONeY"<<((funt*20+shill)*12+pens)/240;

return 0;
}
ДОБАВЛЯЮ ЕТОТ КОММЕНТАРИЙ СО СВОИМ РЕШЕНИЕМ
ЧТОБЫ ТАКИЕ ЖЕ НОВИЧКИ КАК Я СМОГЛИ ПОНЯТЬ
СКОПИРОВАТЬ В CodeBlocks И ИДТИ ДАЛЬШЕ ПО КНИГЕ.
Я НЕ УВЕРЕН В СВОЁМ РЕШЕНИИ НО ОТВЕТ В КНИГЕ ТАКОЙЖЭ.
если вам несложно поправте мой текст чтобы оно округлило и вставило вот такой символ £ .
ото я ещё не умею.
связь со мной по почте cokol1pro@gmail.com
или по скайпу coko1994
-_- хватит меня критиковать.

Последний раз редактировалось Костя Соколов; 21.07.2011 в 22:50.
Костя Соколов вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Дороги Великобритании Utkin Свободное общение 53 14.04.2016 08:29
Лафоре, задачи Narayana Общие вопросы C/C++ 4 28.02.2012 17:39
Денежная система Великобритании 2 Костя Соколов Общие вопросы C/C++ 1 22.07.2011 23:47
Бизнес в Великобритании KOC Свободное общение 5 27.04.2010 02:08