kuzinnv1968
?>

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

Информатика

Ответы

Aleksei Aleksandrovna649

#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 year\n");

 

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

 {

  printf("Invalid format\n");

  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;

}

Объяснение:

Казаков

ответ

Смотри объяснения ниже:

Объяснение:

1) Устанавливаешь отступы ползунками около листа

2)Вводишь свой текст

3)Нажимаешь на дискету с ручкой в меню, выбираешь нужную папку и сохраняешь под тем же именем

4)закрываешь WORD

5)В проводнике ишешь свою сохранку из пункта 3

6)кликаешь

7)Ентером ставишь абзатцы, как тебе кажется правильным

8)В начале первой строки ставишь ентер, на новой строке пишешь название текста

9)выделяешь заголовок, нажимаешь "главная", там где жирный, курсив, подчёркнутый (разные буквы), выбираешь подчёркивание

10) Нажимаешь на дискету со стрелочками

Первое задание выполнено!

На второе пока нет времени, может, потом добавлю

Прости за неудобства, сам устал

emilmishin1032

Между соседними (по сторонам) клетками может стоять стена, через которую Робот пройти не может. На практике поле всегда ограниченного размера, а стенки стоят в заданных местах в зависимости от задачи. Задача состоит в закрашивании определенных клеток и остановке робота в заданном месте.

У Робота есть пять команд-приказов:

вверх

вниз

влево

вправо

закрасить

При выполнении одной из первых четырех команд Робот перемещается на одну клетку соответственно: вверх ↑, вниз ↓, влево ←, вправо →. Если Робот получит команду передвижения через стену, то он разрушится (произойдет отказ). По команде закрасить закрашивается клетка, в которой Робот находится в настоящий момент (если клетка уже закрашена, отказа не происходит).

Ответить на вопрос

Поделитесь своими знаниями, ответьте на вопрос:

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

Популярные вопросы в разделе

mpityk
Darialaza
Daniil1945
aksmobile
chetverikovalex3738
cristiansirbu9974
zamkova836
panstel
bogdanovaoksa
Kateshaeva
ibarskova1542
Aleksandr
Иван1764
alex13izmailov
smokestylemos