Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

нужен подробный алгоритм программы(С++)

19K
20 января 2008 года
Paradoxek
45 / / 24.10.2007
Код:
#include<iostream>
#include<string>
#include<conio.h>

using namespace std;

string Ar2Ro(int n)
{
    string a[13] = {"I","IV","V","IX","X","XL","L","XC","C","CD","D","CM","M"};
    int b[13] = {1,4,5,9,10,40,50,90,100,400,500,900,1000};
    string s = "";
    for (int i = 12; i >= 0; i--)
{
        while (n >= b) {
            s += a;
            n -= b;
        }
    }
    return s;
}
int main(int argc, char* argv[])
{    int n;
    printf("Vvedite lyuboe chislo\n");
    cin >> n;
    cout << Ar2Ro(n);
    printf("\n");
    printf("Dlya vyhoda nazhmite lyubuyu klavishu...");
    getch();
    return 0;

}
247
20 января 2008 года
wanja
1.2K / / 03.02.2003
Подробный алгоритм - это что? Блок-схема?
19K
20 января 2008 года
Paradoxek
45 / / 24.10.2007
ну с блок схемой сам разберусь,
тут непонятны кое какие моменты
for (int i = 12; i >= 0; i--)
{
while (n >= b) {
s += a;
n -= b;
}
}
return s;
вот это вот цикл,
string s = "";
и вот это, что за "" присваиваются?
и что здесь означают переменные s и n
14K
20 января 2008 года
stimpi
100 / / 04.09.2007
обычный алгоритм перевода числа с десятичной системы в римскую :p

Цитата:
вот это вот цикл,
string s = "";
и вот это, что за "" присваиваются?
и что здесь означают переменные s и n

s - строка в которой будет результат, те число в римской записи
n - число в десятичной системе которое надо перевести в римскую

Код:
string Ar2Ro(int n)
{
    string a[13] = {"I","IV","V","IX","X","XL","L","XC","C","CD","D","CM","M"};
    int b[13] = {1,4,5,9,10,40,50,90,100,400,500,900,1000};
    string s = "";
    for (int i = 12; i >= 0; i--)
{
        while (n >= b) {
            s += a;
            n -= b;
        }
    }
    return s;
}
алгоритм таков, у тебя есть 13 базовых чисел в десятичной системе которые имеют эквивалент в римской это массив b. У тебя есть число, ты просматриваешь этот массив базовых чисел, если твое число больше числа из массива, то ты добавляешь римскую запись в строку и отнимаешь от числа эквивалент римского числа, до тех пор пока цикл for не закончится.

я бы делал что-то наподобе такого (код не тестировался :D), для наглядности
Код:
int count = 12;
do
{
        while(n  >= b[count])
        {
            s += a[count];
            n -= b[count];
        }
        count--;

}while(n > 0)
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог