Количество строчных и прописных букв в строке

Задача

Посчитать количество строчных (маленьких) и прописных (больших) букв в введенной строке. Учитывать только английские буквы.

Пояснение к задаче и алгоритм решения

  1. Ввести две переменные для подсчета строчных и прописных букв. Присвоить им нули.
  2. Перебирая символы строки от первого до последнего (номер последнего определяется длиной строки),
    1. если очередной символ - это буква, которая не меньше "a" и не больше "z", то увеличить на 1 переменную-счетчик строчных букв,
    2. иначе аналогично проверить принадлежность символа диапазону от "A" до "Z". Если символ ему принадлежит, то увеличить счетчик прописных букв.

Как видно из алгоритма, небуквенные символы вообще не учитываются. Тот факт, что буквы можно сравнивать связан с тем, что в таблице кодов символов они идут друг за другом по порядку. Например, буква "a" имеет код на единицу меньше, чем "b", т.е. стоит перед "b".

Исходный код на языке программирования Pascal

var
        str: string;
        i, len, let_b, let_s: byte;
begin
        readln(str);
        len := length(str);
        let_b := 0;
        let_s := 0;
        for i:=1 to len do
                if (str[i] >= 'a') and (str[i] <= 'z') then
                        let_s := let_s + 1
                else
                        if (str[i] >= 'A') and (str[i] <= 'Z') then
                                let_b := let_b + 1;
 
        writeln(let_s);
        writeln(let_b);
end.

Пример(ы) выполнения программы на языке Pascal

heLLo WOrld tEmp
9
5

Исходный код на языке программирования C

#include <stdio.h>
 
main() {
    char str[255];
    int i,let_b, let_s;
    gets(str);
    let_s = 0;
    let_b = 0;
    for (i=0; str[i]!='\0'; i++)
        if (str[i] >= 'a' && str[i] <= 'z') let_s += 1;
        else
            if (str[i] >= 'A' && str[i] <= 'Z') let_b += 1;
    printf("%d\n", let_s);
    printf("%d\n", let_b);
}

Исходный код на языке программирования Python

s = input()
let_s = 0
let_b = 0
for i in s:
    if 'a' <= i <= 'z':
        let_s += 1
    else:
        if 'A' <= i <= 'Z':
            let_b += 1
print(let_s)
print(let_b)

Исходный код на языке программирования КуМир

алг количество разных букв
нач
  лит s
  цел i, len, let_b, let_s
  ввод s
  len := длин(s)
  let_s := 0
  let_b := 0
  нц для i от 1 до len
    если s[i] >= "a" и s[i] <= "z" то
      let_s := let_s + 1
     иначе
       если s[i] >= "A" и s[i] <= "Z" то
         let_b := let_b + 1
       все
    все
  кц
  вывод let_s, нс
  вывод let_b, нс
кон

Исходный код на языке программирования Basic

input s$
let_s = 0
let_b = 0
for i=1 to length(s$)
        l$ = mid(s$,i,1)
        l = asc(l$)
        if l>=asc("a") and l<=asc("z") then
                let_s = let_s + 1
        else
                if l>=asc("A") and l<=asc("Z") then
                        let_b = let_b + 1
                endif
        endif
next i
print let_s
print let_b

Особенности решения на языке программирования Basic

В Бейсике при сравнении самих букв (а не их кодов напрямую) большие учитывались также, как и маленькие. Хотя если написать выражение ("A" = "a"), то оно возвращает ложь.

Тема

Строки

Уровень сложности

Простой

Дата публикации