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

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

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

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

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

Закрытая тема
Ваша тема закрыта, почему это могло произойти? Возможно,
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу.
Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста".
Название темы слишком короткое или не отражает сути вашего вопроса.
Тема исчерпала себя, помните, один вопрос - одна тема
Прочитайте правила и заново правильно создайте тему.
 
Опции темы Поиск в этой теме
Старый 19.02.2011, 18:02   #1
deadbot
Новичок
Джуниор
 
Регистрация: 19.02.2011
Сообщений: 1
Восклицание Турбо Паскаль

В одномерном массиве, состоящим из N целочисленных элементов:
1. Найти сумму положительных элементов;
2.Найти произведение отрицательных элементов, расположенных на четных местах;
3.Найти количество нечетных элементов;
4.Вставить число A в массив после элемента, в котором есть цифра 5. Если таких элементов нет, выдать сообщение <<Вставка не произведена>>, иначе вставить после первого найденного элемента. Дополнительный массив не использовать;
5.Отсортировать преобразованный массив по убыванию.
Для отладки программы исходный массив сформировать с помощью генератора случайных чисел.
Помогите пожалуйста, очень надо, сколько сможете напишите плиз.
deadbot вне форума
Старый 19.02.2011, 22:37   #2
Наки
Пользователь
 
Аватар для Наки
 
Регистрация: 03.11.2010
Сообщений: 24
По умолчанию

Код:
program Primer;
const
  nmax=1000;
var
  Arr:array [1..nmax] of integer;
  n,s,p,a,i,c,c1,a1,j,temp:integer;
  m:boolean;
begin
  {Ввод массива}
  write('Введите количество элементов массива: ');
  readln(n);
  for i:=1 to n do
    Arr[i]:=random(100);
  {Вывод массива}
  for i:=1 to n do
    writeln('Arr[',i,']=',Arr[i]);

  {Сумма положительных элементов и произведение отрицательных,}
  { расположенных на четных местах}
  {а также количество нечетных элементов}
  s:=0;
  p:=1;
  c:=0;
  c1:=0; {c1 для проверки наличия отрицательных элементов с нечетными индексами в массиве}
  for i:=1 to n do
    begin
      if (Abs(Arr[i] mod 2)=1) and  (Arr[i]<>0) {если элемент нечетный}
        then
          c:=c+1;  {увеличиваем количество нечетных элементов на единицу}
      if Arr[i]>0 {если элемент положительный}
        then
          s:=s+Arr[i] {то добавляем его в сумму}
        else   {иначе (то есть если элемент отрицательный)}
          if (i mod 2)=0 {если индекс четный}
            then
              begin
                p:=p*Arr[i];  {то добавляем элемент в произведение}
                c1:=c1+1;
              end;
    end;
  writeln('Сумма положительных элементов: ',s);
  if c1<>0
    then
      writeln('Произведение отрицательных элементов с четными индексами: ',p)
    else
      writeln('Отрицательных элементов с нечетными индексами нет');
  writeln('Колиество нечетных элементов: ',c);
  
  {вставка числа а}
  m:=false;     {для проверки, был вставлен элемент или нет}
  write('Введите целое число: ');
  readln(a);
  for i:=1 to n do {просматриваем элементы массива}
    begin
      a1:=Arr[i];   {запоминаем текущий элемент}
      repeat
        if (a1 mod 10)=5 {если последний разряд числа равен 5}
          then
            begin
              for j:=n+1 downto i+2 do  {то сдвигаем элементы массива, стоящие после i-го, вправо на 1}
                Arr[j]:=Arr[j-1];
              Arr[i+1]:=a; {вставляем число a}
              m:=true; {обозначаем, что вставка произведена}
              break;  {выходим из цикла}
            end;
        a1:=a1 div 10; {отбрасываем последний разряд числа}
      until a1=0;   {повторяем,пока не закончатся разряды числа}
    end;
  if m   {если число вставлено}
    then
      begin
        n:=n+1;{то увеличиваем число элементов массива на 1}
        writeln('Пребразованный массив:'); {и выводим массив}
        for i:=1 to n do
          writeln('Arr[',i,']=',Arr[i]);
      end
    else
      writeln('Вставка не произведена');

  {сортировка массива}
  for i:=1 to n-1 do
    for j:=i+1 to n do
      if Arr[i]<Arr[j]
        then
          begin
            temp:=Arr[i];
            Arr[i]:=Arr[j];
            Arr[j]:=temp;
          end;
  {вывод массива}
  writeln('Отсортированный массив:');
  for i:=1 to n do
    writeln('Arr[',i,']=',Arr[i]);
end.

________
Код нужно оформлять по правилам:
тегом [CODE]..[/СODE] (это кнопочка с решёточкой #)
Не забывайте об этом!
Модератор.
Я не волшебница, я только учусь

Последний раз редактировалось Serge_Bliznykov; 20.02.2011 в 15:05.
Наки вне форума
Закрытая тема


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
турбо паскаль Кукла_колдуна Паскаль, Turbo Pascal, PascalABC.NET 1 07.02.2011 21:22
турбо паскаль miron.n Помощь студентам 2 01.05.2010 06:12
Турбо Паскаль Jondeer Помощь студентам 5 27.10.2007 17:19