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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

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

Закрытая тема
Ваша тема закрыта, почему это могло произойти? Возможно,
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу.
Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста".
Название темы слишком короткое или не отражает сути вашего вопроса.
Тема исчерпала себя, помните, один вопрос - одна тема
Прочитайте правила и заново правильно создайте тему.
 
Опции темы Поиск в этой теме
Старый 10.12.2013, 18:10   #1
DimDimich
Пользователь
 
Регистрация: 10.12.2013
Сообщений: 18
Восклицание Перевод численного значения в валютный вид!

Здравствуйте!В общем задача такова:перевести 23.6 в 23 грн. 60 коп.


Код:
# include <iostream>
using namespace std;
void main(){
	setlocale(LC_ALL,"rus");
	long double a;
	cout<<"Введiть данi для конвертацiї у валютний вигляд."<<endl;
	cin>>a;
	int b=a;
	int c;
	cout<<b<<"грн."<<c<<"коп."<<endl;
}
вот что на данный момент получилось,не получается отделить то что после комы в копейки
DimDimich вне форума
Старый 10.12.2013, 18:29   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Это на JS:
Код:
function MoneyTell(n){
	var v=[
	  ['один', 'два', 'три', 'четыре', 'пять', 'шесть', 'семь', 'восемь', 'девять']
	 ,['десять', 'двадцать', 'тридцать', 'сорок', 'пятьдесят', 'шестьдесят', 'семьдесят', 'восемьдесят', 'девяносто']
	 ,['сто', 'двести', 'триста', 'четыреста', 'пятьсот', 'шестьсот', 'семьсот', 'восемьсот', 'девятьсот']
	]
    if(typeof(n) == 'number') n=''+n;
	var tsv = ['тысяча', 'тысячи', 'тысячи', 'тысячи', 'тысяч', 'тысяч', 'тысяч', 'тысяч', 'тысяч'];
	var a=n.split('.');
	var res='';
	var k=parseInt(a[0])
	var  i=0,m=0;
	if (k > 10 && k < 20) {
	 if(k!=4) res = v[0][k%10-1]+"надцать"; else res='четырнадцать';
	}else {
		var it=0;
		for (; k > 0; i++,it++){
		  m = k % 10;
		 if (m != 0){
			 if(it==3) {
				i=0;
				if(m!=1) {
					res=v[i][m - 1] +' '+ tsv[m-1] + ' ' + res;
				}else{
					res='одна '+ tsv[m-1] + ' ' + res;
				}
			 } else {
				res = v[i][m - 1] + ' ' + res; 
			 }
		 }
		 k=parseInt(k/10);
		}
	}
	res=res.substring(0,1).toUpperCase()+res.substring(1)+' грн. ';
	if(a[1]) res+=a[1]+' коп.'; else res+='00 коп.';
return res;
}
Нужно просто в Си найти аналогичные функции для работы со строками и применить в этом коде Например res.substring(0,1) можно заменить на strcpy(), а для split придумать функцию разделения на целое и дробное.
Справишься?
I'm learning to live...
Stilet вне форума
Старый 10.12.2013, 18:39   #3
DimDimich
Пользователь
 
Регистрация: 10.12.2013
Сообщений: 18
По умолчанию

скорее всего нет,я только начал учиться этому и знаю только то что препод дал)
возможно меня неправильно поняли,нужно отделить из 23.6 целую и дробную часть и записать ее в валютном виде вот так 23грн 60коп

Последний раз редактировалось DimDimich; 10.12.2013 в 19:01.
DimDimich вне форума
Старый 10.12.2013, 19:19   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Если только отделить то:
Код:
char *s="23.6";
for(int i=0;s[i] && s[i]!='.';i++) printf("%c",s[i]); printf("грн ");
for(;s[i];i++) printf("%c",s[i]); printf("коп ");
Или используя sscanf()
I'm learning to live...
Stilet вне форума
Старый 10.12.2013, 20:24   #5
DimDimich
Пользователь
 
Регистрация: 10.12.2013
Сообщений: 18
По умолчанию

несколько непонятных мне ошибок выдает дебагер при попытке запустить,отчасти но не до конца понтяно,возможно еще кто-то попробует объяснить(показать)
DimDimich вне форума
Старый 10.12.2013, 20:54   #6
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Каких ошибок? Не хочешь не рассказывай никто и не ответит.
I'm learning to live...
Stilet вне форума
Старый 10.12.2013, 21:18   #7
DimDimich
Пользователь
 
Регистрация: 10.12.2013
Сообщений: 18
По умолчанию

непонятно вот что,"char" это для символов и вот тут еще
Код:
void main(){
	char *s="23.6";
	for(int i=0;s[i] && s[i]!='.';i++)
	printf("%c",s[i]);
	printf("грн ");
	for(;s[i];i++) //тут подчеркнул [i]  и написал: indetifier is undefined
	printf("%c",s[i]);
	printf("коп ");
}
Препод на паре говорил что для этой программы достаточно будет использовать % и отделить целую от дробной.Целую часть я отделил путем преобразования double в int. Что делать с % понятия не имею,потому что пишет что нельзя делить нацело числа с дробной частью.
DimDimich вне форума
Старый 10.12.2013, 21:26   #8
DimDimich
Пользователь
 
Регистрация: 10.12.2013
Сообщений: 18
По умолчанию

Все,сам догадался) спасибо за участие
вот что получилось
Код:
# include <iostream>
using namespace std;
void main(){
	setlocale(LC_ALL,"rus");
	double a;
	cout<<"Введiть данi для конвертацiї у валютний вигляд."<<endl;
	cin>>a;
	int b=a;//грн
	int c;
	int d;
	c=a*100;
	d=c%(b*100);//коп
	cout<<b<<"грн."<<d<<"коп."<<endl;
}
проверил, работает.
DimDimich вне форума
Старый 10.12.2013, 21:34   #9
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
"char" это для символов
Ну да. Я подумал что ты будешь вводить строкой.
I'm learning to live...
Stilet вне форума
Закрытая тема


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Перевод уравнения в понятный для паскаля вид. Scorp10n Помощь студентам 2 26.09.2013 07:55
Перевод уравнения в понятный для паскаля вид. Proofessor Помощь студентам 4 09.06.2011 09:23
Перевод численного значения угла в градусы Denis1307 Общие вопросы Delphi 8 28.05.2011 10:34
Перевод уравнения в понятный для паскаля вид. Proofessor Помощь студентам 3 17.10.2010 13:54
Перевод в шестнадцатиричный вид north Общие вопросы Delphi 2 28.07.2008 22:51