Задача тривиальная, автомат вещь хорошая, но если человек просит написать за него прогу, думаю вряд ли он знает, что это такое. Самой лучшее решение : постороить автомат распознающий подслово это и посчитать сколько раз он переходит в кон. сост., 2) написать функции , возвращающую слова, и сравнивать каждое слово с заданным. К сожалению, не вчитывался в сорцы на 1-ой странице.
_________________ Первый огонь был получен людьми из-за перегрева. Пессимист отличается от оптимиста датой наступления конца света.
Помогите с задачей! Вот задача: Даны две вещественные матрицы А(N*M), В(N*M). Получить матрицу С(N*M), каждый элемент которой равен сумме элементов i-строки матрицы А, которые отсутствуют в j-м столбце матрицы В. Использовать подпрограммы проверки наличия числа в j-м столбце матрицы В, вычисления суммы, формирования новой матрицы.
Очень на Вас надеюсь! Вот пример с матрицами, если непонятно условие:
A=
1 2 3
4 5 1
B=
1 2 5
2 6 1
C=
c11 c12 c13
... ... ...
Т. е. с11=3 (т.к 1 и 2 есть в j-м столбце матрицы В); с12=1+3 (т.к. 2 есть есть в j-м столбце матрицы В) и т. д
Junior
Статус: Не в сети Регистрация: 15.09.2004 Откуда: Москва
Если еще сам не решил, вот фрагмент кода. Хотя я не стал бы вводить три подпрограммы, если бы этого не было в условии задачи.
Цитата:
Пример рассчитан на Object Pascal (Delphi), т.к. применяются динамические массивы.
Type
TMatrix = array of array of extended;
Var
A,B,C : TMatrix; // глобальные переменные - сами матрицы RowCount, ColCount : integer; // Размеры матриц тоже сделаем глобальными, хотя их и вовсе // можно не вводить
-------------------- А теперь процедуры и функции ------------------------
// Процедура вычисления матрицы Procedure CalcMatrix; Var i,j:integer; Begin for i:=0 to RowCount-1 do for j:=0 to ColCount-1 do C[i,j]:=GetMatrixCell(i,j); End;
//Функция вычисления элемента матрицы Function GetMatrixCell(iIdx, jIdx):Extended; Var tmp:Extended; // Можно и не вводить, но так проще для понимания j:integer; Begin tmp:=0; for j:=0 to ColCount-1 do tmp:=tmp+A[iIdx,j]*NotPresentInB(A[iIdx,j],jIdx); // или так: // if NotPresentInB(A[iIdx,j],jIdx) then tmp:=tmp+A[iIdx,j]; Result:=tmp; End;
// А теперь проверка условия невхождения элемента A в указанный столбец B Function NotPresentInB(AItem:Extended; jIdx:integer):Integer; // или :Boolean; Var i:Integer; Begin Result|:=1; // или :=True; - по умолчанию предполагаем, что совпадений нет... for i:=0 to RowCount-1 do if B[i,jIdx] = AItem then begin Result:=0; // или :=False; Break; // прерываем цикл - совпадение обнаружено end; end;
Junior
Статус: Не в сети Регистрация: 15.09.2004 Откуда: Москва
anad писал(а):
А это решение в Паскале?
А что, похоже на что-то другое? Вообще-то не мешает читать чуть по-внимательнее. Я же написал о языке в самом начале. Язык Object Pascal (среда - Delphi). И еще разок - это не программа, а всего лишь фрагмент. Если нужна прога целиком... Ну что ж, помогу конечно... Аська - в профиле.
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения