Помощь - Поиск - Пользователи - Календарь
Полная версия: Задачка
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
студентка
Срочно надо решить задания, а я ничего в массивах не знаю. blink.gif Помогите пожалуйста!!!!
1.)Даны действительные а1,....,a18. Получить а1,a10,a2,a11,...,a9,a18.
2.)Даны целые a1,...,an. Получить новую последовательность, выбросив из
исходной все члены с наибольшим значением (если все члены последовательности равны, то ничего выводить не нужно).
3.)Если в данной последовательности действительных чисел a1,....,an есть
хотя бы один член, меньше чем -2, то все отрецательные члены заменить
их квадратами, оставив остальные без изменений; в противном случае
домножить все члены на 0.1.
volvo
студентка
Вот первая задача... Попробуйте решить остальные самостоятельно...

Var
 a: Array[1 .. 18] Of Real;
 i, j, next: Integer; T: Real;

Begin
 For i := 1 To 18 Do
   Begin
     Write('a[', i, '] = ');
     Readln(a[i]);
   End;

 i := 1; next := 10;
 While i <= 18 do
   Begin

     T := a[next];
     For j := Pred(next) DownTo Succ(i) Do
       a[Succ(j)] := a[j];
     a[Succ(i)] := T;

     Inc(i, 2); Inc(next)
   End;

 For i := 1 To 18 Do
   WriteLn('a[', i, '] = ', a[i])
End.

студентка
volvo
СПАСИБО!!!
студентка
rolleyes.gif Вторую задачку я решила, а вот с третьей проблемкасуть задачи я поняла, а вот только никак не могу понять как она решается!!! Помогите!!!! Хотя бы какую нибудь подсказочку дайте!!!!
volvo
студентка
Значит так: самый простой вариант - два прохода по массиву.
Первый проход - проверяем, есть ли элемент меньше, чем -2. Если есть, устанавливаем какую-то переменную типа Boolean в True.

Перед 2-ым проходом проверяем состояние этой переменной, и если она = True, то каждый A[i] для которого выполняется A[i] < 0, заменяем на SQR(A[i]). Если переменная равна False, то просто проходим по массиву и умножаем каждый его элемент на 0.1
студентка
СПАСИБО-О-О!!!!
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.