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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 27.10.2010, 15:14   #1
Lada05
 
Регистрация: 27.10.2010
Сообщений: 3
По умолчанию Все отрицательные элементы массива А заменить на сумму, а положительные на полусумму предшествующих

очень прошу Вас помочь с задачей. в иформатике ноль( а в институте надо эту задачу решить и объяснить каждое действие в ней( или незачет. заранее спасибо!

Все отрицательные элементы массива А заменить на сумму, а положительные на полусумму предшествующих и последующих элементов этого массива
Lada05 вне форума Ответить с цитированием
Старый 27.10.2010, 15:44   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

Предлагаю такое:
Код:
MODULE Массив;
 IMPORT StdLog,ObxRandom,Math;
(*Это массив и переменная суммы*)
 VAR a:ARRAY(10) OF INTEGER;Сумма:INTEGER; 

(*Процедура ввода массива*)
 PROCEDURE ВводимМассив;
(*Счетчик для цикла*)
 VAR i:INTEGER;
 BEGIN
(*Очищаем экран лога*)
 StdLog.Clear; 
(*От 0 до длины массива*)
  FOR i:=0 TO LEN(a)-1 DO
(*Заполним массив случайным числом*)
   a[i]:=SHORT(ENTIER(50-ObxRandom.Uniform()*100));
(*Сразу посчитаем его сумму*)
   Сумма:=Сумма+a[i];
(*Выведем на экран лога очередной элемент*)
   StdLog.Int(a[i]); 
(*Перевод каретки*)
 	StdLog.Ln;
  END;			
 END ВводимМассив;

(*В цикле выведем массив в экран лога*)
 PROCEDURE ВыводимМассив;
 VAR i:INTEGER;
 BEGIN
  FOR i:=0 TO LEN(a)-1 DO
   StdLog.Int(a[i]); 
 	StdLog.Ln;
  END;			
 END ВыводимМассив;

(*В цикле позаменяем отрицательные*)
 PROCEDURE ЗаменаОтрицательных;
 VAR i:INTEGER;
 BEGIN
  FOR i:=0 TO LEN(a)-1 DO
   IF a[i]<0 THEN a[i]:=Сумма;END;
  END;
 END ЗаменаОтрицательных;

(*Поищем сумму начиная от некого элемента и вернем ее*)
 PROCEDURE ПолусуммаСледующих(i:INTEGER):INTEGER;
 VAR s:INTEGER;
 BEGIN
  s:=1;
  WHILE i<LEN(a) DO
   s:=s+a[i];
   INC(i);
  END;
  RETURN s;
 END ПолусуммаСледующих; 

(*Заменим положительные*)
 PROCEDURE ЗаменаПоложительных;
 VAR i:INTEGER;Полусумма:INTEGER;
 BEGIN
  FOR i:=0 TO LEN(a)-1 DO
   Полусумма:=Полусумма+a[i];
   IF a[i]>0 THEN 
(*На полусумму элементов до и после*)
    a[i]:=Полусумма DIV ПолусуммаСледующих(i+1);
   END;
  END;
 END ЗаменаПоложительных;


 PROCEDURE do*;
 BEGIN  
  ВводимМассив;
  StdLog.Ln;
  ЗаменаПоложительных;
  ЗаменаОтрицательных;
  ВыводимМассив;
 END do;

END Массив.

END Слова.
Массив.do;
Фактически с потолка, но вроде работает.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Pascal - Найти сумму всех ее отрицательных элементов и заменить ею все диагональные элементы этой матрицы NewBi Паскаль, Turbo Pascal, PascalABC.NET 2 24.04.2010 09:15
В матрице отрицательные элементы заменить на нули denis12345 Паскаль, Turbo Pascal, PascalABC.NET 2 13.06.2009 17:25
В двухмерном массиве все отрицательные элеметны заменить на их модули. А новый массив вывести на экран JulLy Паскаль, Turbo Pascal, PascalABC.NET 11 28.04.2009 08:13
Составить программу которая будет сортировать все положительные элементы Wast Паскаль, Turbo Pascal, PascalABC.NET 1 22.12.2008 15:56
в начале все отрицательные, затем все положительные элементы в матрице motaro Паскаль, Turbo Pascal, PascalABC.NET 2 07.03.2008 19:16