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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 18.12.2011, 18:36   #1
alexandr017
 
Регистрация: 28.03.2011
Сообщений: 6
По умолчанию Перевести число в римскую систему счисления

Я в Си программирую недавно, помогите пожалуйста решить....

Разработать программу для перевода чисел, записанных арабскими цифрами в числа, записанные римскими
1 I
5 V
10 X
50 L
100 C
500 D
1000 M

Например: 46 XLVI ; 583 DLXXXIII; 888 DCCCLXXXVIII; 1989 MCMLXXXIX
alexandr017 вне форума Ответить с цитированием
Старый 18.12.2011, 18:38   #2
alexandr017
 
Регистрация: 28.03.2011
Сообщений: 6
По умолчанию

Друзья, помогите.... Я пытаюсь сделать перевод из арабской в римскую простым перебором.

Помогите правильно перевернуть строки s и s1 (16 и 75 строки соответственно)....
Также я не снаю как правильно дописывать символы в конец строки s1 (это строки с 21 по 68)


Код:
#include <string.h>
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
int main ()
{
char s [256];
char s1 [256];
int n, c, c1, i, a, k, h;
clrscr();
printf("Vvedite chislo: ");
scanf ("%s",s);
k=strlen(s);
h=0;
for (i=k; i>=0; i--) { s1=s1+s[i]; }   // помогите записать строку s в строку s1 в обратном порядке
i=0;
while (s1[i]!='\0') {   // проверяю пока не дастигнут конец строки s1
 
if (i==0)  {
if  (s[i]==1) s1="I";
if  (s[i]==2) s1="II";
if  (s[i]==3) s1="III";
if  (s[i]==4) s1="VI";
if  (s[i]==5) s1="V";
if  (s[i]==6) s1="IV";
if  (s[i]==7) s1="IIV";
if  (s[i]==8) s1="IIIV";
if  (s[i]==9) s1="XI";
i++   ;
}
 
if (i==1){
if  (s[i]==1) s1=strcat (s1,"X");
if  (s[i]==2) s1=strcat (s1,"XX");
if  (s[i]==3) s1=strcat (s1,"XXX");
if  (s[i]==4) s1=strcat (s1,"LX");
if  (s[i]==5) s1=strcat (s1,"L");
if  (s[i]==6) s1=strcat (s1,"XL");
if  (s[i]==7) s1=strcat (s1,"XXl");
if  (s[i]==8) s1=strcat (s1,"XXXL");
if  (s[i]==9) s1=strcat (s1,"CX");
i++  ;
}
 
if (i==2){
if  (s[i]==1) s1=strcat (s1,"C");
if  (s[i]==2) s1=strcat (s1,"CC");
if  (s[i]==3) s1=strcat (s1,"CCC");
if  (s[i]==4) s1=strcat (s1,"DC");
if  (s[i]==5) s1=strcat (s1,"D");
if  (s[i]==6) s1=strcat (s1,"DC");
if  (s[i]==7) s1=strcat (s1,"DCC");
if  (s[i]==8) s1=strcat (s1,"DCCC");
if  (s[i]==9) s1=strcat (s1,"MC");
i++ ;
}
 
if (i==3){
if  (s[i]==1) s1=strcat (s1,"M");
if  (s[i]==2) s1=strcat (s1,"MM");
if  (s[i]==3) s1=strcat (s1,"MMM");
if  (s[i]==4) s1=strcat (s1,"MMMM");
if  (s[i]==5) s1=strcat (s1,"MMMMM");
if  (s[i]==6) s1=strcat (s1,"MMMMMM");
if  (s[i]==7) s1=strcat (s1,"MMMMMMM");;
if  (s[i]==8) s1=strcat (s1,"MMMMMMMM");
if  (s[i]==9) s1=strcat (s1,"MMMMMMMMM");
i++;
}
 
}
char s2;
int h=strlen (s1);
for (int g=h; g>=0; g--) { s2=s2+s1[g]; }  //переворачиваю строку s1 обратко и записываю в s2
puts (s2);
        getch();
        return 0;
}
alexandr017 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
доработка кода на римскую систему счисления ПаЗитиФкА Помощь студентам 0 12.12.2011 20:43
перевода целого числа в римскую систему счисления enternity Помощь студентам 2 17.10.2011 01:37
Перевести вещественное число в 10 чную систему счисления из двоичной Shamonya Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 0 11.11.2010 16:29
"Число в p-ичной системе счисления. Перевести число в q-ичную систему" и не только :) Zinder Паскаль, Turbo Pascal, PascalABC.NET 4 10.04.2010 14:20