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

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

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

> намекните на решение, нескольких задач
Ex1Le
сообщение 24.05.2005 22:04
Сообщение #1


Новичок
*

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

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


1)Нарастающий итог. Каждый элемент aij матрицы A(m,n) заменить суммой элементов подматрицы A'(i,j), расположенной в левом верхнем углу матрицы А.

вопросы : 1.как самому задавать числа матрицы
2. как задавать подматрицу...
3. как заменить элементы на сумму

2)Среди элементов массива Z(m) найти k (k<<m) наибольших. Поиск осуществить за один проход (просмотр) массива Z.

вопросы : 1. на самом деле я даже условие понять не могу sad.gif
2. как задавать поиск

3)Сессия. Результаты сессии, состоящей из трех экзаменов, для группы из n студентов представлены матрицей K(n,3). Оценка ставится по четырехбалльной системе; неявка обо-значается единицей. Подсчитать количество неявок, неудовлетворительных, удовлетвори-тельных, хороших и отличных оценок по каждому экзамену.

вопросы : 1. поиск и вывод его....

4) Задана матрица A(k,l). Найти вектор B(l), каждый элемент которого равен среднему арифметическому элементов соответствующего столбца матрицы А.

вопросы : 1. как присвоить элементам вектора среднее арифметич....
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов(1 - 17)
klem4
сообщение 24.05.2005 22:15
Сообщение #2


Perl. Just code it!
******

Группа: Модераторы
Сообщений: 4 100
Пол: Мужской
Реальное имя: Андрей

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


GoTo FAQ: Матрицы

+ пользуйся поиском по форуму, задач на массивы решено уйма!


--------------------
perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Ex1Le
сообщение 24.05.2005 22:44
Сообщение #3


Новичок
*

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

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


к 4й задаче .....че то я намудрил sad.gif еще и не пашет sad.gif

program  vektor;
const nmax=10;
     nmmax=10;
