![]() |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
![]() |
maklir |
![]()
Сообщение
#1
|
Новичок ![]() Группа: Пользователи Сообщений: 16 Пол: Мужской Реальное имя: Михаил Репутация: ![]() ![]() ![]() |
условие:дана вещественная матрица, наити столбец, в котором сумма элементов больше заданного числа, если столбец находится в правой части матрицы, то упорядочить столбец по убыванию, иначе-узнать, есть ли в нем хотябы 1 отрицательный элемент.
код: program podprog;
type x=array[1..30,1..30]of real;
var mass:x;j,i,n,k,row,col:byte;
procedure sum(mass:x;k,row,col:byte);
var summax:real;summ:real;
procedure upor(mass:x;k:byte);
var p:real;
begin
for i:=1 to row do
begin
for j:=1 to row-i do
begin
if mass[j,k]<mass[j+1,k] then
p:=mass[j,k];
mass[j,k]:=mass[j+1,k];
mass[j+1,k]:=p;
end;
end;
end;
function poisk(mass:x;k:byte):boolean;
var i,j,row,col:byte;p:boolean;
begin
begin
for i:=1 to row do
for j:=1 to col do
begin
if mass[i,j]<0 then
begin
p:=true;
i:=row;
j:=col;
end;
end;
poisk:=p
end;
end;
begin
write('vvedite A');
readln(summax);
k:=0 ;
for j:=1 to col do
begin
for i:=1 to row do
begin
summ:=summ+mass[i,j]
end;
begin
if summax < summ then
begin
k:=j;
j:=col;
i:=row ;
end;
end;
summ:=0
end;
write(summax,' stolbec',k);
readln;
begin
if k>col/2 then
begin
upor(mass,k);
end;
end;
begin
if k<col/2 then
begin
poisk(mass,k);
end;
end;
end;
begin
write('vvedite kol-vo strok row=');
readln(row);
write('vvedite kol-vo stolbcov col=');
readln(col) ;
for i:=1 to row do
for j:=1 to col do
begin
write('vvedite element(',i,';',j,')');
readln(mass[i,j]);
end;
for i:=1 to row do
begin writeln;
for j:=1 to col do write(mass[i,j]:8:0);
writeln;
end;
readln;
writeln;
begin
sum(mass,k,row,col);
end;
end.
заранее признателен |
![]() ![]() |
Client |
![]()
Сообщение
#2
|
Профи ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 865 Пол: Мужской Реальное имя: Вячеслав Репутация: ![]() ![]() ![]() |
а ты где-нибудь к процедурам обращаешься? если да, то покажи где
|
volvo |
![]()
Сообщение
#3
|
Гость ![]() |
Обращается, обращается... См. Sum, в частности...
Автору: Внимательно смотрим сюда: function poisk(mass:x;k:byte):boolean;
var i,j,row,col:byte;p:boolean;
begin
begin
for i:=1 to row do
for j:=1 to col do
begin
if mass[i,j]<0 then
begin
p:=true;
i:=row;
j:=col;
end;
end;
poisk:=p
end;
end;
Ничего нехорошего не замечаешь? Меняешь переменную цикла (касается как i так и j, и не только здесь, еще и ниже по тексту)? Получай нестабильную работу программы.Уууу... Как все запущено. У тебя еще и переменные цикла - глобальные? Еще один шаг к пропасти... Сообщение отредактировано: volvo - 3.12.2007 20:58 |
Client |
![]()
Сообщение
#4
|
Профи ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 865 Пол: Мужской Реальное имя: Вячеслав Репутация: ![]() ![]() ![]() |
Цитата Обращается, обращается... См. Sum, в частности... Да, ты прав (не до конца сделал трассировку) Сообщение отредактировано: Client - 3.12.2007 21:16 |
maklir |
![]()
Сообщение
#5
|
Новичок ![]() Группа: Пользователи Сообщений: 16 Пол: Мужской Реальное имя: Михаил Репутация: ![]() ![]() ![]() |
так, стоп, объясни на премитивном клеточном уровне, я с языко только неделю общаюсь
Добавлено через 2 мин. по поводу обращений, остальные два внутри sum, вроде по структуре так положено |
klem4 |
![]()
Сообщение
#6
|
![]() Perl. Just code it! ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 4 100 Пол: Мужской Реальное имя: Андрей Репутация: ![]() ![]() ![]() |
суть в том, что ты в цикле for меняешь переменную цикла ... Это грубейшая ошибка, а некоторые компиляторы этого вовсе не допускают.
-------------------- perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
|
volvo |
![]()
Сообщение
#7
|
Гость ![]() |
Цитата к Sum то он обращается, а вот к остальным то нет А ты саму Sum внимательно смотрел? Как ты хочешь обращаться к "остальным", если они вложенные? Только из Sum... Показать, или сам найдешь? |
maklir |
![]()
Сообщение
#8
|
Новичок ![]() Группа: Пользователи Сообщений: 16 Пол: Мужской Реальное имя: Михаил Репутация: ![]() ![]() ![]() |
ааа, стоп, не говорите такими сложными словами, что такое троссировка, и кде конкретно(в какой строке ) я меняю переменную?
Добавлено через 2 мин. все вроди сообразил, сейчас буду пробовать Добавлено через 5 мин. так, стоп, конкретно в указаном месте, смена переменных-неудачная попытка выйти из цикла до его завершения(значит надо через while было делать) но в других местах проги я этого не делаю.. |
![]() ![]() |
![]() |
Текстовая версия | 26.07.2025 4:41 |