Aileen88 | ||||
Народ, пожалуйста, помогите составить алгоритмы в паскале!!! Сама никак не разберусь... =( 1) Составить программу. Для матрицы В (5 строк, 4 столбца) вычислить выражение У=(С[1]-1)^5 + (C[2]-1)^4 +...+(C[5]-1)^1 где С[k] среднее арифметическое значение элементов в К-той строке матрицы В, значения которых превышают значение 1-го элемента в данной строке. Зам: для вычисления среднего арифм. в произвольной строке матрицы использовать процедуру 2) Для получения результата составить функцию, исходными данными которой является массив у[1],y[2],...,y[n] с заданным числом n элементов. Кроме того, разработать программу для отладки составления функции: суммы отридцательных элементов массива y[1],y[2],...,y[n]. |
||||
petya5 | ||||
const RowCount = 5; ColCount = 4; type TMatrix = array [1..ColCount, 1..RowCount] of Integer; var Matrix: TMatrix; function Power(value:Double, exponent: Integer):Double; var i:Integer; Result:Double; begin Result := value; for i := 2 to exponent do Result := Result * value; Power := Result; end; function GetRowSum(iRowNumber: Inreger): Double; var i:Integer; Result:Double; begin for i:=1 to ColCount do if (Matrix[i, iRowNumber] > Matrix[1, iRowNumber]) then Result := Result + Matrix[i, iRowNumber]; Result := Result / RowCount; GetRowSum := Power(Result - 1, RowCount - iRowNumber + 1); end; function Evaluate: Double; var i:Integer; Result:Double; begin for i:=1 to RowNumber do Result := Result + GetRowSum(i); Evaluate := Result; end; Функцию Power можно не писать, если в Паскале есть аналогичная. Просто я не уверен, потому и написал ее тут. Да, ну и еще тут нет процедуры заполнения матрицы. Поскольку в вопросе об этом речь не шла, условия ее заполнения неизвестны (то ли это будет определенная матрица, то ли, что более вероятно, из случайных величин). Теперь этот код вставляете в тело основной программы и компилите. При компиляции возможно будут найдены синтаксические ошибки, типа пропущенного двоеточия или точки с запятой. Не обессудьте, я не компилил этот код, да и паскаля у меня нет. Все писалось в NotePad'e :) Это ответ на первый вопрос. Со вторым сложнее, поскольку не совсем понятно, что значит массив, являющийся исходными данными для функции. И уж совсем не понятно, что такое "программа для отладки составления функции". Хотелось бы получить пояснения... Это сообщение отредактировал petya5 - 24-05-2007 - 10:48 |
||||
maxdiversexnarod1 | ||||
petya5 Мда, по коду видно, что его ещё не компилили ![]() Вот это: 1) Evaluate() заменить на Evaluate 2) Result в паскале юзать нельзя 3) после if пишется then 4) возможно, что-то еще, т.к. сам тоже не компилил ![]() В общем, советую попробовать самому откомпилить и отдебажить. Раз уж помогать - так довести дело до конца. |
||||
maxdiversexnarod1 | ||||
1) "исходные данные" - т.е. "параметры функции". По-моему, это очевидно 2) "программа для отладки составления функции" - видимо, некая программа, которая проверяет указанную функцию, вызывая её с параметрами, введёнными с клавиатуры/файла. Чтобы проверить, правильно ли она работает. |
||||
petya5 | ||||
2 maxdiversexnarod1 Совершенно с тобой согласен! :) Result эо у меня от дельфы. Сам уже дома об этом вспомнил :) И то что then пишется и что () ненужны - это все от лукавого (то бишь от С/С++/С#) :) Но с компиляцией у меня и правда будут траблы: нет у меня ни паскаля ни делфи. Песть компилит вопрошающий: главное по сути помочь. :) P.S. Поправил предыдущий свой пост в связи с рекомендациями :) Это сообщение отредактировал petya5 - 24-05-2007 - 10:50 |
||||
petya5 | ||||
Вовсе не очевидно. По твоему получается, нужно написать функцию, у которой в параметрах с массив произвольной длинны. Но я не уверен, что такое Паскаль может .Сея фича, если только я не ошибаюсь, появилась в ДЕлфи, да и от не сразу. Или каждый элемент будут вводить по-почереди? В общем пускай все-таки "аффтар" уточнит, что бы нам не гадать. Как говорится ТЗ в студию! :) |
||||
maxdiversexnarod1 | ||||
2 petya5 Почему же именно массив переменной длины? В Паскале в таких случаях просто делают массив размером, скажем, в 100 или 1000 - с запасом. Так что всё нормально. Когда все запрещено без 0, то СН не будет найден. Это сообщение отредактировал defloratsia - 31-03-2009 - 01:15 |
||||
petya5 | ||||
Не знаю, насколько это нормально, а нам за такое, еще во время учебы, отрывали ручки и вставляли вместо ножек, фигурально выражаясь. :) |
||||
maxdiversexnarod1 | ||||
Хм, видимо всё зависит от уровня преподов ![]() Например, у меня был случай, когда пришлось переделывать задачку: я программу разделил по смыслу на несколько процедур, а препод сказал "Нельзя, давай переделывай!" - как будто сплошным кодом будет лучше, чем структурированно. Так что обычно при выполнении д/з лучше сделать попроще, но безо всяких намеков на хороший стиль и устойчивость на больших входных данных. |