Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Работа с массивами

15K
27 апреля 2006 года
adrom
12 / / 29.03.2006
Столкнулся с такой проблемкой: В одномерный массив v[q] записать компоненты чётных строк маирицы m[n,n]. И подсчитать сумму элементов массива v[q].
Вот что я написал, но чет не катит с суммой, какую то хрень выдает. Подскажите пожалуйста.
Цитата:
[COLOR=blue]
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]

242
27 апреля 2006 года
Оlga
2.2K / / 04.02.2006
Цитата:
Originally posted by adrom
Столкнулся с такой проблемкой: В одномерный массив 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 : integer;
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;
1.8K
27 апреля 2006 года
LastSoul
279 / / 28.12.2005
Я твой код немного ВИЗУАЛЬНО подретактировал:
Код:
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;


Я хочу сказать, что бы ты на будущее всетаки свой текст предоставлял более-менее прилинчно.
Потому-что люди могут и запутаться.......
242
27 апреля 2006 года
Оlga
2.2K / / 04.02.2006
я уже запуталась
Почему не видно что бы индекс 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;


:-?

1.8K
27 апреля 2006 года
LastSoul
279 / / 28.12.2005
Что-то я тоже запутался....:( :o :x
adrom предоставь пожалуйста полный код в студию (если же он конечно не на 50 листов, образно говоря....);)
там может виднее будет.... :roll:
242
27 апреля 2006 года
Оlga
2.2K / / 04.02.2006
Цитата:
Originally posted by LastSoul
Что-то я тоже запутался....:( :o :x
adrom предоставь пожалуйста полный код в студию (если же он конечно не на 50 листов, образно говоря....);)
там может виднее будет.... :roll:



Ну твое состояние меня чучуть успокаивает (хотя возможно зря :)))
:)

15K
28 апреля 2006 года
adrom
12 / / 29.03.2006
LastSoul Весь код скинуть, а зачем там ведь к этому коду относится только задание массива change_m[n,n], ну и конечно же описание переменных. Если надо, могу скинуть.
OlgaKr большое спасибо, я совсем забыл про приращение для q :)
Код:
function write_in_array:real;
    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] :)
929
28 апреля 2006 года
sp999
198 / / 31.01.2003
Цитата:
Originally posted by adrom
LastSoul Весь код скинуть, а зачем там ведь к этому коду относится только задание массива change_m[n,n], ну и конечно же описание переменных.
OlgaKr большое спасибо, я совсем забыл про приращение для q :)
Код:
function write_in_array:real;
    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).
И не понятно почему функция, а не процедура, ведь никаких значений не возвращает?

242
28 апреля 2006 года
Оlga
2.2K / / 04.02.2006
Цитата:
Originally posted by sp999
В функции write_in_array ты мог бы вообще обойтись без q (заменив его на k).


Можно конечно, только:

 
Код:
v[k]:=change_m[i,j];
   k:=k+1;

чтобы новых проблем не получилось
929
28 апреля 2006 года
sp999
198 / / 31.01.2003
Цитата:
Originally posted by OlgaKr
Можно конечно, только:
 
Код:
v[k]:=change_m[i,j];
   k:=k+1;

чтобы новых проблем не получилось


Не, передвигать инкремент как раз не надо - k ведь инициализируется нулем, а массив начинается с единицы.

242
28 апреля 2006 года
Оlga
2.2K / / 04.02.2006
Цитата:
Originally posted by sp999
Не, передвигать инкремент как раз не надо - k ведь инициализируется нулем, а массив начинается с единицы.



sorry :( , просто привыкла что индексы массивов с нуля начинаються (в среде, в которой я работаю)

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог