IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

 
 Ответить  Открыть новую тему 
> Нужна помощь в решении!, Матрицы
сообщение
Сообщение #1





Группа: Пользователи
Сообщений: 3
Пол: Женский
Реальное имя: Рита

Репутация: -  0  +


Помогите пожалуйста решить задачки чтоб на их основе хоть что-нибудь понять smile.gif(Скоро зачет)
Я понимаю что они должны быть простыми но потратьте чуточку времени чтоб помочь.

Среди элементов главной диагонали найти такие значения которых больше среднего арифметического для всех элементов матрицы.


В каждом столбце над побочной диагональю найти минимальные элементы.Сформировать из них масив,упорядочить его по убыванию и напечатать номера столбцов,соответсвуюшие этому масиву.

Сообщение отредактировано: Plushka -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Профи
****

Группа: Пользователи
Сообщений: 652
Пол: Мужской
Реальное имя: Алексей

Репутация: -  20  +


Ну первое я произвольно заполняю матрицу с данными размерами числами от 0 до 100,

program matrica;
uses crt;
type
arrsort= array[0..100,1..100] of integer;{100 элементов в строке и столбце думаю хватит}
var
matr : arrsort;
n,m : integer;{размеры матрицы}
S : real;

Procedure CreateMatr(var matr :arrsort;n,m : integer);
var
i,j : integer;
begin
for i:=1 to n do begin
for j:=1 to m do begin
matr[i,j]:=random(100);
write(matr[i,j],' ');
end;
writeln;
end;
end;

Procedure FindMiddle(var matr :arrsort;n,m : integer;Var S : real);
var
i,j : integer;
begin
S:=0;
for i:=1 to n do
for j:=1 to m do
S:=S+matr[i,j];{суммируем все элементы матрицы}

S:=S/(n*m);{Находим среднее арифметическое}

end;

Procedure FindElem(var matr :arrsort;n,m : integer; S : real);
var
i : integer;
begin
if n<=m then
begin
write('Элементы больше среднего:');
for i:=1 to n do
if matr[i,i]>S then
write(matr[i,i],' ');
end
else
begin
write('Элементы больше среднего:');
for i:=1 to m do
if matr[i,i]>S then
write(matr[i,i],' ');
end;
end;

begin
randomize;
write('Введите размеры матрицы');
read(n,m);
CreateMatr(matr,n,m);
FindMiddle(matr,n,m,S);
FindElem(matr,n,m,S);
readkey;
end.


Вроде все,если ничего не напутал,то будет работать.Со вторым заданием,я чето особо не понял.насчет побочной диагонали надо просто поменять порядок прохода цикла и в сравнении поставить знак минус.сформировать массив тоже несложно,надо просто перед строчкой печати в процедуре поиска элемента организовать заполнение массива,и перед этим создать этот пустой массив.насчет сортировки уточните,их очень много видов.насчет печати,извините голова не очень ясная,сообразить пока не могу, что вы хотите.

Сообщение отредактировано: Krjuger -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Гость






 ! 
Krjuger, я больше предупреждать не буду. Подними глаза чуть выше своего носа и перечитай в "Правилах раздела" то, которое идет пунктом 7. Оно относится к тебе ровно так же, как и ко всем остальным. Идея понятна? Твоя программа просто КИШИТ ошибками, раз уж ты взялся помогать - так хотя бы помогай правильно, а не так, чобы потом посыпался шквал недоуменных вопросов: "а у меня не компилируется", "не работает" и так далее. Может, тебе это и нужно, только вот это не нужно форуму. Я уж не говорю о том, что TP7 (а это именно его раздел) просто не даст тебе выделить 500*501*6 байт, но СИНТАКСИЧЕСКИЕ-то ошибки ты убрать мог???
Цитата
если ничего не напутал,то будет работать
Оно НИКОГДА работать не будет.

В следующий раз получишь наказание при бездумном шлепании программ...

На всякий случай присоединяю (чтоб было понятно, о чем речь вообще) скриншот программы ДО ее исправления:
Прикрепленное изображение

