profile
Размещено 5 лет назад по предмету Информатика от Аккаунт удален

Составить программу вычисления : С клавиатуры вводится номер года. Напечатать римскими цифрами век, к которому относится данный год.

  1. Ответ на вопрос
    Ответ на вопрос дан DeaDHeaD

    Ответ:

    #include <stdio.h>

    #include <stdlib.h>

    int main()

    {

    int year, century;

    //     { "I", "IV", "V", "IX",  "X", "XL", "L", "XC", "C", "CD", "D", "CM", "M" };

     short ArrRom[]   = { 73,  18774, 86, 18776,  88, 22604, 76, 22595, 67, 17220, 68, 17229, 77 };

     int ArrRom2[] =    { 1,    4,    5,    9,    10,   40,  50,   90,  100, 400, 500,  900,  1000, 5000};

     /*Т.к тип char в себе содержит только 1 байт,а нам местами желательно хранить 2 символа (4 римскими цифрами - IV),

     поэтому используем тип short и помещаем в него десятичные представления наших символов, если с одинарными символами

     все просто, то с двойными делаем такую схему: ASCII код символа I в десятичной системе счисления = 73, далее мы

     переводим в двойчную систему счисления ‭01001001‬ тоже самое делаем с символом V = 86 = ‭01010110‬, теперь совмещаем

     0100100101010110 и переводим данное число в десятный формат = 18774. И того код символа I попадаем в старший

     байт, а код символа V в младший.**

    */

     printf("Enter the yearn");

     

     while (scanf_s("%d", &year) != 1 || year>399900)

     {

      printf("Invalid formatn");

      system("pause");

      return 0;

     }

     

    if (year % 100 == 0)

    {

     century = year / 100;

    }

    else

    {

     century = year / 100 + 1;

    }

    printf("%d year refer to ", year);

    for (int i = 0;century != 0; ++i) //Условие конца цикла когда век будет равен 0

    {

     int j=0;

     for (; century >= ArrRom2[j]; ++j);// В этом цикле введенный нами век сравнивается с массивом содержащим цифры.

     //Если век больше текущего элемента массива, то сравниваем со следующим. Условие конца цикла - век больше очередного

     //элемента массива.*

       

     printf("%c",ArrRom[j - 1] >> 8);  //**т.к. в оджном элементе массива закодировано 2 символа, чтобы достать первый,

     //мы сдвигаем значение на 8 бит вправо. Например, число 0100100101010110 в двоичной системе сдвигаем на 8 бит вправо

     //получаем 0000000001001001. При печати будет выглядеть как I.

     printf("%c", ArrRom[j - 1] << 8 >> 8); //здесь сначала сдвигаем на 8 бит влево, чтобы получить 0101011000000000,

     //т.е. убрать младший байт. Затем сдвигаем обратно, чтобы убрать появившиеся нули в младшем байте. В итоге получаем

     //0000000001010110.  При печати будет выглядеть как V.

     century -= ArrRom2[j - 1];//*т.к при сравнении цикл останавливается на элементе большем, чем нам нужен, то мы

     //вычитаем 1 из итератора чтобы получить нужный нам эллемент,затем мы вычитаем его из века.

    }

    printf(" century n");

    system("pause");

    return 0;

    }

    Объяснение:

Не тот ответ на вопрос, который вам нужен?
Найди верный ответ
Самые новые вопросы
tegysigalpa2012
Русский язык - 5 лет назад

Помогите решить тест по русскому языку тест по русскому языку «местоимение. разряды местоимений» для 6 класса 1. укажите личное местоимение: 1) некто 2) вас 3) ни с кем 4) собой 2. укажите относительное местоимение: 1) кто-либо 2) некоторый 3) кто 4) нам 3. укажите вопросительное местоимение: 1) кем-нибудь 2) кем 3) себе 4) никакой 4. укажите определительное местоимение: 1) наш 2) который 3) некий 4) каждый 5. укажите возвратное местоимение: 1) свой 2) чей 3) сам 4) себя 6. найдите указательное местоимение: 1) твой 2) какой 3) тот 4) их 7. найдите притяжательное местоимение: 1) самый 2) моего 3) иной 4) ничей 8. укажите неопределённое местоимение: 1) весь 2) какой-нибудь 3) любой 4) этот 9. укажите вопросительное местоимение: 1) сколько 2) кое-что 3) она 4) нами 10. в каком варианте ответа выделенное слово является притяжательным местоимением? 1) увидел их 2) её нет дома 3) её тетрадь 4) их не спросили

Информация

Посетители, находящиеся в группе Гости, не могут оставлять комментарии к данной публикации.