0 / 0 / 0
Регистрация: 03.02.2012
Сообщений: 56
1

Дан массив A размера N. Сформировать новый массив B того же размера по следующему правилу

04.03.2014, 16:00. Показов 9030. Ответов 9
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
помогите пожалуйста с объяснением задачи:
Дан массив A размера N. Сформировать новый массив B того же размера по следующему правилу: элемент BK равен среднему арифметическому элементов массива A с номерами от 1 до K.

Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
var a: array [1..100] of integer;
    b: array [1..100] of real;
    n,i,j,sum: integer;
begin
write('n=');                 
readln(n);
for i:=1 to n do                       
    begin
    a[i]:=random(50);                 
    write(a[i]:6);                      
    end;
writeln;
for i:=1 to n do                       
    begin
    sum:=0;                           
    for j:=i to n do        /////////// почему мы берем j:=i to n to....    ? не понимаю этот момент.      
        inc(sum,a[j]);                
    b[i]:=sum/(n-i+1);                 
    write(b[i]:6:1);                     
    end;
readln;
end.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
04.03.2014, 16:00
Ответы с готовыми решениями:

Сформировать новый массив B того же размера по следующему правилу
Дан массив А размера N.Сформулировать новый массив B того же размера по следующему правилу: Элемент...

Сформировать новый массив того же размера по правилу
Помогите пожалуйста решить задачу.,если можно с объяснением. Дан массив A размера N. Сформировать...

Сформировать новый массив B того же размера по правилу
Array61. Дан массив A размера N. Сформировать новый массив B того же размера по следующему правилу:...

Сформировать массив В того же размера по правилу
Из элементов массива А, заполненного целыми числами, сформировать массив В того же размера по...

9
Почетный модератор
64291 / 47589 / 32740
Регистрация: 18.05.2008
Сообщений: 115,181
04.03.2014, 16:22 2
Pascal
1
2
3
4
5
6
7
8
for i:=1 to n do
    begin
    sum:=0;
    for j:=1 to i do       
        inc(sum,a[j]);
    b[i]:=sum/i;
    write(b[i]:5:1);
    end;
1
Модератор
Эксперт Pascal/DelphiЭксперт NIX
7655 / 4494 / 2811
Регистрация: 22.11.2013
Сообщений: 12,833
Записей в блоге: 1
04.03.2014, 16:22 3
Все намного проще:
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
const
  LIM=50; W=6; D=1;
var
  a, b: array [1..100] of real;
  s: real;
  n, i: integer;
begin
  Randomize;
  Write('Введите n [1..100]: '); ReadLn(n);
  WriteLn('A =');
  for i:=1 to n do begin
    a[i]:=LIM*Random; Write(a[i]:W:D);
  end; WriteLn;
  WriteLn('B =');
  s:=0;
  for i:=1 to n do begin
    s:=s+a[i];
    b[i]:=s/i;
    Write(b[i]:W:D);
  end; WriteLn;
  ReadLn;
end.
1
0 / 0 / 0
Регистрация: 03.02.2012
Сообщений: 56
04.03.2014, 16:50  [ТС] 4
Но я не понимаю,что значит j и как его объяснить ?
0
Модератор
Эксперт Pascal/DelphiЭксперт NIX
7655 / 4494 / 2811
Регистрация: 22.11.2013
Сообщений: 12,833
Записей в блоге: 1
04.03.2014, 16:57 5
Дарьюшка, кто-то решал неоптимальным способом несколько иную задачу, в которой элемент BK равен среднему арифметическому элементов массива A с номерами от K до N. А в цикле считал сумму элементов от текущего до последнего.
1
0 / 0 / 0
Регистрация: 03.02.2012
Сообщений: 56
04.03.2014, 17:09  [ТС] 6
Мне сказали что там все нормально, но единственное что спросили это про j, а я не знаю что это
0
Модератор
Эксперт Pascal/DelphiЭксперт NIX
7655 / 4494 / 2811
Регистрация: 22.11.2013
Сообщений: 12,833
Записей в блоге: 1
04.03.2014, 17:32 7
Цитата Сообщение от Дарьюшка Посмотреть сообщение
сказали что там все нормально
Вас обманули. Код решает несколько другую задачу:
Дан массив A размера N. Сформировать новый массив B того же размера по следующему правилу: элемент BK равен среднему арифметическому элементов массива A с номерами от K до N.
j -- это целая переменная (тип integer), использована в качестве счетчика цикла, принимает значения от текущего элемента до n, внутри этого цикла считается сумма элементов A от текущего (i-го) до последнего (n-го).

