Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 10.11.2013, 14:42   #1
Hug
Новичок
Джуниор
 
Регистрация: 10.11.2013
Сообщений: 2
Восклицание Вычислить произведение чисел, неравных заданному числу Z

Задан массив из N чисел. Вычислить произведение чисел, неравных заданному числу Z и подсчитать количество чисел, стоящих на нечетных местах и принадлежащих промежутку (A, B} .

Вот моя программа но она не верна..
Код:
program zadacha;
uses crt;
type
mas=array[1..10] of integer;
var
a: mas;
b: mas;
i,j,k,z,p,n:integer;
begin
z:=1;
p:=1;
writeln ('n');
readln (n);
      for i:=1 to n do
      write ('a[',i,']');
      readln (a[i]);
        begin
        if (a[i]<0) and ((i mod 2)<>0) then
        if (a[i]<>z) then
        p:=p*(a[i]);
        end;
           begin
           for i:=1 to n do
           write ('b[',i,']');
           readln (b[i]);
              begin
              if (b[i]<0) and ((i mod 2)<>0) then
              if (b[i]<>z) then
              p:=p*(b[i]);
              end;
           end;
writeln ('p=',p);
end.

Последний раз редактировалось Stilet; 10.11.2013 в 15:18.
Hug вне форума Ответить с цитированием
Старый 10.11.2013, 15:12   #2
ViktorR
Старожил
 
Регистрация: 23.10.2010
Сообщений: 2,309
По умолчанию

Как вариант:
Код:
program zadacha;
uses crt;
type
   mas=array[1..10] of integer;
var
   m: mas;
   b: mas;
   i,j,z,p,n, a, b:integer;
begin
 
   repeat
      writeln ('Vvedi N <= 10');
      readln (n);
   until n > 10;
   writeln ('Vvedi interval A, B: ');
   readln (A,B,);
   writeln ('Vvedi chislo: ');
   readln (Z);
   j := 0; {Kol-vo chisel v intervale}
   p:=1;  {Proizvedenie chisel, ne ravnih Z}
   for i:=1 to n do begin
      write ('m[',i,'] = ');
      readln (m[i]);
      if ((m[i] > A) AND (m[i] <= B) AND ((i mod 2)<>0)) then
         j := j + 1; {Chisel v intervale (A, B]}
      if (m[i] <> Z) then
          p:=p*(a[i]);
   end;
   writeln('Kol-vo chisel v intervale (', A, ', ', B,'] = ', j);
   writeln ('Proizvedenie chisel, ne ravnih Z = ',p);
end.
Только следует проверить, так как не компилировал ...
Посмотри, как задается интервал.
Если размер массива задан, а надо вводить меньшее число элементов, то следует контролировать пользователя, который выбирает это число.


Как-то так, ...
Как-то так, ...
ViktorR вне форума Ответить с цитированием
Старый 10.11.2013, 23:34   #3
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

произведение достаточно быстро растущая функция, поэтому, чтобы избежать переполнения разрядности целого числа, я бы для хранения произведения сделал переменную p вещественного типа (real или doble или extended)!
Serge_Bliznykov вне форума Ответить с цитированием
Старый 12.11.2013, 21:02   #4
Hug
Новичок
Джуниор
 
Регистрация: 10.11.2013
Сообщений: 2
Плохо

Цитата:
Сообщение от ViktorR Посмотреть сообщение
Как вариант:
Код:
program zadacha;
uses crt;
type
   mas=array[1..10] of integer;
var
   m: mas;
   b: mas;
   i,j,z,p,n, a, b:integer;
begin
 
   repeat
      writeln ('Vvedi N <= 10');
      readln (n);
   until n > 10;
   writeln ('Vvedi interval A, B: ');
   readln (A,B,);
   writeln ('Vvedi chislo: ');
   readln (Z);
   j := 0; {Kol-vo chisel v intervale}
   p:=1;  {Proizvedenie chisel, ne ravnih Z}
   for i:=1 to n do begin
      write ('m[',i,'] = ');
      readln (m[i]);
      if ((m[i] > A) AND (m[i] <= B) AND ((i mod 2)<>0)) then
         j := j + 1; {Chisel v intervale (A, B]}
      if (m[i] <> Z) then
          p:=p*(a[i]);
   end;
   writeln('Kol-vo chisel v intervale (', A, ', ', B,'] = ', j);
   writeln ('Proizvedenie chisel, ne ravnih Z = ',p);
end.
Только следует проверить, так как не компилировал ...
Посмотри, как задается интервал.
Если размер массива задан, а надо вводить меньшее число элементов, то следует контролировать пользователя, который выбирает это число.


Как-то так, ...
Спасибо что старался помочь но эта задача даже не рабочая.
Hug вне форума Ответить с цитированием
Старый 12.11.2013, 23:27   #5
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

ну так исправили бы!!
логика то верная была в программе!

Код:
program zadacha;
uses crt;
type
   mas=array[1..10] of integer;
var
   m: mas;
   i, j, z, n, a, b:integer;
   p : extended;
begin
 
   repeat
      writeln ('Vvedi N <= 10');
      readln (n);
   until (n >0) and (n<=10);
   writeln ('Vvedi interval A, B: ');
   readln (A,B);
   writeln ('Vvedi chislo Z: ');
   readln (Z);
   j := 0; {Kol-vo chisel v intervale}
   p:=1;  {Proizvedenie chisel, ne ravnih Z}
   for i:=1 to n do begin
      write ('m[',i,'] = ');
      readln (m[i]);
      if odd(i) and (m[i] > A) and (m[i] <= B) then
         j := j + 1; {Chisel v intervale (A, B] стоящих на нечётных местах}
      if (m[i] <> Z) then
          p:=p*(m[i]);
   end;
   writeln('Kol-vo chisel v intervale (', A, ', ', B,'] = ', j);
   writeln ('Proizvedenie chisel, ne ravnih Z = ',p:10:0);
   Readln
end.
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как вычислить произведение нечетных чисел StoneGod Паскаль, Turbo Pascal, PascalABC.NET 2 13.09.2011 22:34
[VB] Вычислить произведение ряда N чисел Raikerian Помощь студентам 5 12.06.2011 07:48
Определить ближайший элемент массива к заданному числу wowan Паскаль, Turbo Pascal, PascalABC.NET 1 28.05.2011 23:21
Вычислить произведение P кубов трех чисел a, b и c, если их сумма меньше нуля, произведение P модулей NoUserName Помощь студентам 3 01.03.2009 18:10
вычислить произведение четных чисел в каждой строке массива. Oliver Sykes Паскаль, Turbo Pascal, PascalABC.NET 5 09.10.2008 03:43