Загрузка данных
#include <iostream>
#include <clocale>
using namespace std;
// Предусловие: пользователь вводит с клавиатуры непустую строку символов (длиной до 100 символов), заканчивающуюся нуль-терминатором '\0'.
// Постусловие: подсчитано и выведено на экран количество вхождений символов 'r', 'k', 't' (как строчных, так и прописных), а также их общая сумма.
void main()
{
setlocale(LC_ALL, "Russian");
// массив под строку
char st[100];
cout << "Введите строку: ";
cin.getline(st, 100);
// счетчики для букв
int kr = 0;
int kk = 0;
int kt = 0;
int i = 0;
// цикл пока не конец строки
while (st[i] != '\0')
{
if (st[i] == 'r' || st[i] == 'R')
{
kr++;
}
if (st[i] == 'k' || st[i] == 'K')
{
kk++;
}
if (st[i] == 't' || st[i] == 'T')
{
kt++;
}
i++;
}
// вывод количества
cout << "Букв r: " << kr << endl;
cout << "Букв k: " << kk << endl;
cout << "Букв t: " << kt << endl;
cout << "Всего: " << kr + kk + kt << endl;
system("pause");
}
#include <iostream>
#include <clocale>
using namespace std;
// Предусловие: вводится строка символов (длиной до 100 символов), оканчивающаяся символом '\0'.
// Постусловие: сформирован массив st1, содержащий только уникальные символы исходной строки без повторений; на экран выведено их количество k и сам массив st1.
void main()
{
setlocale(LC_ALL, "Russian");
// исходная строка и массив под уникальные символы
char st[100];
char st1[100];
int k = 0; // количество различных символов
cout << "Введите строку: ";
cin.getline(st, 100);
int i = 0;
while (st[i] != '\0')
{
// флаг: есть ли уже такой символ в st1
int f = 0;
for (int j = 0; j < k; j++)
{
if (st[i] == st1[j])
{
f = 1; // нашли повтор
break;
}
}
// если символ встретился впервые, записываем его в st1
if (f == 0)
{
st1[k] = st[i];
k++;
}
i++;
}
st1[k] = '\0'; // закрываем результирующую строку нуль-терминатором
cout << "Количество различных символов: " << k << endl;
cout << "Различные символы: " << st1 << endl;
system("pause");
}
#include <iostream>
#include <clocale>
using namespace std;
// Предусловие: в массив st[14] введена строка длиной до 13 символов, состоящая из допустимых цифр римской системы счисления (I, V, X, L, C, D, M).
// Постусловие: вычислено и выведено на экран эквивалентное целое положительное число в десятичной системе счисления с учетом правил сложения и вычитания разрядов.
void main()
{
setlocale(LC_ALL, "Russian");
// 13 символов по условию задачи + 1 ячейка под '\0'
char st[14];
cout << "Введите римское число (до 13 символов): ";
cin.getline(st, 14);
int s = 0; // итоговая сумма
int i = 0;
while (st[i] != '\0')
{
// определяем значение текущего символа
int n1 = 0;
char c = st[i];
if (c == 'I' || c == 'i') n1 = 1;
if (c == 'V' || c == 'v') n1 = 5;
if (c == 'X' || c == 'x') n1 = 10;
if (c == 'L' || c == 'l') n1 = 50;
if (c == 'C' || c == 'c') n1 = 100;
if (c == 'D' || c == 'd') n1 = 500;
if (c == 'M' || c == 'm') n1 = 1000;
// определяем значение следующего за ним символа
int n2 = 0;
char c2 = st[i + 1];
if (c2 == 'I' || c2 == 'i') n2 = 1;
if (c2 == 'V' || c2 == 'v') n2 = 5;
if (c2 == 'X' || c2 == 'x') n2 = 10;
if (c2 == 'L' || c2 == 'l') n2 = 50;
if (c2 == 'C' || c2 == 'c') n2 = 100;
if (c2 == 'D' || c2 == 'd') n2 = 500;
if (c2 == 'M' || c2 == 'm') n2 = 1000;
// если текущее значение меньше следующего (например, IV: 1 < 5) — вычитаем, иначе прибавляем
if (n1 < n2)
{
s = s - n1;
}
else
{
s = s + n1;
}
i++;
}
cout << "В десятичной системе: " << s << endl;
system("pause");
}