03.04.2019, 09:48 | #1 (permalink) |
Member
Регистрация: 27.02.2019
Сообщений: 17
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
|
Помогите написать две несложные программы
|
03.04.2019, 09:48 | |
Helpmaster
Member
Регистрация: 08.03.2016
Сообщений: 0
|
Чтобы не заходить в тупик вы можете пролистать аналогичные темы Помогите написать две программы Помогите написать программы |
03.04.2019, 10:32 | #2 (permalink) |
Специалист
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
|
Ладно. Вот первое задание:
Код:
Const N=20; Var A,B:Array[1..N] of Integer; i,j,S,P,Ifirst,Ilast:Integer; Begin Randomize; Writeln('Initial array:'); for i:=1 to N do begin A[i]:=-5+Random(10); if (i=5) or (i=17) then A[i]:=0; Write(A[i]:4); end; Writeln; Writeln; P:=1; for i:=1 to (N div 2) do P:=P*A[2*i]; Writeln('Product = ',P); Writeln; Writeln; Ifirst:=0; Repeat Inc(Ifirst); Until A[Ifirst]=0; Ilast:=N+1; Repeat Dec(Ilast); Until A[Ilast]=0; S:=0; for i:=Ifirst+1 to Ilast-1 do S:=S+A[i]; Writeln('Sum = ',S); Writeln; Writeln; j:=0; for i:=1 to N do if A[i]>=0 then begin Inc(j); B[j]:=A[i]; end; j:=N+1; for i:=N downto 1 do if A[i]<0 then begin Dec(j); B[j]:=A[i]; end; Writeln('New array:'); for i:=1 to N do Write(B[i]:4); Readln End. |
03.04.2019, 10:57 | #3 (permalink) |
Специалист
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
|
Второе задание. Тут отмечу, что об не напортачить в методичке — и речи быть не может! Дают конкретные матрицы с n=3 и тут же заявляют, что n=8. Или нужно сгенерить свои матрицы? Как всегда, мутно.
Код:
Const n=3; m=4; Var A:Array[1..n,1..m] of Real; B:Array[1..m] of Real; D:Array[1..n] of Real; i,k:Integer; Begin A[1,1]:= 3.8; A[1,2]:= 0.1; A[1,3]:= 1.2; A[1,4]:= 2.4; A[2,1]:= 3.8; A[2,2]:=-1.0; A[2,3]:= 3.1; A[2,4]:= 1.5; A[3,1]:=-1.6; A[3,2]:= 0.4; A[3,3]:= 3.0; A[3,4]:= 1.0; B[1]:= 1.0; B[2]:= 3.2; B[3]:= 2.0; B[4]:=-2.1; for i:=1 to n do D[i]:=0; for i:=1 to n do for k:=1 to m do D[i]:=D[i]+A[i,k]*B[k]; Writeln('Result:'); for i:=1 to n do Writeln('D[',i,'] = ',D[i]:7:3); Readln End. |
04.04.2019, 15:52 | #5 (permalink) |
Специалист
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
|
|
Ads | |
Member
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
|
11.04.2019, 19:30 | #7 (permalink) |
Специалист
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
|
Не буду. Программа настолько проста, что Вам было бы полезно разобраться в ней самостоятельно. Конечно, если возникнут КОНКРЕТНЫЕ вопросы, с удовольствием отвечу.
Но так, вкратце: 1. Объявляется (константой) длина массива (20). 2. Методом случайных чисел заполняется массив. После этого двум элементам принудительно присваиваются нулевые значения, чтобы нулевые элементы заведомо присутствовали. 3. Ищется произведение элементов с четными номерами. 4. Ищутся номера первого и последнего нулевых элементов. Считается сумма элементов с номерами между найденными. 5. Организуется новый массив В, в который сначала последовательно помещаются все неотрицательные элементы массива А, а потом с конца — все отрицательные элементы. Результаты всех действий выводятся на экран. |
14.04.2019, 05:08 | #8 (permalink) |
Member
Регистрация: 27.02.2019
Сообщений: 17
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
|
Сижу, пытаюсь разбирать программу... Объясните, как работает произведение элементов массива, а именно строчку с for и сумма элементов массива особенно циклы repeat и также строчку с for
|
14.04.2019, 09:32 | #9 (permalink) | |
Специалист
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
|
Давайте разберём на примере. Пусть нам нужно найти произведение элементов массива, стоящих на ЧЕТНЫХ позициях. Зададим массив:
7 2 9 1 3 5 6, т.е. N=7. Нам нужно найти произведение 2*1*5, т.е. произведение A[2]*A[4]*A[6]. 1. Искомому произведению P изначально присваиваем значение 1. 2. Находим (N div 2), т.е результат ЦЕЛОЧИСЛЕННОГО деления N на 2, в данном случае это 3. 3. Проходим в цикле по i от 1 до 3 домножение произведения P на элементы A[2i], т.е. при изменении i от 1 до 3 номера элементов будут приобретать значения 2, 4, 6. Что нам и требуется. Всё! Цитата:
Для этого: 1. Присваиваем Ifirst значение 0. Далее в цикле repeat..until прибавляем к Ifirst по единичке до тех пор, пока не выполнится условие A[Ifirst]=0. Всё, нашли номер первого нулевого элемента. 2. Присваиваем Ilast значение N+1. Далее в цикле repeat..until убавляем от Ilast по единичке до тех пор, пока не выполнится условие A[Ilast]=0. Так находим номер последнего нулевого элемента. 3. Присваиваем искомой сумме S начальное значение 0, а затем в цикле for..to прибавляем к S значения элементов с номерами между Ifirst и Ilast. Всё! |
|
14.04.2019, 21:52 | #10 (permalink) | |
Member
Регистрация: 27.02.2019
Сообщений: 17
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
|
С суммой массива разобрался, а вот с произведением не очень. Зачем писать (N div 2), если можно сразу написать 10?
И можно подробнее об этом? Цитата:
|
|
Ads | |
Member
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
|
|
|