![]() |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
![]() ![]() |
![]() |
qwerty) |
![]() ![]()
Сообщение
#1
|
Новичок ![]() Группа: Пользователи Сообщений: 15 Пол: Мужской Репутация: ![]() ![]() ![]() |
Условие
Дано:Массивы A1(n1,m1),A2(n2,m2),A3(n3,m3).Dsxbckbnm x=x1+x2+x3 u y=y1+y2+y3,где х1,х2,х3-кол-во единиц в четных столбцах массивов А1,А2,А3 соответственно,а Y1,Y2,Y3-коли-во двоек в нечетных столбцах этих массивов.Определение кол-ва единиц и двое оформить в виде подпрограмм. Суть вопроса,программа не считает.Ниже код программы
program abs;
type vect=array [1..100,1..100] of integer;
var A1,A2,A3:vect;x,y:real;n,m,n1,m1,m2,n2,n3,m3:integer;
procedure wwod(n,m:integer;var z:vect;q:string);
var i,j:integer;
begin
For i:=1 to n do begin
For j:=1 to m do begin
write (q,'[',i,',',j,']=') ;readln (z[i,j]);
end;end;end;
Procedure edinica(var z:vect;x:real);
var i,j:integer;
begin
x:=0;
for i:=1 to n do
For j:=1 to m do
if (z[j,m] mod 2= 0) and (z[j,m] =1) then
x:=x+1;
end;
procedure dvoika (var z:vect;y:real);
var i,j:integer;
begin
y:=0;
for i:=1 to n do begin
for j:=1 to m do begin
if (z[j,m] mod 2=1) and (z[j,m]=2) then
y:=y+1;
end;end;end;
begin
Write('n1=');
readln(n1);
Write('m1=');
readln(m1);
Write('n2=');
readln(n2);
Write('m2=');
readln(m2);
Write('n3=');
readln(n3);
Write('m3=');
readln(m3);
wwod (n1,m1,A1,'A1');
wwod (n2,m2,A2,'A2');
wwod (n3,m3,A3,'A3');
edinica(A1,x);
edinica(A2,x);
edinica(A3,x);
dvoika(A1,y);
dvoika(A2,y);
dvoika(A3,y);
writeln('x=',x);
writeln('y=',y);readln;
end.
|
volvo |
![]()
Сообщение
#2
|
Гость ![]() |
Во-первых,
Procedure edinica(var z:vect;VAR x:real); { <--- Возвращать параметр надо... }
(с двойкой - то же самое), но есть еще 2 вопроса:1) почему счетчик - Real? 2) ты затираешь первый результат вторым, а второй - соответственно третьим... Надо печатать результаты СРАЗУ после каждого вызова Edinica (и Dvoika)... Сообщение отредактировано: volvo - 19.05.2007 15:24 |
qwerty) |
![]() ![]()
Сообщение
#3
|
Новичок ![]() Группа: Пользователи Сообщений: 15 Пол: Мужской Репутация: ![]() ![]() ![]() |
Во-первых, Procedure edinica(var z:vect;VAR x:real); { <--- Возвращать параметр надо... }
(с двойкой - то же самое), но есть еще 2 вопроса:1) почему счетчик - Real? 2) ты затираешь первый результат вторым, а второй - соответственно третьим... Надо печатать результаты СРАЗУ после каждого вызова Edinica (и Dvoika)... НЕ мог бы написать Цитата Надо печатать результаты СРАЗУ после каждого вызова Edinica (и Dvoika)... не совсем понял ![]() |
volvo |
![]()
Сообщение
#4
|
Гость ![]() |
Вот это я имел в виду:
edinica(A1,x); dvoika(A1,y);
writeln('x=',x);
writeln('y=',y);
edinica(A2,x);
dvoika(A2,y);
writeln('x=',x); writeln('y=',y);
edinica(A3,x);
dvoika(A3,y);
writeln('x=',x); writeln('y=',y);
Добавлено через 3 мин. Да у тебя совсем неправильно реализованы процедуры... Вот так надо: Procedure edinica(var z:vect; var x: integer);
var i,j:integer;
begin
for i:=1 to n do
for j:=1 to m do
if (j mod 2= 0) and (z[i, j] =1) then x:=x+1;
end;
procedure dvoika (var z:vect; var y: integer);
var i,j:integer;
begin
for i:=1 to n do
for j:=1 to m do
if (j mod 2=1) and (z[i, j]=2) then y:=y+1;
end;
и сам вызов: x := 0; y := 0;
edinica(A1,x);
edinica(A2,x);
edinica(A3,x);
dvoika(A1,y);
dvoika(A2,y);
dvoika(A3,y);
writeln('x=',x);
writeln('y=',y);
readln;
Сообщение отредактировано: volvo - 19.05.2007 15:38 |
qwerty) |
![]()
Сообщение
#5
|
Новичок ![]() Группа: Пользователи Сообщений: 15 Пол: Мужской Репутация: ![]() ![]() ![]() |
program abs;
type vect=array [1..100,1..100] of integer;
var A1,A2,A3:vect;x,y,n,m,n1,m1,m2,n2,n3,m3:integer;
procedure wwod(n,m:integer;var z:vect;q:string);
var i,j:integer;
begin
For i:=1 to n do begin
For j:=1 to m do begin
write (q,'[',i,',',j,']=') ;readln (z[i,j]);
end;end;end;
Procedure edinica(var z:vect; var x: integer);
var i,j:integer;
begin
for i:=1 to n do
for j:=1 to m do
if (j mod 2= 0) and (z[i, j] =1) then x:=x+1;
end;
procedure dvoika (var z:vect; var y: integer);
var i,j:integer;
begin
for i:=1 to n do
for j:=1 to m do
if (j mod 2=1) and (z[i, j]=2) then y:=y+1;
end;
begin
Write('n1=');
readln(n1);
Write('m1=');
readln(m1);
Write('n2=');
readln(n2);
Write('m2=');
readln(m2);
Write('n3=');
readln(n3);
Write('m3=');
readln(m3);
wwod (n1,m1,A1,'A1');
wwod (n2,m2,A2,'A2');
wwod (n3,m3,A3,'A3');
x := 0; y := 0;
edinica(A1,x);
edinica(A2,x);
edinica(A3,x);
dvoika(A1,y);
dvoika(A2,y);
dvoika(A3,y);
writeln('x=',x);
writeln('y=',y);
readln;
end.
Программа опять не считает ,ввожу a1[1,1]=2 a2[1,2]=1 и т.д... до конца,выводит нули вместо x и y Сообщение отредактировано: qwerty) - 19.05.2007 16:29 |
volvo |
![]()
Сообщение
#6
|
Гость ![]() |
Размерность тоже надо передавать... Не написал сразу...
Procedure edinica(var z:vect; const n, m: integer;
var x: integer);
var i,j:integer;
begin
for i:=1 to n do
for j:=1 to m do
if (j mod 2= 0) and (z[i, j] =1) then x:=x+1;
end;
procedure dvoika (var z:vect; const n, m: integer;
var y: integer);
var i,j:integer;
begin
for i:=1 to n do
for j:=1 to m do
if (j mod 2=1) and (z[i, j]=2) then y:=y+1;
end;
...
x := 0; y := 0;
edinica(A1, n1, m1, x);
edinica(A2, n2, m2, x);
edinica(A3, n3, m3, x);
dvoika(A1, n1, m1, y);
dvoika(A2, n2, m2, y);
dvoika(A3, n3, m3, y);
...
|
qwerty) |
![]()
Сообщение
#7
|
Новичок ![]() Группа: Пользователи Сообщений: 15 Пол: Мужской Репутация: ![]() ![]() ![]() |
вольво спасибо большое,все получилось
|
![]() ![]() |
![]() |
Текстовая версия | 18.07.2025 1:22 |