М
Молодежь
К
Компьютеры-и-электроника
Д
Дом-и-сад
С
Стиль-и-уход-за-собой
П
Праздники-и-традиции
Т
Транспорт
П
Путешествия
С
Семейная-жизнь
Ф
Философия-и-религия
Б
Без категории
М
Мир-работы
Х
Хобби-и-рукоделие
И
Искусство-и-развлечения
В
Взаимоотношения
З
Здоровье
К
Кулинария-и-гостеприимство
Ф
Финансы-и-бизнес
П
Питомцы-и-животные
О
Образование
О
Образование-и-коммуникации
Neal12
Neal12
26.06.2022 07:31 •  Информатика

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

👇
Ответ:
karinalbi
karinalbi
26.06.2022

#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;

}

Объяснение:

4,4(21 оценок)
Открыть все ответы
Ответ:
djsxv
djsxv
26.06.2022

ответ

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

Объяснение:

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

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

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

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

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

6)кликаешь

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

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

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

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

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

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

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

4,6(49 оценок)
Ответ:
jenek28022008
jenek28022008
26.06.2022

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

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

вверх

вниз

влево

вправо

закрасить

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

4,8(46 оценок)
Это интересно:
Новые ответы от MOGZ: Информатика
logo
Вход Регистрация
Что ты хочешь узнать?
Спроси Mozg
Открыть лучший ответ