#include <iostream> using namespace std; typedef unsigned short int USI;
USI DigitCount(USI n) { USI a = (int) n / 100, bc = n % 100, b = (int) bc / 10, c = n % 10; if (a > 0) return 3; if (b > 0) return 2; if (c > 0) return 1; return 0; }
USI SumDigits(USI n, USI dc) { USI sum = 0, a, bc, b, c; switch (dc) { case 3: a = (int) n / 100; sum += a; case 2: bc = n % 100; b = (int) bc / 10; sum += b; case 1: c = n % 10; sum += c; break; default: return 0; break; } return sum; }
USI LastDigit(USI n) { return n % 10; }
USI FirstDigit(USI n, USI dc) { switch (dc) { case 1: return n; break; case 2: return (int) n / 10; break; case 3: return (int) n / 100; break; default: return 0; break; } }
Основные сочетания клавиш CTRL+C: копирование CTRL+X: вырезание CTRL+V: вставка CTRL+Z: отмена действия DELETE: удаление SHIFT+DELETE: удаление выбранного объекта без возможности восстановления, не помещая объект в корзину CTRL с перетаскиванием объекта: копирование выделенного объекта CTRL+SHIFT с перетаскиванием объекта: создание ярлыка для выбранного объекта Клавиша F2: переименование выбранного объекта CTRL+СТРЕЛКА ВПРАВО: перемещение точки ввода в начало следующего слова CTRL+СТРЕЛКА ВЛЕВО: перемещение точки ввода в начало предыдущего слова CTRL+СТРЕЛКА ВНИЗ: перемещение точки ввода в начало следующего абзаца CTRL+СТРЕЛКА ВВЕРХ: перемещение точки ввода в начало предыдущего абзаца CTRL+SHIFT + клавиши со стрелками: выделение блока текста SHIFT + клавиши со стрелками: выбор нескольких объектов в окне или на рабочем столе, а также выделение текста в документе CTRL+A: выделение всего документа Клавиша F3: поиск файла или папки ALT+ВВОД: просмотр свойств выбранного объекта ALT+F4: закрытие активного окна или завершение работы активной программы ALT+ВВОД: просмотр свойств выбранного объекта ALT+ПРОБЕЛ: вызов контекстного меню активного окна CTRL+F4: закрытие активного документа в приложениях, в которых одновременно можно открыть несколько документов ALT+ТАБУЛЯЦИЯ: переход между открытыми объектами ALT+ESC: просмотр объектов в том порядке, в котором они были открыты Клавиша F6: поочередный просмотр элементов интерфейса в окне или на рабочем столе Клавиша F4: отображение панели адресов в папке «Мой компьютер» или в обозревателе Windows Explorer SHIFT+F10: вызов контекстного меню для выделенного элемента ALT+ПРОБЕЛ: вызов системного меню для активного окна CTRL+ESC: вызов меню «Пуск» ALT+подчеркнутая буква в названии меню: вызов соответствующего меню Подчеркнутая буква в имени команды открытого меню: выполнение соответствующей команды Клавиша F10: активация строки меню в используемой программе СТРЕЛКА ВПРАВО: вызов следующего меню справа или подменю СТРЕЛКА ВЛЕВО: вызов следующего меню слева или закрытие подменю Клавиша F5: обновление активного окна Клавиша BACKSPACE: просмотр содержимого папки, расположенной выше на один уровень в каталоге «Мой компьютер» или обозревателе Windows Explorer Клавиша ESC: отмена выполняемого задания SHIFT при загрузке компакт-диска в привод для компакт-дисков: предотвращение автоматического воспроизведения компакт-диска CTRL+SHIFT+ESC: вызов диспетчера задач
Во-первых, не whill, а while. Во-вторых, цикл с предусловием(while) выполняется только тогда, когда его условие возвращает ложь. Если условие возвращает правду, цикл завершается. Бывает так, что при попытке первой итерации цикла условие уже возвращает правду. В этом случае цикл не будет выполнен ни разу. Цикл с предусловием(repeat), наоборот, выполняется, пока условие возвращает правду и завершается ложью. Стоит заметить, что если цикл с предусловием проверяет своё условие перед итерацией, цикл с постусловием делает это после, а это значит, что последний выполнится хотя бы один раз.
using namespace std;
typedef unsigned short int USI;
USI DigitCount(USI n) {
USI a = (int) n / 100,
bc = n % 100,
b = (int) bc / 10,
c = n % 10;
if (a > 0) return 3;
if (b > 0) return 2;
if (c > 0) return 1;
return 0;
}
USI SumDigits(USI n, USI dc) {
USI sum = 0,
a,
bc,
b,
c;
switch (dc) {
case 3:
a = (int) n / 100;
sum += a;
case 2:
bc = n % 100;
b = (int) bc / 10;
sum += b;
case 1:
c = n % 10;
sum += c;
break;
default:
return 0;
break;
}
return sum;
}
USI LastDigit(USI n) {
return n % 10;
}
USI FirstDigit(USI n, USI dc) {
switch (dc) {
case 1:
return n;
break;
case 2:
return (int) n / 10;
break;
case 3:
return (int) n / 100;
break;
default:
return 0;
break;
}
}
int main() {
USI n;
cout << "n = ";
cin >> n;
USI dc = DigitCount(n);
cout << "Число " << n
<< ":\n"
<< "Цифр: "
<< dc << '\n'
<< "Сумма цифр: "
<< SumDigits(n, dc) << '\n'
<< "Последняя цифра: "
<< LastDigit(n) << '\n'
<< "Первая цифра: "
<< FirstDigit(n, dc) << '\n';
return 0;
}