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

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

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

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





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

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


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


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


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

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

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


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

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


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





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

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


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


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

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

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


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


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





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

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


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


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

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

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


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

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


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





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

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


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


Гость






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





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

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


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


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

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

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


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

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


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


Профи
****

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

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


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

 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #15


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

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

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


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


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





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

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


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

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

 





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