Програмисты помогите новичку Pascal
1.В одномерном массиве хранятся данные об урожайности колхозного поля за 20 лет. Найдите:
- среднюю урожайность поля;
- максимальную и минимальную урожайность;
- пятилетку с максимальной урожайностью;
- пятилетку, в которой урожайность была ниже средней;
2.Напишите программу для заполнения трех двумерных массивов и последующих их вывода.
Первый массив, размерностью n x m, заполняется данными, вводимыми с клавиатуры, так что заполнения ведется по строкам от последних элементах строки и первым
Второй массив, размерностью n x n, заполняется так: элементы, лежащие ниже главной диагонали, является случайными числами из интервала [-17;36], а лежащие на главной диагонали и выше, является случайными числами из интервала [100;10000]
Третий массив, размерностью n x n, заполняется для произвольного n так же, как для n=5
5 0 0 0 0
4 5 0 0 0
3 4 5 0 0
2 3 4 5 0
1 2 3 4 5
- среднюю урожайность поля;
- максимальную и минимальную урожайность;
- пятилетку с максимальной урожайностью;
- пятилетку, в которой урожайность была ниже средней;
2.Напишите программу для заполнения трех двумерных массивов и последующих их вывода.
Первый массив, размерностью n x m, заполняется данными, вводимыми с клавиатуры, так что заполнения ведется по строкам от последних элементах строки и первым
Второй массив, размерностью n x n, заполняется так: элементы, лежащие ниже главной диагонали, является случайными числами из интервала [-17;36], а лежащие на главной диагонали и выше, является случайными числами из интервала [100;10000]
Третий массив, размерностью n x n, заполняется для произвольного n так же, как для n=5
5 0 0 0 0
4 5 0 0 0
3 4 5 0 0
2 3 4 5 0
1 2 3 4 5
1. Получение урожайности пятилеток:
for i:=1 to 15 do begin
pyat:=0;
for j:= i to i+5 do
inc(pyat,ur[j]);
pyat:=pyat/5;
end;
где pyat - средняя урожайность за пятилетку начиная с i-го года, ur - урожайность i-го года.
Все остальное (среднее арифметическое, нахождение минимума и максимума) обсуждалось в этом форуме миллион раз.
2. Первый массив:
for i:=n downto 1 do
for j:=m downto 1 do
readln(mas[i,j]);
Второй массив:
for i:=1 to n do
for j:=1 to m do
if i<=j then mas[i,j]:=random(10000-100+1)+100
else mas[i,j]:=random(36+17+1)-17;
Третий массив
for i:=1 to n do
for j:=1 to m do
if i>j then mas[i,j]:=0
else mas[i,j]:=5+i-j
Где-то так. Если получается что-то не то - можно поменять местами индексы или изменить способ вывода массива на экран
for i:=1 to 15 do begin
pyat:=0;
for j:= i to i+5 do
inc(pyat,ur[j]);
pyat:=pyat/5;
end;
где pyat - средняя урожайность за пятилетку начиная с i-го года, ur - урожайность i-го года.
Все остальное (среднее арифметическое, нахождение минимума и максимума) обсуждалось в этом форуме миллион раз.
2. Первый массив:
for i:=n downto 1 do
for j:=m downto 1 do
readln(mas[i,j]);
Второй массив:
for i:=1 to n do
for j:=1 to m do
if i<=j then mas[i,j]:=random(10000-100+1)+100
else mas[i,j]:=random(36+17+1)-17;
Третий массив
for i:=1 to n do
for j:=1 to m do
if i>j then mas[i,j]:=0
else mas[i,j]:=5+i-j
Где-то так. Если получается что-то не то - можно поменять местами индексы или изменить способ вывода массива на экран
Искусство программирования - заставить компьютер делать все то, что вам делать лень.
Для "спасибо" есть кнопка "Спасибо" в виде звездочки внизу под ником автора поста.
Для "спасибо" есть кнопка "Спасибо" в виде звездочки внизу под ником автора поста.
Помоги решить задачу! Дана целочисленная прямоугольная матрица. Нужно ее уплотнить, удаляя из нее строки и столбцы, заполненные нулями.
Много способов, и все сложные. Зато красивые.
У меня первоначальная идея такая: проверить все строки и все столбцы. Записать номера тех, в которых все нули, в какое-нибудь множество. Потом еще раз пройтись по всему массиву: если ни номер столбца, ни номер строки не попадают в соответствующие множества - добавить число в одномерный массив. Потом вычитая из размеров исходной матрицы размеры получившихся множеств, можно получить размер искомой матрицы. И разбить полученный одномерный массив на строки матрицы.
У меня первоначальная идея такая: проверить все строки и все столбцы. Записать номера тех, в которых все нули, в какое-нибудь множество. Потом еще раз пройтись по всему массиву: если ни номер столбца, ни номер строки не попадают в соответствующие множества - добавить число в одномерный массив. Потом вычитая из размеров исходной матрицы размеры получившихся множеств, можно получить размер искомой матрицы. И разбить полученный одномерный массив на строки матрицы.
Искусство программирования - заставить компьютер делать все то, что вам делать лень.
Для "спасибо" есть кнопка "Спасибо" в виде звездочки внизу под ником автора поста.
Для "спасибо" есть кнопка "Спасибо" в виде звездочки внизу под ником автора поста.
Можно еще так, "на месте":
Цикл по строкам.
Если (СтрокаИзНулей) и (СтрокаНеПоследняя) то ЭтаСтрока = СледующаяСтрока
И так пока не будет совсем строк с нулями, т.е. что-то вроде пузырька, т.к. строка плывет в конец.
Так же для столбцов.
В итоге получится матрица, "окаймленная" нулями
Цикл по строкам.
Если (СтрокаИзНулей) и (СтрокаНеПоследняя) то ЭтаСтрока = СледующаяСтрока
И так пока не будет совсем строк с нулями, т.е. что-то вроде пузырька, т.к. строка плывет в конец.
Так же для столбцов.
В итоге получится матрица, "окаймленная" нулями
It's a long way to the top if you wanna rock'n'roll
Спасибо вам, попробую оба способа. Можете решить такую задачу в delphi? Характеристикой строки прямоугольной матрицы назовем сумму ее положительных четных элементов. переставляя строки заданной матрицы расположить их в соответствии с ростом характеристик. Только желательно код сам нужен, а то в Delphi, я уж вообще никак!
10$ и оно в ДелфяхTre писал(а):Спасибо вам, попробую оба способа. Можете решить такую задачу в delphi? Характеристикой строки прямоугольной матрицы назовем сумму ее положительных четных элементов. переставляя строки заданной матрицы расположить их в соответствии с ростом характеристик. Только желательно код сам нужен, а то в Delphi, я уж вообще никак!
ICQ 224196123
Помнишь, ты мне решил задачу с побочной диагональю? Так вот, я теперь делаю ее для главной, то что после диагонали, я могу вычислить. Вот алгоритмХыиуду писал(а):Много способов, и все сложные. Зато красивые.
У меня первоначальная идея такая: проверить все строки и все столбцы. Записать номера тех, в которых все нули, в какое-нибудь множество. Потом еще раз пройтись по всему массиву: если ни номер столбца, ни номер строки не попадают в соответствующие множества - добавить число в одномерный массив. Потом вычитая из размеров исходной матрицы размеры получившихся множеств, можно получить размер искомой матрицы. И разбить полученный одномерный массив на строки матрицы.
MaxSum:=mtx[1,1];
for j:=n downto 2 do {2 - samu diagonal propuskaem}
begin
Sum:=0;
for i:= 1 to j-1 do
Sum:=Sum+mtx[i,n+i-j+1];
if Sum>MaxSum then MaxSum:=Sum;
end;
А вот до диагонали, я никак не могу подобрать способ решения. Если не помнишь, то надо вычислить максимум среди сумм элементов диагоналей, параллельных главной диагонали квадратной матрицы
Помоги пожалуйста!!
Элементы, лежащие на диагоналях, параллельных главной:
mas[i,i+alpha]
alpha изменяется от -N до N, где N - размер матрицы
mas[i,i+alpha]
alpha изменяется от -N до N, где N - размер матрицы
Искусство программирования - заставить компьютер делать все то, что вам делать лень.
Для "спасибо" есть кнопка "Спасибо" в виде звездочки внизу под ником автора поста.
Для "спасибо" есть кнопка "Спасибо" в виде звездочки внизу под ником автора поста.
Немного переделанная версия" писал(а):Характеристикой строки прямоугольной матрицы назовем сумму ее положительных четных элементов. переставляя строки заданной матрицы расположить их в соответствии с ростом характеристик. Только желательно код сам нужен, а то в Delphi, я уж вообще никак!
It's a long way to the top if you wanna rock'n'roll