Задача — Количество слов в строке — программирование на разных языках
Задача — Количество слов в строке
— программирование на Pascal, Си, Кумир, Basic-256, Python
Вводится строка, состоящая из слов, разделенных пробелами. Требуется посчитать количество слов в ней.
- Введем счетчик слов и переменную-флаг, сигнализирующую, находимся ли мы внутри слова или нет.
- Если очередной символ не пробел, и флаг показывает, что мы не внутри слова, то следует увеличить переменную-счетчик слов и изменить флаг.
- Иначе если текущий символ пробел, то установить флаг в значение «вне слова». (Когда символ не пробел, и мы находимся внутри слова, то ничего делать не надо.)
Pascal
var
str: string;
i, count: byte;
flag: boolean;
begin
readln(str);
count := 0;
flag := false;
for i:=1 to length(str) do begin
if (str[i] <> ‘ ‘) and (flag = false) then begin
count := count + 1;
flag := true;
end
else
if str[i] = ‘ ‘ then
flag := false;
end;
writeln(count);
end. one two tree?
3
Язык Си
main() <
char str[255];
int i,count,flag;
gets(str);
count = 0;
flag = 0;
for (i=0; str[i]!=»; i++)
if (str[i] != ‘ ‘ && flag == 0) <
count += 1;
flag = 1;
> else
if (str[i] == ‘ ‘) flag = 0;
printf(«%dn», count);
>
Python
# 1-й вариант («классический»):
s = input()
count = 0
flag = 0
for i in range(len(s)):
if s[i] != ‘ ‘ and flag == 0:
count += 1
flag = 1
else:
if s[i] == ‘ ‘:
flag = 0
print(count)
# 2-й вариант (через преобразование в список):
s = input()
s = s.split()
l = len(s)
print(l)
Метод split() разбивает строку по пробелам (по умолчанию) или символам, которые передаются как аргументы. Возвращает список.
КуМир
алг количество слов
нач
лит s
цел i, count, flag
ввод s
count := 0
flag := 0
нц для i от 1 до длин(s)
если s[i] <> » » и flag = 0 то
count := count + 1
flag := 1
иначе
если s[i] = » » то
flag := 0
все
все
кц
вывод count
кон
Basic-256
input s$
c = 0
f = 0
for i = 1 to length(s$)
b$ = mid(s$,i,1)
if b$ <> » » and f = 0 then
c = c + 1
f = 1
else
if b$ = » » then f = 0
endif
next i
print c
В Basic-256 нет возможности обращаться к символам строки как элементам массива. Поэтому приходится использовать функцию mid(), которая извлекает подстроку. Первый ее аргумент — строка, второй — номер первого символа подстроки, третий — длина подстроки.
Практическая работа № 6. Обработка символьных строк

Программирование на языке Python .
Практическая работа № 6. Обработка символьных строк
Задание 1. Две строки
Составьте программу, которая предлагает ввести с клавиатуры две строки a и b , а затем:
1. соединяет их в новую строку c и выводит результат
2. определяет количество символов в новой строке c
3. выводит на экран более длинную из строк a и b
4. выводит на экран большую из строк a и b
Задание 2. Составление слов
Составьте программу, которая из слова ИФОРМАТИКА получает слова:
Задание 3. Работа со словами строки
Дана строка, состоящая из слов, разделенных пробелами. Вывести самое длинное слово в строке количество букв в нем.
Задание 4. Число слов в строке
Дана строка, состоящая из слов, разделенных пробелами. Определите, сколько в ней слов.
Задание 5. Замена букв
Дана строка, состоящая из слов, разделенных пробелами. Заменить строчные буквы, а на б и прописные A на B. Вывести получившуюся строку и количество замененных букв в ней.
Задание 6. Число слов в строке
Дана строка, состоящая из слов, разделенных пробелами. Определите, сколько в ней слов.
Задание 7. Число слов, начинающихся на букву R
Дана строка, состоящая только из заглавных латинских букв и пробелов. Словом, назовём последовательность символов, не содержащую пробелов и ограниченную пробелами, началом или концом строки. Требуется найти количество слов в заданной строке, которые начинаются на букву «R».
Задание 8. Удаление символов
Дана строка. Удалите из этой строки все символы*.
Задание 9. Две половинки
Дана строка. Разрежьте ее на две равные части (если длина строки — четная, а если длина строки нечетная, то длина первой части должна быть на один символ больше). Переставьте эти две части местами, результат запишите в новую строку и выведите на экран.
Задание 10. Переставить два слова
Дана строка, состоящая ровно из двух слов, разделенных пробелом. Переставьте эти слова местами. Результат запишите в строку и выведите получившуюся строку.
Задание 11. ФИО
С клавиатуры вводится строка, содержащая имя, отчество и фамилию человека, например, Петров Михаил Николаевич
Каждые два слова разделены одним пробелом, в начале строки пробелов нет. В результате обработки должна получиться новая строка, содержащая фамилию и инициалы: М.Н. Петров
Задание 12. Поиск в файле строк, содержащих определенные значения
В текстовый файл построчно записаны фамилия имя учащихся класса и его оценка за контрольную работу. Вывести на экран всех учащихся, чья оценка меньше 4 баллов и посчитать средний балл по классу.
Варианты решения к некоторым задачам
Задание 3. Работа со словами строки
Дана строка, состоящая из слов, разделенных пробелами. Вывести самое длинное слово в строке количество букв в нем.
Задание 6. Число слов в строке
Дана строка, состоящая из слов, разделенных пробелами. Определите, сколько в ней слов.
print ( input ().count(‘ ‘) + 1)
Задание 7. Число слов, начинающихся на букву R
Дана строка, состоящая только из заглавных латинских букв и пробелов. Словом, назовём последовательность символов, не содержащую пробелов и ограниченную пробелами, началом или концом строки. Требуется найти количество слов в заданной строке, которые начинаются на букву «R».
Код Python
Задание 8. Удаление символов
Дана строка. Удалите из этой строки все символы*.
print ( input ().replace(‘*’, »))
Задание 9. Две половинки
Дана строка. Разрежьте ее на две равные части (если длина строки — четная, а если длина строки нечетная, то длина первой части должна быть на один символ больше). Переставьте эти две части местами, результат запишите в новую строку и выведите на экран.
print (s[(len(s) + 1) // 2:] + s[:(len(s) + 1) // 2])
Задание 10. Переставить два слова
Дана строка, состоящая ровно из двух слов, разделенных пробелом. Переставьте эти слова местами. Результат запишите в строку и выведите получившуюся строку.
word2 = s[s.find(‘ ‘) + 1:]
print (word2 + ‘ ‘ + word1)
Задание 11. ФИО
С клавиатуры вводится строка, содержащая имя, отчество и фамилию человека, например, Михаил Николаевич Петров
Каждые два слова разделены одним пробелом, в начале строки пробелов нет. В результате обработки должна получиться новая строка, содержащая фамилию и инициалы: Петров М.Н.
Код Python
print ( «Введите имя, отчество и фамилию:» )
s = fio[1][0] + «.» + fio[2][0] + «.» + » » + fio[0]
Задание 12. Поиск в файле строк, содержащих определенные значения
В текстовый файл построчно записаны фамилия имя учащихся класса и его оценка за контрольную работу. Вывести на экран всех учащихся, чья оценка меньше 4 баллов и посчитать средний балл по классу.
Дана строка состоящая из слов разделенных пробелами определите сколько всего слов в строке

с++ Количество слов
Дана строка, состоящая из слов, разделённых пробелами. Определите, сколько в ней слов.
Выведите ответ на задачу.
Примеры
Ввод
Вывод
Hello world
2
Answers & Comments

#include <iostream>
#include <string>
#include <sstream>
using namespace std;
string s;
getline(cin, s);
cout << distance(istream_iterator<string>(istringstream(s) >> ws), istream_iterator<string>());
Пожалуйста, срочно помогите)Напишите программу, определяющую, сколько слов в данной строке текста?
Напишите программу, определяющую, сколько слов в данной строке текста.
(Pascal) На вход программы поступает строка текста, в которой могут встречаться : — прописные и строчные (т.
Е. большие и маленькие) латинские буквы ; — пробелы ; — знаки препинания : точка, запятая, восклицательный и вопросительный знак ; — символ –, обозначающий в некоторых случаях тире, а в некоторых — дефис.
Слово — это последовательность подряд идущих латинских букв и знаков дефис, ограниченная с обоих концов.
В качестве ограничителей могут выступать начало строки, конец строки, пробел, знак препинания, тире.
Тире отличается от дефиса тем, что слева и справа от знака дефис пишутся буквы, а хотя бы с одной стороны от тире идет либо начало строки, либо конец строки, либо пробел, либо какой — либо знак препинания, либо еще одно тире.

Получилась очень громоздкая конструкция из логический условий, но по — другому никак не придумалось
var t : string ; n : integer ; i, x, y : byte ;
begin writeln (‘Введите строку’) ; readln (t) ; n : = length(t) ; t : = t + ‘.
‘ ; / / пририсовываем к строке лишний символ «не буква», иначе программа можетне посчитать последнее слово в случае, если строка кончается буквой.
X : = 0 ; / / переменная для обозначения конца каждой группы из букв, идущих подряд
y : = 0 ; / / переменная для подсчета количества групп из букв, идущихподряд for i : = 1 to n do begin / / определяем, является ли текущий символ буквой : if ((ord(t[i])> ; 64) and (ord(t[i])< ; 91)) or ((ord(t[i])> ; 96) and (ord(t[i])< ; 123)) or ((ord(t[i])> ; 191) and (ord(t[i])< ; 256)) then x : = 1 / / если да, то х = 1 else begin if x = 1 then begin y : = y + 1 ; x : = 0 end ; / / если текущий символ не буква, то проверяем «х» — если х = 1, значит слово кончилось и «у» увеличиваем на 1, а «х» соответственно снова обнуляем.
Теперь при следующем символе «небуква» наш «у» не увеличится / / В следующем длинном условии проверяем исключение — является ли текущий символ тире или дефисом.
Если дефис, то количество уже посчитанных слов уменьшим на 1, т.
К. дефис стоит в середине слова и значит предыдущее прибавление 1 было неправильным.
If (t[i] = ‘ — ‘) and (((ord(t[i — 1])> ; 64) and (ord(t[i — 1])< ; 91)) or ((ord(t[i — 1])> ; 96) and (ord(t[i — 1])< ; 123)) or ((ord(t[i — 1])> ; 191) and (ord(t[i — 1])< ; 256))) and (((ord(t[i + 1])> ; 64) and (ord(t[i + 1])< ; 91)) or ((ord(t[i + 1])> ; 96) and (ord(t[i + 1])< ; 123)) or ((ord(t[i + 1])> ; 191) and (ord(t[i + 1])< ; 256))) then y : = y — 1 end end ; writeln(‘В данной строке ‘, y, ‘ слов’)