![]() |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
![]() |
Определение столбца............. |
![]()
Сообщение
#1
|
Гость ![]() |
Помогите пожалуйста
Вот такая задача Я нашел число нулевых элементов в каждом столбце(ch[j]) И теперь мне надо найти столбец в котором больше всего нулевых элементов.? |
![]() ![]() |
Serega18 |
![]()
Сообщение
#2
|
Новичок ![]() Группа: Пользователи Сообщений: 26 Пол: Мужской Репутация: ![]() ![]() ![]() |
Сделал так:Сделал еще одну процедуру в которой из элементов измененной матрицы А формирую матрицу В и потом в F2 вывожу уже матрицу В.Так я могу сделать?
Исходный код Program S4_3_3; Uses crt; Type Matrix=array[1..4,1..5] of real; Odn=array[1..5] of real;var A,B:matrix; ch:odn; i,j,indx:integer; f1,f2:text; Procedure chislo(var A:matrix;ch:odn); var i,j:integer; Begin ch[j]:=0; For i:=1 to 4 do Begin For j:=1 to 5 do Begin IF A[i,j]=0 Then ch[j]:=ch[j]+1; end; end; end; Function min_nulls(var a:matrix):integer; var i,j:integer; min,indx,count:integer; Begin min:=5; for j:=1 to 5 do Begin count:=0; for i:=1 to 4 do if A[i,j]=0 then inc(count); If min>count then Begin min:=count; indx:=j; end; end; min_nulls:=indx; end; Procedure resort(var A:matrix;indx:integer); Var i:integer; T:real; Begin If indx<>1 then for i:=1 to 4 do Begin T:=A[i,1]; A[i,1]:=A[i,indx]; A[i,indx]:=T; end; end; Procedure ST(var A:matrix;indx:integer); Var i,j,n:integer; Begin n:=0; for i:=1 to 4 do Begin IF A[i,indx]=0 then Begin A[i,indx]:=A[5-n,indx]; A[5-n,indx]:=0; n:=n+1; end; end; end; Procedure output(A,B:matrix); Var i,j:integer; Begin for i:=1 to 4 do Begin For j:=1 to 5 do A[i,j]:=B[i,j]; end; end; Begin assign(f1,'isdan.pas'); assign(f2,'vdan.pas'); reset(f1); rewrite(f2); Begin for i:=1 to 4 do Begin For j:=1 to 5 do read(f1,A[i,j]); end; writeln(f2,B[i,j]); end; Begin clrscr; chislo(A,ch); min_nulls(A); resort(A,indx); St(A,indx); Output(A,B); readln; end; end. Сообщение отредактировано: volvo - 30.05.2005 20:48 |
volvo |
![]()
Сообщение
#3
|
Гость ![]() |
Цитата(Serega18 @ 30.05.05 16:52) Так я могу сделать? Сделать-то можешь только... Вот программа-то твоя работать если и будет, то с ошибками. Смотри: Procedure chislo(var A:matrix;ch:odn);В ней ты меняешь содержимое массива Ch, но пойми, что этих изменений ты не увидишь: чтобы их увидеть, нужно передавать массив так: Procedure chislo(var A:matrix;var ch:odn); А так как сейчас у тебя - массив не изменится... Аналогично здесь: Procedure output(A,B:matrix);Какой матрица B была до вызова Output, такой и останется (по причине, указанной выше)... |
![]() ![]() |
![]() |
Текстовая версия | 17.07.2025 13:19 |