Выпуск № 928 от 05.07.2009, 18:05
Администратор рассылки: Калашников О.А., Руководитель
В рассылке: подписчиков - 339, экспертов - 155
В номере: вопросов - 2, ответов - 5
Нам очень важно Ваше мнение об этом выпуске рассылки. Вы можете оценить этот выпуск по пятибалльной шкале, пройдя по ссылке: оценить выпуск >>
Вопрос № 170013: Помогите пожалуйста с задачей, что то совсем не получается она: Даны две действительные квадратные матрицы порядка n. Получить новую матрицу умножением элементов каждого столбца первой матрицы на наименьшее из значений элементов соответствующе...
Вопрос № 170014: Помогите пожалуйста доделать задачу: Даны два слова. Напечатать только те буквы слов, которые встречаются в обоих словах только один раз. Например, если заданные слова «процессор» и «информация», то для букв первого из них ответом должно быть:...
Вопрос № 170013:
Помогите пожалуйста с задачей, что то совсем не получается она:
Даны две действительные квадратные матрицы порядка n. Получить новую матрицу умножением элементов каждого столбца первой матрицы на наименьшее из значений элементов соответствующей строки второй матрицы.
Отвечает Emmanuel Goldstein, 3-й класс :
Здравствуйте, Иванов Виктор Олегович.
FreePascal
Приложение:
----- Основное правило хакера: "Научился сам, научи другого".
Ответ отправил: Emmanuel Goldstein, 3-й класс
Ответ отправлен: 29.06.2009, 23:06
Как сказать этому эксперту "спасибо"?
Отправить SMS
#thank 251646
на номер 1151 (Россия) |
Еще номера >>
Вам помогли? Пожалуйста, поблагодарите эксперта за это!
Отвечает _Ayl_, 8-й класс :
Здравствуйте, Иванов Виктор Олегович.
Вот программа
Приложение:
Ответ отправил: _Ayl_, 8-й класс
Ответ отправлен: 30.06.2009, 12:10
Как сказать этому эксперту "спасибо"?
Отправить SMS
#thank 251665
на номер 1151 (Россия) |
Еще номера >>
Вам помогли? Пожалуйста, поблагодарите эксперта за это!
Отвечает Micren, Практикант :
Здравствуйте, Иванов Виктор Олегович. Программа. Free Pascal. Память для матрицы выделяется динамически.
Код:
program P_170013;
type { Тип данных по условию действительный } TData=Double; PData=^TData;
{ Объект - квадратная матрица } TSquareMatrix=object private {
Данные } _data:PData; { Размерность } _dim:Word; public constructor Init(dim: Word); destructor Done; virtual; { Возвращает указатель на элемент в заданных строке и столбце } { Индексация с нуля } function GetItem(row, col: Word): PData; { Возвращает размерность } function Dimension: Word; end;
function TSquareMatrix.Dimension: Word; begin Dimension:=_dim;<
br>end;
destructor TSquareMatrix.Done; begin FreeMem(_data); end;
function TSquareMatrix.GetItem(row, col: Word): PData; var res:PData; begin if (row<_dim) and (col<_dim) then begin { Вычисление адреса элемента } res:=_data; Inc(res,row*_dim+col); GetItem:=res; end else begin WriteLn('Index out of bounds'); GetItem:=nil; end; end;
constructor TSquareMatrix.Init(dim: Word); begin GetMem(_data,dim*dim*SizeOf(TData)); _dim:=dim; end;
{
Заполняет матрицу случайными значениями } procedure FillMatrix(matrix:TSquareMatrix); var i,j,dim:Word; begin dim:=matrix.Dimension; i:=0; while i<dim do begin j:=0; while j<dim do begin matrix.GetItem(i,j)^:=Random(101)-50; Inc(j); end; Inc(i); end; end;
{ Печатает матрицу } procedure PrintMatrix(msg:String;matrix:TSquareMatrix); var i,j,dim
:Word; begin WriteLn(msg); dim:=matrix.Dimension; i:=0; while i<dim do begin j:=0; while j<dim do begin Write(matrix.GetItem(i,j)^:7:1,' '); Inc(j); end; WriteLn; Inc(i); end; end;
{ Ищет минимальный элемент в заданной строке } function MinimalInRow(matrix:TSquareMatrix;row:Word):TData; var i,dim:Word; res,item:TData; begin dim:=matrix.Dimension; res:=matrix.GetItem(row,0)^; i:=1; while i<dim
do begin item:=matrix.GetItem(row,i)^; if item<res then begin res:=item; end; Inc(i); end; MinimalInRow:=res; end;
{ Выполняет всю работу согласно условия } procedure Calculate(matrix1,matrix2,result:TSquareMatrix); var i,j,dim:Word; min:TData; begin dim:=result.Dimension; if (dim=matrix1.Dimension) and (dim=matrix2.Dimension) then begin i:=0; while i<dim do begin { Минимальный э
лемент в строке 2й матрицы } min:=MinimalInRow(matrix2,i); j:=0; { Идем по столбцу } while j<dim do begin { Умножаем найденный минимум на элементы столбца } result.GetItem(j,i)^:=matrix1.GetItem(j,i)^*min; Inc(j); end; Inc(i); end; end else begin WriteLn('Matrices are of different dimension'); Exit; end; end;
var Matrix1,Matrix2,ResultMatrix:TSquareMatrix; Dim:Word;
begin Randomize; {
Вводим размерность матриц } Write('Dimension of matrices:'); ReadLn(Dim);
Ответ отправил: Micren, Практикант
Ответ отправлен: 30.06.2009, 20:16
Как сказать этому эксперту "спасибо"?
Отправить SMS
#thank 251678
на номер 1151 (Россия) |
Еще номера >>
Вам помогли? Пожалуйста, поблагодарите эксперта за это!
Вопрос № 170014:
Помогите пожалуйста доделать задачу:
Даны два слова. Напечатать только те буквы слов, которые встречаются в обоих словах только один раз. Например, если заданные слова «процессор» и «информация», то для букв первого из них ответом должно быть: «п е ф м а я».
Отвечает Sky-er, 3-й класс :
Здравствуйте, Иванов Виктор Олегович. Решение вашей задачи с коментариями в приложении.
Приложение:
Ответ отправил: Sky-er, 3-й класс
Ответ отправлен: 29.06.2009, 22:24
Как сказать этому эксперту "спасибо"?
Отправить SMS
#thank 251644
на номер 1151 (Россия) |
Еще номера >>
Вам помогли? Пожалуйста, поблагодарите эксперта за это!
Отвечает Micren, Практикант :
Здравствуйте, Иванов Виктор Олегович. Программа. Тестировал Free Pascal.
Код:
program P_170014;
var str1,str2:String; goodChars,inLineChars:set of Char;
{ Процедура просматривает строку и оставляет в goodChars только те символы, которые встречаются один
раз } procedure parseStr(str:String); var i:Integer; begin for i := 1 to Length(str) do begin { Если символ есть в inLineChars удалим его из goodChars } if str[i] in inLineChars then begin goodChars:=goodChars-[str[i]]; end else begin { Если встретился первый раз занесем его в inLineChars } inLineChars:=inLineChars+[str[i]]; end; end; end;
{ Печатает только те символы, которые есть в goodChar }procedure printStr(str:String); var i:Integer; begin for i := 1 to Length(str) do begin if str[i] in goodChars then begin Write(str[i],' '); end; end; end;
* Стоимость одного СМС-сообщения от 7.15 руб. и зависит от оператора сотовой связи.
(полный список тарифов)
** При ошибочном вводе номера ответа или текста #thank услуга считается оказанной, денежные средства не возвращаются.
*** Сумма выплаты эксперту-автору ответа расчитывается из суммы перечислений на портал от биллинговой компании.