Технический форум
Вернуться   Технический форум > Программирование > Форум программистов > Delphi, Kylix and Pascal


Ответ
 
Опции темы Опции просмотра
Старый 03.04.2019, 09:48   #1 (permalink)
Alessandro4
Member
 
Регистрация: 27.02.2019
Сообщений: 17
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
Question Помогите написать две несложные программы

Знаю, темы несложные, но я, видимо, проспал. Решите и объясните, пожалуйста
Миниатюры
ea3ba9f5-2a8a-4e53-901a-78783b59f6f0.jpeg   0382146a-2a1c-42dc-ade2-90433bdd97c9.jpeg  
Alessandro4 вне форума   Ответить с цитированием

Старый 03.04.2019, 09:48
Helpmaster
Member
 
Аватар для Helpmaster
 
Регистрация: 08.03.2016
Сообщений: 0

Чтобы не заходить в тупик вы можете пролистать аналогичные темы

Помогите написать две программы
Помогите написать программы

Старый 03.04.2019, 10:32   #2 (permalink)
Vladimir_S
Специалист
 
Регистрация: 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.
Vladimir_S вне форума   Ответить с цитированием
Старый 03.04.2019, 10:57   #3 (permalink)
Vladimir_S
Специалист
 
Регистрация: 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.
Vladimir_S вне форума   Ответить с цитированием
Старый 04.04.2019, 14:10   #4 (permalink)
Alessandro4
Member
 
Регистрация: 27.02.2019
Сообщений: 17
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

А где в первом задании произведение элементов массива с четными номерами
Alessandro4 вне форума   Ответить с цитированием
Старый 04.04.2019, 15:52   #5 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Цитата:
Сообщение от Alessandro4 Посмотреть сообщение
А где в первом задании произведение элементов массива с четными номерами
"Имеющий глаза — да видит". Начиная со строки
P:=1;
и дальше ещё 4 строки.
Vladimir_S вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
Старый 11.04.2019, 13:55   #6 (permalink)
Alessandro4
Member
 
Регистрация: 27.02.2019
Сообщений: 17
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

Объясните пожалуйста остальные строки вашей первой программы
Alessandro4 вне форума   Ответить с цитированием
Старый 11.04.2019, 19:30   #7 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Цитата:
Сообщение от Alessandro4 Посмотреть сообщение
Объясните пожалуйста остальные строки вашей первой программы
Не буду. Программа настолько проста, что Вам было бы полезно разобраться в ней самостоятельно. Конечно, если возникнут КОНКРЕТНЫЕ вопросы, с удовольствием отвечу.
Но так, вкратце:
1. Объявляется (константой) длина массива (20).
2. Методом случайных чисел заполняется массив. После этого двум элементам принудительно присваиваются нулевые значения, чтобы нулевые элементы заведомо присутствовали.
3. Ищется произведение элементов с четными номерами.
4. Ищутся номера первого и последнего нулевых элементов. Считается сумма элементов с номерами между найденными.
5. Организуется новый массив В, в который сначала последовательно помещаются все неотрицательные элементы массива А, а потом с конца — все отрицательные элементы.

Результаты всех действий выводятся на экран.
Vladimir_S вне форума   Ответить с цитированием
Старый 14.04.2019, 05:08   #8 (permalink)
Alessandro4
Member
 
Регистрация: 27.02.2019
Сообщений: 17
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

Сижу, пытаюсь разбирать программу... Объясните, как работает произведение элементов массива, а именно строчку с for и сумма элементов массива особенно циклы repeat и также строчку с for
Alessandro4 вне форума   Ответить с цитированием
Старый 14.04.2019, 09:32   #9 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Цитата:
Сообщение от Alessandro4 Посмотреть сообщение
Объясните, как работает произведение элементов массива
Давайте разберём на примере. Пусть нам нужно найти произведение элементов массива, стоящих на ЧЕТНЫХ позициях. Зададим массив:
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. Что нам и требуется. Всё!
Цитата:
Сообщение от Alessandro4 Посмотреть сообщение
сумма элементов массива особенно циклы repeat и также строчку с for
Тут так. Задача: найти первый и последний нулевые элементы, и сосчитать сумму элементов между ними. Обозначим номера этих нулевых элементов, как Ifirst и Ilast соответственно. Найдём их.
Для этого:
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. Всё!
Vladimir_S вне форума   Ответить с цитированием
Старый 14.04.2019, 21:52   #10 (permalink)
Alessandro4
Member
 
Регистрация: 27.02.2019
Сообщений: 17
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

С суммой массива разобрался, а вот с произведением не очень. Зачем писать (N div 2), если можно сразу написать 10?

И можно подробнее об этом?
Цитата:
Проходим в цикле по i от 1 до 3 домножение произведения P на элементы A[2i], т.е. при изменении i от 1 до 3 номера элементов будут приобретать значения 2, 4, 6.
Alessandro4 вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
Ответ

Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Выкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.




Часовой пояс GMT +4, время: 12:51.

Powered by vBulletin® Version 6.2.5.
Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.