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

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

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

 
 Ответить  Открыть новую тему 
> сортировка массива, метод пузырька
соня
сообщение 21.12.2006 17:24
Сообщение #1





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

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


Помогите пожалуйста решить задачку...!!! Очень-очень надо!!! !help.gif


Дана прямоугольная матрица размером mxn, содержащая вещественные числа. Определить сумму элементов в каждой строке матрицы. Упорядочить номера строк по возрастанию значений найденных сумм с помощью алгоритма сортировки методом пузырька. Вывести упорядоченный список номеров строк и соответствующих им сумм. (Матрицу заполнить случайными числами)
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
klem4
сообщение 21.12.2006 17:29
Сообщение #2


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

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

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


В чем конкретно проблема ? Задача и подобные ей по сортировкам строк/столбоцов решались десятки раз

Поиск + Массивы. Матрицы. Типичные задачи.
+ Методы сортировок


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





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

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


в том то идело, что не получается... Я нашла сумму в каждой строке, затем я создаю два массива: 1-й номера строк, 2-й соответствующая им сумма, а потом у меня ничего с сортировкой не получается..sad.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
мисс_граффити
сообщение 21.12.2006 20:18
Сообщение #4


просто человек
******

Группа: Модераторы
Сообщений: 3 641
Пол: Женский
Реальное имя: Юлия

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


покажи код: что у тебя не получается... правда, зачем создавать отдельный массив номеров - не понимаю


--------------------
Все содержимое данного сообщения (кроме цитат) является моим личным скромным мнением и на статус истины в высшей инстанции не претендует.
На вопросы по программированию, физике, математике и т.д. в аське и личке не отвечаю. Даже "один-единственный раз" в виде исключения!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
соня
сообщение 21.12.2006 20:27
Сообщение #5





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

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


мне же надо вывести массив номеров строк... вот я его и создаю..
если честно, то я уже совсем запуталась...
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
мисс_граффити
сообщение 21.12.2006 21:22
Сообщение #6


просто человек
******

Группа: Модераторы
Сообщений: 3 641
Пол: Женский
Реальное имя: Юлия

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


по-моему, проще работать с одним массивом, состоящим из 2 строк: строка с номерами и строка с суммами. хотя, наверное, не сильно принципиально.

и все же - покажи код программы.


--------------------
Все содержимое данного сообщения (кроме цитат) является моим личным скромным мнением и на статус истины в высшей инстанции не претендует.
На вопросы по программированию, физике, математике и т.д. в аське и личке не отвечаю. Даже "один-единственный раз" в виде исключения!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
соня
сообщение 22.12.2006 21:01
Сообщение #7





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

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


const
max_ind=20
var
a:array[1..max_ind,1..max_ind] of integer;
s,m,n,i,j:integer;
sum:array[1.. ? ] or integer; {здесь постоянно выдает ошибку}
ind:array[1..max_ind] of integer;
c:integer; {переменная для промежуточного хранения}
i1:integer; {индекс последнего обмена}
begin
write('Введите кол-во строк матрицы (m<=',max_ind,') m=');
readln(m);
write('Введите кол-во столбцов матрицы (n<=',max_ind,') n=');
readln(n);
for i:=1 to m do
for j:=1 to n do
write('a[',i,',',j,']=');
readln(a[i,j]);
end;
s:=0;
for i:=1 to m do
begin
for j:=1 to n do
begin
s:=a[i,j]+s;
sum[i]:=s; {создаю массив из суммы}
ind[i]:=i; {массив из соответствующих сумме номеров строк}
end;

????????

а дальше я не знаю....
пытаюсь отсортировать, но либо ошибки либо не сортирует... wacko.gif

М
не забывай использовать теги
мисс_граффити

 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
мисс_граффити
сообщение 22.12.2006 21:26
Сообщение #8


просто человек
******

Группа: Модераторы
Сообщений: 3 641
Пол: Женский
Реальное имя: Юлия

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


смотри сразу:
sum:array[1.. ? ] or integer; 

что это за вопросик?
наверное, должно быть max_ind
видимо, из-за него ошибка и возникает

теперь ошибка смысловая:

for i:=1 to m do
begin
s:=0; {ты же считаешь сумму для каждой строки отдельно, правда? значит, и обнулять надо для каждой}
for j:=1 to n do
s:=a[i,j]+s; {зачем тебе дополнительная переменная s? считала бы сразу sum[i]}
sum[i]:=s; {а зачем эти действия делать внутри цикла? достаточно один раз сохранять}
ind[i]:=i;
end;



