Работа с массивами
Вот что я написал, но чет не катит с суммой, какую то хрень выдает. Подскажите пожалуйста.
function write_in_array:real;
begin
k:=0;
for i:=2 to n do
for j:=1 to n do
begin
if not odd(i) then
begin
k:=k+1;
v[q]:=change_m[i,j];
write(v[q]: 0: 2,' ');
end;
end;
end;
procedure sum_array;
begin
for q:=1 to k do
s:=s+v[q];
writeln;
write(s);
end;
[/COLOR]
Столкнулся с такой проблемкой: В одномерный массив v[q] записать компоненты чётных строк маирицы m[n,n]. И подсчитать сумму элементов массива v[q].
Вот что я написал, но чет не катит с суммой, какую то хрень выдает. Подскажите пожалуйста.
1- [COLOR=blue]if not odd(i)[/COLOR]
вместо этого if-а, лично я бы сделала инкремент в первом for-е на 2 шага(если в Паскаль это возможно). Например в VB:
For I = 2 to N [COLOR=blue]Step 2[/COLOR]
[COLOR=blue]
[/COLOR]
2- А насчет проблемы с вычеслением суммы, лично мне с неполным кодом сказать что-то трудно(возможно потому что Паскаль не учила :)). Не видно например тип переменной [COLOR=blue]s[/COLOR], массивы насколько я вижу типа real.
Также:
for i:=2 to n do
for j:=1 to n do
begin
if not odd(i) then
begin
k:=k+1;
[COLOR=blue]v[q]:=change_m[i,j];[/COLOR]
write(v[q]: 0: 2,' ');
end;
end;
end;
где объявление индекса [COLOR=blue]q[/COLOR] и почему не делаешь инкремент(прирост) для него(да и обнулять переменные надо, если по умолчанию этого не делает сам язык).
q := 0;
for i:=2 to n do
for j:=1 to n do
begin
if not odd(i) then
begin
k:=k+1;
v[q]:=change_m[i,j];
q := q + 1; { <= }
write(v[q]: 0: 2,' ');
end;
end;
end;
begin
k:=0;
for i:=2 to n do
for j:=1 to n do
begin
if not odd(i) then
begin
k:=k+1;
v[q]:=change_m[i,j];
write(v[q]: 0: 2,' ');
end;
end;
end;
procedure sum_array;
begin
for q:=1 to k do
s:=s+v[q];
writeln;
write(s);
end;
Я хочу сказать, что бы ты на будущее всетаки свой текст предоставлял более-менее прилинчно.
Потому-что люди могут и запутаться.......
Почему не видно что бы индекс q двигался по своему значению?
Как это в Паскале получается?
if not odd(i) then
begin
k:=k+1;
[COLOR=blue] v[q]:=change_m[i,j];[/COLOR]
write(v[q]: 0: 2,' ');
end;
:-?
adrom предоставь пожалуйста полный код в студию (если же он конечно не на 50 листов, образно говоря....);)
там может виднее будет.... :roll:
Что-то я тоже запутался....:( :o :x
adrom предоставь пожалуйста полный код в студию (если же он конечно не на 50 листов, образно говоря....);)
там может виднее будет.... :roll:
Ну твое состояние меня чучуть успокаивает (хотя возможно зря :)))
:)
OlgaKr большое спасибо, я совсем забыл про приращение для q :)
begin
k:=0;
q:=1;
for i: i=2 to n do
for j:=1 to n do
if not odd(i) then
begin
k:=k+1;
v[q]:=change_m[i,j];
write(v[q]: 0: 2,' ');
[COLOR=red]q:=q+1;[/COLOR]
end;
end;
procedure sum_array;
begin
sum:=0;
for q:=1 to k do
sum:=sum+v[q];
writeln(' ');
writeln('Сумма одномерного массива ',sum: 0: 2);
end;
Теперь ве нормально пашет, [SIZE=3][COLOR=red]ОГРОМНОЕ СПАСИБО[/COLOR][/SIZE] :)
LastSoul Весь код скинуть, а зачем там ведь к этому коду относится только задание массива change_m[n,n], ну и конечно же описание переменных.
OlgaKr большое спасибо, я совсем забыл про приращение для q :)
begin
k:=0;
q:=1;
for i: i=2 to n do
for j:=1 to n do
if not odd(i) then
begin
k:=k+1;
v[q]:=change_m[i,j];
write(v[q]: 0: 2,' ');
[COLOR=red]q:=q+1;[/COLOR]
end;
end;
procedure sum_array;
begin
sum:=0;
for q:=1 to k do
sum:=sum+v[q];
writeln(' ');
writeln('Сумма одномерного массива ',sum: 0: 2);
end;
Теперь ве нормально пашет, [SIZE=3][COLOR=red]ОГРОМНОЕ СПАСИБО[/COLOR][/SIZE] :)
В функции write_in_array ты мог бы вообще обойтись без q (заменив его на k).
И не понятно почему функция, а не процедура, ведь никаких значений не возвращает?
В функции write_in_array ты мог бы вообще обойтись без q (заменив его на k).
Можно конечно, только:
k:=k+1;
чтобы новых проблем не получилось
Можно конечно, только:
k:=k+1;
чтобы новых проблем не получилось
Не, передвигать инкремент как раз не надо - k ведь инициализируется нулем, а массив начинается с единицы.
Не, передвигать инкремент как раз не надо - k ведь инициализируется нулем, а массив начинается с единицы.
sorry :( , просто привыкла что индексы массивов с нуля начинаються (в среде, в которой я работаю)