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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 13.06.2013, 19:09   #1
Господин Никто
Пользователь
 
Регистрация: 24.12.2012
Сообщений: 25
По умолчанию прошу совместить код программы на С++

вот 2 кода, оба работают, задача такая программа должна реализовывать перед из арабской системы счисления в римскую и наоборот. И если можно написать комментарии. Заранее благодарю
1.
Код:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#define ROMAN_NUMS_SIZE 7

char roman_nums[ROMAN_NUMS_SIZE] = { 'I','V','X','L', 'C', 'D', 'M' };
int arabic_vals[ROMAN_NUMS_SIZE] = { 1, 5, 10, 50, 100, 500, 1000 };

int main()
{
int num = 0;
int t = 0;
int j = 0;
size_t i = 0;
size_t len = 0;

char romnum[BUFSIZ];

printf("please input roman digit: ");
scanf("%s", romnum);

num = 0; len = strlen(romnum);
for(i = len - 1, t = 0; i >= 0; —i)
{
for(j = 0; j < ROMAN_NUMS_SIZE; ++j)
if(roman_nums[j] == romnum[i])
break;

if(arabic_vals[j] < t)
num -= (t = arabic_vals[j]);
else
num += (t = arabic_vals[j]);
}

printf("ROMAN: %d\n\n", num);

system("PAUSE");
}
2.
Код:
#include <stdio.h>
#include <stdlib.h>

#define ROMAN_NUMS_SIZE 7

char roman_nums[ROMAN_NUMS_SIZE] = { 'I','V','X','L', 'C', 'D', 'M' };
int arabic_vals[ROMAN_NUMS_SIZE] = { 1, 5, 10, 50, 100, 500, 1000 };

int main()
{
int i = 0;
int num = 0;

char romnum[BUFSIZ];
char *rnptr = romnum;

printf("please input digit: ");
scanf("%d", &num);

for(i = ROMAN_NUMS_SIZE - 1; i >= 0; —i)
{
while(num >= arabic_vals[i])
{
if((num >= arabic_vals[i] * 4) && (i != ROMAN_NUMS_SIZE))
{
num -= arabic_vals[i] * 4;
*rnptr++ = roman_nums[i];
*rnptr++ = roman_nums[i + 1];
}
else
{
num -= arabic_vals[i];
*rnptr++ = roman_nums[i];
}
}
}

*rnptr = '\0';

printf("ROMAN: %s\n\n", romnum);

system("PAUSE");
}

Последний раз редактировалось Stilet; 13.06.2013 в 21:01.
Господин Никто вне форума Ответить с цитированием
Старый 13.06.2013, 19:23   #2
Smitt&Wesson
Старожил
 
Аватар для Smitt&Wesson
 
Регистрация: 31.05.2010
Сообщений: 13,543
По умолчанию

Цитата:
оба работают
Ну, работают и работают. От нас то чего нужно?
Пиши пьяным, редактируй трезвым.
Справочник по алгоритмам С++ Builder
Smitt&Wesson вне форума Ответить с цитированием
Старый 13.06.2013, 19:27   #3
Господин Никто
Пользователь
 
Регистрация: 24.12.2012
Сообщений: 25
По умолчанию

нужно совместить в один код
Господин Никто вне форума Ответить с цитированием
Старый 13.06.2013, 20:37   #4
Smitt&Wesson
Старожил
 
Аватар для Smitt&Wesson
 
Регистрация: 31.05.2010
Сообщений: 13,543
По умолчанию

Код:
int main()
{
  int a;
  cout>>"Выберите 1 или 2";
  cin<<a;
  while(a)
  {
    case 1:{первый расчёт; break;}
    case 2:{второй расчёт;}
  }
system("PAUSE");
}
Так пойдёт?
Пиши пьяным, редактируй трезвым.
Справочник по алгоритмам С++ Builder
Smitt&Wesson вне форума Ответить с цитированием
Старый 13.06.2013, 20:52   #5
Господин Никто
Пользователь
 
Регистрация: 24.12.2012
Сообщений: 25
По умолчанию

хотелось бы полностью)))
Господин Никто вне форума Ответить с цитированием
Старый 13.06.2013, 21:02   #6
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Код:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#define ROMAN_NUMS_SIZE 7

char roman_nums[ROMAN_NUMS_SIZE] = { 'I','V','X','L', 'C', 'D', 'M' };
int arabic_vals[ROMAN_NUMS_SIZE] = { 1, 5, 10, 50, 100, 500, 1000 };

int main1()
{
int num = 0;
int t = 0;
int j = 0;
size_t i = 0;
size_t len = 0;

char romnum[BUFSIZ];

printf("please input roman digit: ");
scanf("%s", romnum);

num = 0; len = strlen(romnum);
for(i = len - 1, t = 0; i >= 0; —i)
{
for(j = 0; j < ROMAN_NUMS_SIZE; ++j)
if(roman_nums[j] == romnum[i])
break;

if(arabic_vals[j] < t)
num -= (t = arabic_vals[j]);
else
num += (t = arabic_vals[j]);
}

printf("ROMAN: %d\n\n", num);

system("PAUSE");
}

int main1()
{
int i = 0;
int num = 0;

char romnum[BUFSIZ];
char *rnptr = romnum;

printf("please input digit: ");
scanf("%d", &num);

for(i = ROMAN_NUMS_SIZE - 1; i >= 0; —i)
{
while(num >= arabic_vals[i])
{
if((num >= arabic_vals[i] * 4) && (i != ROMAN_NUMS_SIZE))
{
num -= arabic_vals[i] * 4;
*rnptr++ = roman_nums[i];
*rnptr++ = roman_nums[i + 1];
}
else
{
num -= arabic_vals[i];
*rnptr++ = roman_nums[i];
}
}
}

*rnptr = '\0';

printf("ROMAN: %s\n\n", romnum);

system("PAUSE");
}

int main(){main1();main2();}
Так пойдет?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
совместить код gylayko Помощь студентам 0 27.10.2012 14:07
Совместить все программы desnet Паскаль, Turbo Pascal, PascalABC.NET 0 20.05.2012 10:28
Совместить 2 программы в одну scenik Паскаль, Turbo Pascal, PascalABC.NET 1 12.01.2012 00:38
Прошу проверить код программы Pashtet Паскаль, Turbo Pascal, PascalABC.NET 1 19.11.2008 11:50