--------------------
Все содержимое данного сообщения (кроме цитат) является моим личным скромным мнением и на статус истины в высшей инстанции не претендует.
На вопросы по программированию, физике, математике и т.д. в аське и личке не отвечаю. Даже "один-единственный раз" в виде исключения!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
соня
сообщение 22.12.2006 21:37
Сообщение #9





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

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


здесь (sum:array[1.. ? ] or integer;) я поставила вопросик чтобы спросить, что тут надо писать, потому что я вставляю max_ind и у меня выдает ошибку...
с подсчетом суммы в строках я исправлю ошибку, а вот дальше как сортировать?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 22.12.2006 21:42
Сообщение #10


Гость






Может, все-таки:
Цитата
sum:array[1.. max_ind] oF integer;
?
 К началу страницы 
+ Ответить 
соня
сообщение 22.12.2006 22:05
Сообщение #11





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

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


у меня в программе of написано, это тут я ошиблась... smile.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
мисс_граффити
сообщение 22.12.2006 22:12
Сообщение #12


просто человек
******

Группа: Модераторы
Сообщений: 3 641
Пол: Женский
Реальное имя: Юлия

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


ты что, заново набираешь?!
просто щелкни правой кнопкой по сохраненному pas файлу->открыть с помощью->блокнот и копируй smile.gif)

по-прежнему не сортирует?
покажи, как ты сортировала. сложно искать ошибки, не видя кода


--------------------
Все содержимое данного сообщения (кроме цитат) является моим личным скромным мнением и на статус истины в высшей инстанции не претендует.
На вопросы по программированию, физике, математике и т.д. в аське и личке не отвечаю. Даже "один-единственный раз" в виде исключения!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
соня
сообщение 28.12.2006 21:16
Сообщение #13





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

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


вот программа:




const
max_ind=30;
var
a:array[1..max_ind,1..max_ind] of integer;
m,n,i,j,m1,i1,t:integer;
s,k:array[1..max_ind] of integer;
begin
write('введите кол-во строк матрицы m=');
readln(n);
write('введите кол-во столбцов матрицы n=');
readln(m);
randomize;
for i:=1 to m do
for j:=1 to n do
begin
a[i,j]:=random(100);
end;
for i:=1 to m do
begin
for j:=1 to n do
write(a[i,j],' ');
writeln;
end;
for i:=1 to m do
begin
s[i]:=0;
for j:=1 to n do
begin
s[i]:=s[i]+a[i,j];
end;
writeln('сумма  ',s[i],' строки=',i);
end;
for i:=1 to n do
k[i]:=i;
readln;
m1:=m;
repeat
i1:=0;
for i:=1 to m1-1 do
if s[i]>s[i+1]
then
begin
t:=s[i];
s[i]:=s[i+1];
s[i+1]:=t;
i1:=i;
t:=k[i];
k[i]:=k[i+1];
k[i+1]:=t;
end;
m1:=i1;
until i1=0;
writeln('массив после сортировки');
for i:=1 to m do
writeln('сумма  ',s[i],' строки=',k[i]);
readln;
end.





помогите найти ошибку...


заполняю случайными числами
96 31 83
8 28 9
64 64 63
59 26 38

сумма 210 строки=1
сумма 45 строки=2
сумма 191 строки=3
сумма 123 строки=4

массив после сортировки

сумма 45 строки=2
сумма 123 строки=0
сумма 191 строки=3
сумма 210 строки=1

почему у меня постоянно обнуляются последние и предпоследние номера строк??
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Malice
сообщение 28.12.2006 21:39
Сообщение #14


Профи
****

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

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


Вот в этом месте вместо n надо m ?
Цитата
for i:=1 to n do
k[i]:=i;

 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
мисс_граффити
сообщение 28.12.2006 21:39
Сообщение #15


просто человек
******

Группа: Модераторы
Сообщений: 3 641
Пол: Женский
Реальное имя: Юлия

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


Обнуляет при m<>n
Ты в количестве строк и столбцов запуталась... Причем с самого начала:
Цитата
write('введите кол-во строк матрицы m=');
readln(n);
write('введите кол-во столбцов матрицы n=');
readln(m);


--------------------
Все содержимое данного сообщения (кроме цитат) является моим личным скромным мнением и на статус истины в высшей инстанции не претендует.
На вопросы по программированию, физике, математике и т.д. в аське и личке не отвечаю. Даже "один-единственный раз" в виде исключения!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
соня
сообщение 28.12.2006 21:52
Сообщение #16





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

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


smile.gif точно... большое спасибо!!!!! smile.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

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

 



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