Вопрос № 166816: Приветствую! В институте задали курсовую, никак не могу разобраться с одним моментом! Дан массив размером N/ Продублировать в нём элементы с чётными номерами (2, 4, ...). Условный оператор не использовать. Написал код, но он именно вытаскивает чётные...
Вопрос № 166832: Уважаемые эксперты, помогите, пожалуйста, с задачей: Описать рекурсивную процедуру, которая: а) определяет, сколько раз входит элемент Е в список L; б)
находит максимальный элемент непустого списка L; ...Вопрос № 166849: Добрый вечер уважаемые эксперты <img src="http://rusfaq.ru/images/Forum/5.gif" border="0"> Помогите решить проблему с динамической памятью, а точнее с выделением её под матрицу и освобождением памяти. <div style="margin:15px; margin-top:10px"><...
Вопрос № 166.816
Приветствую! В институте задали курсовую, никак не могу разобраться с одним моментом! Дан массив размером N/ Продублировать в нём элементы с чётными номерами (2, 4, ...). Условный оператор не использовать. Написал код, но он именно вытаскивает чётные номера, т.е. совсем не то) прошу помочь разобраться! заранее благодарен!
Приложение:
Отправлен: 09.05.2009, 11:23
Вопрос задал: Derri (статус: Посетитель)
Всего ответов: 1 Мини-форум вопроса >>> (сообщений: 5)
Отвечает: Тимошенко Дмитрий
Здравствуйте, Derri!
Модифицировал код предложенный Юрием Борисовичем. В таком виде он работает при любом N, как четном так и нечетном.
Приложение:
Ответ отправил: Тимошенко Дмитрий (статус: Студент)
Ответ отправлен: 10.05.2009, 12:31
Как сказать этому эксперту "спасибо"?
Отправить SMS
#thank 248898 на номер 1151 (Россия) | Еще номера >>
Вам помогли? Пожалуйста, поблагодарите эксперта за это!
Оценка за ответ: 5
Вопрос № 166.832
Уважаемые эксперты, помогите, пожалуйста, с задачей:
Описать рекурсивную процедуру, которая: а) определяет, сколько раз входит элемент Е в список L; б) находит максимальный элемент непустого списка L;
Отправлен: 09.05.2009, 16:02
Вопрос задал: Maybeme (статус: Посетитель)
Всего ответов: 1 Мини-форум вопроса >>> (сообщений: 0)
Отвечает: Зенченко Константин Николаевич
Здравствуйте, Maybeme!
Смотрите приложение. Все процедуры рекурсивны. По программе: создается список из n элементов; созданный список выводится на экран; случайным образом выбирается один из элементов списка для поиска; процедура countList выполняет оба условия задачи; освобождается занимаемая память. Вопросы по программе задавайте в мини-форум. Удачи!
Приложение:
Ответ отправил: Зенченко Константин Николаевич (статус: Профессор) Украина, Киев ---- Ответ отправлен: 13.05.2009, 18:45
Как сказать этому эксперту "спасибо"?
Отправить SMS
#thank 249121 на номер 1151 (Россия) | Еще номера >>
Вам помогли? Пожалуйста, поблагодарите эксперта за это!
Вопрос № 166.849
Добрый вечер уважаемые эксперты Помогите решить проблему с динамической памятью, а точнее с выделением её под матрицу и освобождением памяти.
Код:
uses CRT; type Row=array[1..1] of integer; DynamicRow=^Row; DynamicCol=array[1..1]
of DynamicRow; Matrica=^DynamicCol;
Procedure PathOfFileIn(var Path:string); begin write('Введите путь входного файла '); readln(Path); end;
Procedure PathOfFileOut(var Path:string); begin write('Введите путь выходного файла '); readln(Path); end;
Procedure InputMatrixFromTxtFile(var X:Matrica; var K,L:integer; PathOfFile:string); var InputFile:text; i,j:integer; begin PathOfFileIn(PathOfFile); assign(InputFile,PathOfFile); reset(InputFile); if IOResult<>0 then begin writeln('Файл не найден или не читается!'); readln; halt; end else begin read(InputFile,K,L); for i:=1 to K do getmem(X^[i],L*SizeOf(integer)); for i:=1 to K do begin for j:=1 to L do read(InputFile,X^[i]^[j]); end; close(InputFile);
end; end;
Procedure PrintMatrix(X:Matrica; K,L:integer); var i,j:integer; begin for i:=1 to K do begin for j:=1 to L do write(X^[i]^[j]:4,' '); writeln; end; end;
Procedure TranspositingMaxMinElementInEveryRow(var X:Matrica; K,L:integer); var i,j,buf,A,B,min_j,max_j:integer; begin for j:=1 to L do begin max_j:=abs(X^[1]^[j]); min_j:=abs(X^
[1]^[j]); for i:=1 to K do begin if abs(X^[i]^[j])>=max_j then begin max_j:=abs(X^[i]^[j]); A:=i; end; if abs(X^[i]^[j])<=min_j then begin min_j:=abs(X^[i]^[j]); B:=i; end; end; buf:=X^[A]^[j]; X^[A]^[j]:=X^[B]^[j]; X^[B]^[j]:=buf; end; end;
Procedure OutputMatrixToTxtFile(X:Matrica;
K,L:integer; PathOfFile:string); var i,j:integer; OutputFile:text; begin PathOfFileOut(PathOfFile); assign(OutputFile,PathOfFile); rewrite(OutputFile); for i:=1 to K do begin for j:=1 to L do begin write(OutputFile,X^[i]^[j]:4,' '); end; writeln; writeln(OutputFile,''); end; close(OutputFile); end;
var K,L:integer;
X:Matrica; i:integer; Path_In,Path_Out:string; begin clrscr; writeln('Здравствуйте, уважаемый пользователь!'); writeln('Эта программа в каждом столбце меняет местами наибольший и наименьший по модулю элементы.'); InputMatrixFromTxtFile(X,K,L,Path_In); writeln('Вы ввели такую исходную матрицу:'); PrintMatrix(X,K,L); TranspositingMaxMinElementInEveryRow(X,K,L); writeln('В итоге, получили матрицу:'); PrintMatrix(X,K,L);
OutputMatrixToTxtFile(X,K,L,Path_Out); for i:=1 to K do freemem(X^[i],L*sizeof(integer)); readln; end.
Отправлен: 09.05.2009, 22:07
Вопрос задал: Bel9illi (статус: Посетитель)
Всего ответов: 1 Мини-форум вопроса >>> (сообщений: 1)
Отвечает: Бизин Михаил Анатольевич
Здравствуйте, Bel9illi! Вы забыли выделить память под массив указателей для строк. В функции InputMatrixFromTxtFile перед циклом выделения памяти строкам вставьте: getmem(X,K*SizeOf(DynamicRow)); А в основной программе после освобождения памяти из под строк вставьте: freemem(X,K*SizeOf(DynamicRow)); Других ошибок не вижу. У меня откомпилировалось и прекрасно работает на Turbo Pascal 7.1.
* Стоимость одного СМС-сообщения от 7.15 руб. и зависит от оператора сотовой связи.
(полный список тарифов)
** При ошибочном вводе номера ответа или текста #thank услуга считается оказанной, денежные средства не возвращаются.
*** Сумма выплаты эксперту-автору ответа расчитывается из суммы перечислений на портал от биллинговой компании.