var
n,nm : integer;
vector : array[1..nmmax] of real;
matrix:array[1..nmax,1..nmmax] of real;
i,j:integer;
k:real;
begin
writeln('razmer matrici: ';
readln(n,nm);
if ((n>1) and (nm>1)) or (nm>nmmax) or (n>nmax) then
begin
writeln('vvod matrici';
for j:=1 to nm do
for i:=1 to n do
begin
write('matrix[',i,',',j,']:';
readln(matrix[i,j]);
end;
for j:=1 to nm do
begin
k:=0;
for i:=1 to n do
k:=k+matrix[i,j];
k:=k/n;
vektor[j]:=k;
end;
write('[';
for i:=1 to nm do write(vector[i]:5 :2,',';
writeln(vector[nm:5 :2,']';
end.


 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
klem4
сообщение 25.05.2005 6:47
Сообщение #4


Perl. Just code it!
******

Группа: Модераторы
Сообщений: 4 100
Пол: Мужской
Реальное имя: Андрей

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


Ошибки были в синтаксисе везде...
поправил что смог ;) теперь хоть компилируется smile.gif

program  vektor;
const nmax=10;
nmmax=10;
var
n,nm : integer;
vector : array[1..nmmax] of real;
matrix:array[1..nmax,1..nmmax] of real;
i,j:integer;
k:real;
begin
writeln('razmer matrici : ');
readln(n,nm);

writeln('vvod matrici ');
for j:=1 to nm do
for i:=1 to n do
begin
write('matrix[',i,',',j,']: ');
readln(matrix[i,j]);
end;
for j:=1 to nm do
begin
k:=0;
for i:=1 to n do
k:=k+matrix[i,j];
k:=k/n;
vector[j]:=k;
end;

for i:=1 to n do
begin
writeln;
for j:=1 to nm do
write(matrix[i,j]:2 :1,' ');
end;

writeln;
for i:=1 to nm do writeln(vector[i]:5 :2);
readln;

end.



--------------------
perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Ex1Le
сообщение 25.05.2005 23:01
Сообщение #5


Новичок
*

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

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


обьясните мне пожалуйста вторую задачу...я не то, чтобы не знаю как делать - я ее вообще не понял что там от меня хотят....
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 25.05.2005 23:09
Сообщение #6


Гость






Цитата(Ex1Le @ 25.05.05 23:01)
обьясните мне пожалуйста вторую задачу... я ее вообще не понял что там от меня хотят....

Что имеем по условию?
Цитата(Ex1Le @ 24.05.05 22:04)
2)Среди элементов массива Z(m) найти k (k<<m) наибольших. Поиск осуществить за один проход (просмотр) массива Z.

Значит, имеется массив (для простоты будем считать что из 10 элементов, хотя на самом деле их будет ГОРАЗДО больше)
Допустим, <1, 4, 8, 5, 2, 9, 4, 5, 7, 2>
в этом массиве тебе нужно найти K наибольших чисел: например при К=2, должен найти <9 и 8> это 2 самых больших числа в массиве. При К = 4: <9, 8, 7 и 5>
Но в задании указано что M гораздо больше K, то есть М может быть 1000 а К = 4, например. И этот поиск нужно осуществить за один проход по массиву...
 К началу страницы 
+ Ответить 
Ex1Le
сообщение 25.05.2005 23:16
Сообщение #7


Новичок
*

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

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


тогда решение пойдет так - берем число и сравниваем с другим..запоминаем большее и сравниваем его с третьим и т.д. и т.п....но тогда проходов получится столько, сколько наибольших чисел надо найти...а как за 1 проход сделать ?

Сообщение отредактировано: Ex1Le - 25.05.2005 23:19
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 25.05.2005 23:18
Сообщение #8


Гость






В этом и заключается смысл задачи... Думай...
 К началу страницы 
+ Ответить 
Ex1Le
сообщение 25.05.2005 23:23
Сообщение #9


Новичок
*

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

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


Цитата(volvo @ 26.05.05 0:18)
В этом и заключается смысл задачи... Думай...


я думаю надо сделать сортировку по уменьшению...и тогда из получившегося массива взять n чисел слева.... ( если я правильно FAQ понял то это qsort, вот токо не понял как ей пользоваться.... )

Сообщение отредактировано: Ex1Le - 25.05.2005 23:23
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 25.05.2005 23:27
Сообщение #10


Гость






:no: А я думаю, что и сортировкой нельзя пользоваться. Ибо даже если тебе и удастся отсортировать массив за 1 проход по нему (в чем я сильно сомневаюсь), то взятие K элементов слева будет уже вторым проходом...
 К началу страницы 
+ Ответить 
Ex1Le
сообщение 25.05.2005 23:30
Сообщение #11


Новичок
*

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

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


Цитата(volvo @ 26.05.05 0:27)
:no: А я думаю, что и сортировкой нельзя пользоваться. Ибо даже если тебе и удастся отсортировать массив за 1 проход по нему (в чем я сильно сомневаюсь), то взятие K элементов слева будет уже вторым проходом...

но этот проход-то будет уже по другому массиву... huh.gif или же я как всегда ничего не понимаю....
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 25.05.2005 23:36
Сообщение #12


Гость






Ну, насколько я понял условие нужно все сделать в ОДНОМ массиве. Иначе в чем вообще смысл задачи?
 К началу страницы 
+ Ответить 
Ex1Le
сообщение 25.05.2005 23:38
Сообщение #13


Новичок
*

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

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


ткните пожалуйста меня носом где можно про это прочитать ( весь FAQ пролистал несколько раз...нашел токо как найти один наибольший....) да и поиск че-то результатов не дал sad.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 25.05.2005 23:39
Сообщение #14


Гость






А такой задачи еще не было, так что придется тебе ее самому решать... :yes:
 К началу страницы 
+ Ответить 
Ex1Le
сообщение 25.05.2005 23:51
Сообщение #15


Новичок
*

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

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


это последняя задача для автомата sad.gif нашел как сделать за несколько проходов...НО НАДО ЗА ОДИН !!!!!!. я даже понять не могу ...sad.gif

Знаешь, что? Если тебе нужен автомат - думай... Если не хочешь (или не можешь) придумать - иди, и сдавай экзамен как все. Автоматы просто так не ставятся...

Сообщение отредактировано: volvo - 25.05.2005 23:57
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Ex1Le
сообщение 26.05.2005 0:02
Сообщение #16


Новичок
*

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

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


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


ВСЕМ СПАСИБО ЗА ПОМОЩЬ
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Ex1Le
сообщение 27.05.2005 8:05
Сообщение #17


Новичок
*

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

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


ЕСТЬ !!!! понеял как решать...осталось самое малое sad.gif написать прогу.... идет короче так... есть массив...из него берем k чисел...затем мы следующее число, не в ходящее в к сравниваем с числами массива к и если оно больше какого-то числа то заменить...число которое заменили отбрасывается...и берется следующее число и опять сравнивается с массивом и так далее...... осталось написать sad.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 27.05.2005 12:43
Сообщение #18


Гость






Ну, так в чем проблема?
const
n = 10;
k = 2;
arr: array[1 .. n] of integer =
(1, 4, 8, 5, 2, 9, 4, 5, 7, 2);

var
maxs: array[1 .. k] of integer;
i: integer;

procedure check(x: integer);
var i, min_ix: integer;
begin
min_ix := 1;
for i := 2 to k do
if maxs[min_ix] > maxs[i] then min_ix := i;
if maxs[min_ix] < x then maxs[min_ix] := x;
end;

begin
for i := 1 to k do maxs[i] := arr[i];

for i := succ(k) to n do
check(arr[i]);

for i := 1 to k do
writeln(maxs[i]);
end.
 К началу страницы 
+ Ответить 

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

 



- Текстовая версия 2.08.2025 7:34
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"