Добавлено через 2 минуты
Кстати, эта другая задачка решается тоже без вложенного цикла:
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
const
  LIM=50; W=6; D=1;
var
  a, b: array [1..100] of real;
  s: real;
  n, i: integer;
begin
  Randomize;
  Write('Введите n [1..100]: '); ReadLn(n);
  WriteLn('A =');
  for i:=1 to n do begin
    a[i]:=LIM*Random; Write(a[i]:W:D);
  end; WriteLn;
  s:=0;
  for i:=n downto 1 do begin
    s:=s+a[i];
    b[i]:=s/(n-i+1);
  end;
  WriteLn('B =');
  for i:=1 to n do Write(b[i]:W:D); WriteLn;
  ReadLn;
end.
1
0 / 0 / 0
Регистрация: 03.02.2012
Сообщений: 56
04.03.2014, 17:40  [ТС] 8
спасибо, но мне бы как-нибудь попроще.
0
911 / 238 / 100
Регистрация: 21.10.2012
Сообщений: 577
04.03.2014, 18:28 9
Цитата Сообщение от bormant Посмотреть сообщение
for i:=n downto 1 do begin
s:=s+a[i];
b[i]:=s/(n-i+1);
end;
Непонятно почему переделано по сравнению с предыдущей версией, где от 1 до n
И зачем второй цикл?
Да и вывод сползает.
Цитата Сообщение от Дарьюшка Посмотреть сообщение
мне бы как-нибудь попроще
"Не из любой песни слова можно выкинуть"
Вы уж, видимо, хотите программы из одного - двух слов ???
Можно один цикл сократить, но зато добавится выравнивание при печати.
Еще можно компактнее написать: объединить несколько строк текста в одну строку - тупизм: ненаглядно, но выглядит компактнее.
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
const
  LIM=50; W=6; D=1;
var
  a, b: array [1..100] of real;
  s   : real;
  n, i: integer;
begin
  Randomize;
  Write('Введите n [1..100]: '); ReadLn(n); WriteLn('A =');s:=0;
  for i:=1 to n do
   begin
     a[i]:=LIM*Random; Write(a[i]:W:D);
     s:=s+a[i];b[i]:=s/i; if i mod 10 = 0 then writeln;
   end; WriteLn; WriteLn('B =');
  for i:=1 to n do
    begin Write(b[i]:W:D); if i mod 10 = 0 then writeln;end;
  WriteLn;ReadLn;
end.
Хотя, вообще-то, можно одним циклом обойтись, но добавятся переменные.
0
Модератор
Эксперт Pascal/DelphiЭксперт NIX
7655 / 4494 / 2811
Регистрация: 22.11.2013
Сообщений: 12,833
Записей в блоге: 1
04.03.2014, 18:42 10
Цитата Сообщение от markiza-inc Посмотреть сообщение
почему переделано по сравнению с предыдущей версией, где от 1 до n
это решение второй задачи, где B_k равно среднему арифметическому элементов A от k до N. Просматривая массив с конца, от n до 1, на каждом шаге цикла по i в s получается сумма элементов от i до n; их количество равно (n-i+1), а среднее арифметическое, соответственно, s/(n-i+1).

Добавлено через 3 минуты
Чтобы не сползал вывод, можно, пользуясь тем, что стандартная ширина экрана 80 символов, взять W равным делителю 80, например, 8, тогда заворачивание строчек на экране получим "без-воз-мезд-но, то есть даром" (q) Сова.
1
04.03.2014, 18:42
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
04.03.2014, 18:42
Помогаю со студенческими работами здесь

Из элементов массива А сформировать массив В того же размера по правилу
. Из элементов массива А сформировать массив В того же размера по правилу: неотрицательные элементы...

Из элементов массива C сформировать массив A того же размера по правилу
Из элементов массива C сформировать массив A того же размера по правилу: если номер чётный, то...

Из исходного массива сформировать новый массив того же размера по заданному правилу
Дан массив А размера N. Сформировать новый массив того же размера по следующему правилу: элемент В...

Дан массив А размера N. Сформировать новый массив В того же размера по следующему правилу: элемент Вк равен сумме элемен
Дан массив А размера N. Сформировать новый массив В того же размера по следующему правилу: элемент...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru