SaxaR_kaluga 0 / 0 / 0 Регистрация: 22.03.2014 Сообщений: 2 |
||||||||
1 |
||||||||
Подсчет количества пробелов в строке22.03.2014, 11:52. Показов 8721. Ответов 4 Метки нет (Все метки)
Простенькая программка считает количество пробелов в строке. опыта почти нету поэтому есть вопросы на которые не могу найти ответа переменной count присваивается значение 0
0 |
Почетный модератор 64287 / 47586 / 32739 Регистрация: 18.05.2008 Сообщений: 115,182 |
|
22.03.2014, 12:04 |
2 |
так же не понимаю, что происходит в этом участке кода Если символ с номером i в строке пробел, то увеличиваем значение count на 1, просто считаем пробелы, или понятнее на баранах?
не могу понять зачем в функции, Ну напишите без функции, видимо там где содрали этот код,задание было с функцией.
1 |
73 / 73 / 20 Регистрация: 11.01.2014 Сообщений: 252 Записей в блоге: 2 |
|
22.03.2014, 12:05 |
3 |
переменной присваивается ноль, чтобы корректно считало количество пробелов, т.к. неизвестно чем будет инициализирована данная переменная. а тот кусок кода считает количество пробелов в строке. В count будет храниться количество пробелов в строке.
1 |
SaxaR_kaluga 0 / 0 / 0 Регистрация: 22.03.2014 Сообщений: 2 |
||||
31.03.2014, 11:45 [ТС] |
4 |
|||
Разобрался все просто только переменная как с присваиванием нуля
так и без присваивания програмка все равно работает корректно разницы не заметил.
0 |
Модератор 9588 / 4908 / 3244 Регистрация: 17.08.2012 Сообщений: 15,346 |
|
31.03.2014, 11:51 |
5 |
РешениеSaxaR_kaluga, это случайность, Вам просто повезло с компилятором. Иные компиляторы при инициализации переменной присваивают её значению 0, иные — только выделяют место под переменную, и что там на этом месте будет — не известно, скорее всего, вовсе не 0. Корректнее самому присваивать начальное значение.
1 |
program boc; VAR S:STRING; I:INTEGER; BEGIN READLN(S); i:=1; repeat BEGIN write(s[i]); IF S[I]='*' THEN BEGIN DELETE(S,I,1); I:=I-1 END ELSE BEGIN INSERT(S[I],S,I); I:=I+1 END END;i:=i+1 until i>length(s); writeln(s) END.
Var n:string; a:integer;
procedure chet(n:string;var a:integer);
begin
while pos(‘ ‘,n)<>0 do //пока в строке есть пробелы
begin
a:=a+1; //к счетчику пробелов + 1
delete(n,pos(»,n),1); //удалить текущий пробел
end;
end;
begin
readln(n); // вводим строку
a:=0; //обнуляем счетчик
chet(n,a) //считаем пробелы
writeln(a); //выводим кол-во пробелов
end.
OBRAZOVALKA.COM
OBRAZOVALKA.COM — образовательный портал
Наш сайт это площадка для образовательных консультаций, вопросов и ответов для школьников и студентов .
На вопросы могут отвечать также любые пользователи, в том числе и педагоги.
Консультацию по вопросам и домашним заданиям может получить любой школьник или студент.
var
s: string;
i, n, k: integer;
begin
writeln(‘Введите текст’);
readln(s);
n := Length(s);
k := 0;
for i := 1 to n do
if s[i] = ‘ ‘ then k := k + 1;
writeln(‘Количество пробелов в тексте- ‘, k)
end.
Тестовый пример:
Введите текст
А роза упала на лапу Азора, а тут ДВА пробела , а тут вообще пять: : Все!
Количество пробелов в тексте- 21