матрица, преобразование текста

За вознаграждение или нахаляву (если повезёт)

Модераторы: Хыиуду, MOTOCoder, Medved, dr.Jekill

Ответить
xamelion
Сообщения: 3
Зарегистрирован: 26 дек 2009, 17:43

Помогите пожалуйста написать две программы на Turbo Pascal:
1. Для заданной матрицы размером 8 на 8 найти такие k, что k-я строка матрицы совпадвет с k-м столбцом. Найти сумму элементов в тех строках, которые вмещают хотя бы один отрицательный элемент.
2. Ввести с клавиатуры предложение. Сделать вставку запятой после слов заканчивающихся на "й". Вывести на экран кол-во таких вставок.
Хыиуду
Сообщения: 2442
Зарегистрирован: 06 мар 2005, 21:03
Откуда: Москва
Контактная информация:

2. for i:=1 to length(s) do if s='й' then insert(s, i+1, ',');
Насчет синтаксиса инсерта не уверен, не помню, в каком порядке там идут параметры.
Искусство программирования - заставить компьютер делать все то, что вам делать лень.
Для "спасибо" есть кнопка "Спасибо" в виде звездочки внизу под ником автора поста.
xamelion
Сообщения: 3
Зарегистрирован: 26 дек 2009, 17:43

Cпасибо за подсказку. A что с первой программой сделать можно& В голову вообще ничего не прходит. Помогите пожалуйста уже хоть что-то написать.
Хыиуду
Сообщения: 2442
Зарегистрирован: 06 мар 2005, 21:03
Откуда: Москва
Контактная информация:

К-я строка совпадает с к-м столбцом - для всех i от 1 до 8 A[k,i]=A[i,k]
Искусство программирования - заставить компьютер делать все то, что вам делать лень.
Для "спасибо" есть кнопка "Спасибо" в виде звездочки внизу под ником автора поста.
xamelion
Сообщения: 3
Зарегистрирован: 26 дек 2009, 17:43

1.
Вот что-то написала, но выдаёт ошибку в первой строке:
procedure Proc(mas: matrix);
var i,j,k: integer;
stroka, stolbez: array[1..8] of integer;
ravni: boolean;
begin
for i:=1 to 8 do
begin
for j:=1 to 8 do
begin
for k:=1 to 8 do
begin
stroka[k]:=mas[i,k];
stolbez[k]:=mas[k,j];
end;
ravni:=true;
for k:=1 to 8 do
if stroka[k] <> stolbez[k] then ravni:=false;
if ravni then Writeln('Stroka ',i,'sovpadaet so stolbzom ',j);
end;
end;
end;
Хыиуду
Сообщения: 2442
Зарегистрирован: 06 мар 2005, 21:03
Откуда: Москва
Контактная информация:

Три переменных совершенно излишни. И begin - end в избытке

Код: Выделить всё

for i:=1 to 8 do
begin
  ravni:=true;
  for j:=1 to 8 do
    if mas[i,j]<>mas[j,i] then begin ravni:=false; break; end;
  write(i,'-я строка и ',i,'-й столбец ');
  if ravni then writeln('равны') else writeln('Не равны');
end;
Искусство программирования - заставить компьютер делать все то, что вам делать лень.
Для "спасибо" есть кнопка "Спасибо" в виде звездочки внизу под ником автора поста.
Ответить