Консультация № 160944
19.02.2009, 23:55
0.00 руб.
0 2 1
Пожалуйста помогите составить две программы:
1)Определить количество слов, которые начинаються с буквы, которой заканчиваеться предыдущее слово. Слова отделены пробелами.
2)В данной матрице заменить K строчку и L столбец нулями, кроме элемента, находящегося на их пересечении

Обсуждение

Неизвестный
20.02.2009, 09:11
общий
это ответ
Здравствуйте, Orlova Svetlana Stanislavovna!

В первой программе перебираем символы, и если пробел, а вокруг два одинаковых символа, то счетчик слов увеличиваем на 1

Во второй программе решено через boolean переменную если выполняется условие то меняем значение на противоположное. когда оба условия - значение исходное. если значение ложь, то эта ячейка 0.

Приложение:
1.

var s:string;
n,i:integer;
begin
n:=0;
write('Vvedite stroku ');
readln(s);
if length(s)>3 then
begin
for i:=2 to length(s)-1 do
if (s[i]=' ')and(s[i-1]=s[i+1]) then n:=n+1;
end;
write('Chislo nugnyh slov ',n);
readln;
end.

2.

var A,B:array [1..10,1..10] of byte;
i,j,k,l:byte;
m:boolean;
begin
randomize;
write('Vvedite K (ot 1 do 10)'); readln(k);
write('Vvedite L (ot 1 do 10)'); readln(l);
for i:=1 to 10 do
for j:=1 to 10 do
A[i,j]:=random(89)+10;
for i:=1 to 10 do
for j:=1 to 10 do
begin
m:=true;
if i=k then m:=not m;
if j=l then m:=not m;
if m then b[i,j]:=A[i,j] else b[i,j]:=0;
end;
writeln('ishodnaya matrica matrica posle obrabotki');
for i:=1 to 10 do
begin
for j:=1 to 10 do
begin
write(A[i,j]:3);
end;
write(' ');
for j:=1 to 10 do
begin
write(b[i,j]:3);
end;
writeln;
end;
readln;
end.
Неизвестный
20.02.2009, 11:49
общий
Насчёт задачи №1:
Если слова могут отделяться друг от друга не одним, а несколькими пробелами, то правильнее будет использовать следующий код (он сначала удалит по два идущих подряд пробела):
Код:
{...}
if length(s)>3 then
begin
While pos(' ',s)>0 do{удаляем по два идущих подряд пробела}
delete(s,pos(' ',s),1);
for i:=2 to length(s)-1 do
if (s[i]=' ')and(s[i-1]=s[i+1]) then n:=n+1;
end;
{...}

Форма ответа