Добавлено через 2 мин.
Автору топика: тему переименуй... "Помогите" - не является информативным названием...
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


Профи
****

Группа: Пользователи
Сообщений: 652
Пол: Мужской
Реальное имя: Алексей

Репутация: -  20  +


Хорошо замолкаю, сотри мои посты в этой теме.Да и во всех остальных.
И кстати шлепание совсем не бездумное.(есть люди которые за это "шлепание" и поблагодарили.Да и плюс я пишу с нуля без кода самого человека,чем вы не занимаетесь,насчет того что паскаль мне не даст таких ресурсов,да согласен,по началю я вообще хотел создать динамический массив отталкивающий он параметров входного файла,но потом изменил(понял что человеку оно не нужно),и пришлось выкручиваться.по поводу моих же тем,так Вы не давали мне никакого информативтого совета,а лиш тыкали меня в места,где ошибки,хотя я от вас больше ожидал советов в реализации или теоретически.В ответ же я получал ответы.
Цитата

Трудно ожидать от программы, вываливающейся по RTE 216 корректной работы... То, что твой компилятор не отлавливает эту ошибку времени выполнения, не значит, что ее нет:

И думай тут сам, что, где и как.Из всех ваших постов по моей проблеме я только 2 могу выделить, как информативные,один про печать дерева(это было действительно интересно и поучительно),и второй и пост про стеку если не ошибасюь №7,все остальные же были написаны с некоторым надмением,а результатом было то что "я у вас ничему не научился и стою на одном месте и вы потеряли интерес к моей проблеме".А как можно сдвинутся,если вы совета не даете.Хотя нет был еще третий,когда вы сделали вывод по поводу программы по стему и деку,это было поучительно.
Цитата

потом посыпался шквал недоуменных вопросов: "а у меня не компилируется", "не работает" и так далее
Если я начал писать в тему,то я буду следить за ней до тех пор пока человек не решит свою задачу.И если я совершил любую ошибку,то Я ЛИЧНО принесу за нее свои извенения и САМ ее исправлю,если человек сам не сможет ее исправить,потому что за то что я пишу,я отвечаю.

P.S. Теперь я ВСЕ ошибки исправил и ТЕПЕРЬ она уж точно работает,потому что я на Паскале проверил.так что девушка,теперь можете разбираться.Кстати кроме орфографических ошибок других и не было.

Сообщение отредактировано: Krjuger -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5





Группа: Пользователи
Сообщений: 3
Пол: Женский
Реальное имя: Рита

Репутация: -  0  +


Сасибочки!!!Не представляешь как ты мне помог!

А насчет напечатать так это наверно вывести его и чтобы у каждого элемента была подпись из какого столбца его взяли.

Сообщение отредактировано: Plushka -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #6


Гость






Цитата
И думай тут сам, что, где и как
А что, думать для тебя - это очень сложно? Надо, чтоб за тебя думали другие, а тебе подавали решения на блюдечке с голубой каемочкой? А на кой тогда такой программист, за которого думают, ты не задумывался? Что такое RTE не знаешь? В гугле забанен?

Цитата
Из всех ваших постов по моей проблеме я только 2 могу выделить, как информативные
Спасибо хоть и на этом, хоть что-то было признано твоим Величеством полезным. Только вот ты не учел, что КРОМЕ меня тебе никто не отвечал вообще. Не задумывался, почему? Подумай на досуге...

Цитата
так Вы не давали мне никакого информативтого совета
Я не пишу программ ЗА кого-то после определенных событий. Максимум что я могу сделать - это сказать, что, и почему не работает или работает неправильно. В очень редких случаях (и не тебе решать, когда именно) - могу написать правильную версию. Что является для тебя информативным советом - понятия не имею, и иметь не хочу. По-моему, указание на то, что программа вылетает с ошибкой, и где это происходит (заметь, в то время, как ты утверждаешь, что программа "влегкую" компилируется и работает, когда этого в принципе происходить не может), достаточно информативно.

А насчет "дружелюбности" ответов dry.gif Тот ответ предназначался НЕ ТЕБЕ. Улавливаешь идею?
 К началу страницы 
+ Ответить 
сообщение
Сообщение #7





Группа: Пользователи
Сообщений: 3
Пол: Женский
Реальное имя: Рита

Репутация: -  0  +


Улвеклись!Лучше помогите осушествить печать с подписью!!!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #8


Гость






Какую печать? С какой подписью? Это две разных задачи, на всякий случай... Приведенное решение - только для первой из них. Причем, решение просто блещет программерскими находками, вроде:
Цитата
 if n<=m then
begin
write('Элементы больше среднего:');
for i:=1 to n do
if matr[i,i]>S then
write(matr[i,i],' ');
end
else
begin
write('Элементы больше среднего:');
for i:=1 to m do
if matr[i,i]>S then
write(matr[i,i],' ');
end;
, но это пусть остается на совести автора.

Теперь о второй части: поскольку в задании явно не указано, что за матрица, и откуда она берется - то вот это:
const
n = 10;
m = 10;

type
arrtype = array[1 .. n, 1 .. m] of integer;
vectype = array[1 .. m - 1] of integer;

procedure sort(const arr: vectype; var ix: vectype; n: integer);
var i, j, T: integer;
begin
for i := 1 to n do
for j := n downto i + 1 Do
if arr[ix[j - 1]] < arr[ix[j]] then begin
T := ix[j - 1]; ix[j - 1] := ix[j]; ix[j] := T
end;
end;

var
arr: arrtype;
mins, index: vectype;
i, j, min: integer;

begin
for i := 1 to n do begin
for j := 1 to m do begin
arr[i, j] := random(100);
write(arr[i, j]:4);
end;
writeln;
end;

writeln; writeln;

for j := 1 to m - 1 do begin
min := maxint;
for i := 1 to (n - j) do begin
if min > arr[i, j] then min := arr[i, j];
end;
mins[j] := min; index[j] := j;
end;

sort(mins, index, m - 1);
for i := 1 to m - 1 do begin
write(mins[index[i]], '(', index[i], ') ');
end;

end.
не противоречит ни одной букве задания:
Цитата
В каждом столбце над побочной диагональю найти минимальные элементы.Сформировать из них масив,упорядочить его по убыванию и напечатать номера столбцов,соответсвуюшие этому масиву
 К началу страницы 
+ Ответить 
сообщение
Сообщение #9


Профи
****

Группа: Пользователи
Сообщений: 652
Пол: Мужской
Реальное имя: Алексей

Репутация: -  20  +


Короче порешим так,если я делаю только хуже,то УДАЛИ все мои посты.Насчет RTE я и без гугла могу понять,что это run time error 216.
Думать не сложно,но если ты показываеш человеку ошибку,то логично сказать причину, по которой она вылетает.
Цитата

хоть что-то было признано твоим Величеством полезным

О чем я и говорил,так самого начала.
Цитата

Я не пишу программ ЗА кого-то после определенных событий

В моем варианте это событие наступило еще до начала того,как начал писать, видимо.И кстати, я не просил ЗА МЕНЯ писать, и меня вообще больше интересовали мои ошибки логические на уровне алгоритма решения,чем синтаксические,которые отлавливаются простым F9.
Цитата

решение просто блещет программерскими находками,

А твой вариант тоже этим блещет,а хотяб попытался сделать диалог с пользователем,при введении размеров массива,а ты же выкрутился наиболее просто,только, как мне говоорил преподаватель мой:"пользователь не будет лазить в код программы и менять там значения".а вывод мой такой корявый,потому что жеского ограничения на отношение m,n я не задал.А так на скорость программы повлиять это не должно было,лиш чуть больше строчек кода.А так можно было найти меньшею границу и поставить от 1 до меньшей и тогда проблем не было бы,но на мой взгляд это носит чисто эстетический характер.какого либо усложнения или упрощения программы я от этого не вижу.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 6.05.2024 9:39
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name