Консультация № 136622
13.05.2008, 12:59
0.00 руб.
0 2 2
пожалуйста помогите решить задачу!
1)Одномерные массивы
Дан массив размера N. Утроить в нем вхождения всех элементов с нечетными номерами (1,3,...). Условный оператор не использовать.
(в ней надо утроить, а не умножить на 3)
Заранее спасибо.

Обсуждение

Неизвестный
13.05.2008, 13:45
общий
это ответ
Здравствуйте, Сухарев Дмитрий Владимирович!

Очень похожий вопрос уже задавался: <a href=http://rusfaq.ru/info/question/135337>вопрос № 135337</a>. Свою программу для того вопроса слегка подкорректировал под Ваш вариант задачи (смотрите приложение).

Приложение:
Program Pr135337_1; Uses CRT; Const N = 10; Var i, j, r: Integer; Arr : Array[1 .. N] of integer;Begin ClrScr; Randomize; WriteLn(‘Исходный случайно сформированный массив:‘); for i := 1 to N do begin Arr[i] := Random(100); Write(Arr[i]:3); end; WriteLn; WriteLn; WriteLn(‘Обработанный массив:‘); for i := 1 to N do begin { r отреагирует на чётность числа. При нечётных i оно станет равно 2, при чётных - нулю. } r := (i mod 2) * 2; { В зависимости от чётности i вложенный цикл выполнится либо один раз, либо 3. } for j := 0 to r do Write(Arr[i]:3); end; ReadLn;End.
давно
Старший Модератор
31795
6196
13.05.2008, 14:13
общий
это ответ
Здравствуйте, Сухарев Дмитрий Владимирович!

Вариант с изменением самого массива.
Удачи!

Приложение:
const n=10;var a:array[1..4*n]of integer; b,c,d:integer;begin {создаем массив} randomize; for b:=1 to n do begin a[b]:=random(33); write(a[b]:4); end; writeln; {обрабатываем массив} b:=n; d:=n; while b>0 do begin while odd(b)do begin {индекс нечетный, сдвигаем все элементы массива} for c:=d downto b do a[c+2]:=a[c]; {увеличиваем размер масиива} inc(d,2); {копируем элемент массива} a[b+1]:=a[b]; {к следующему В} dec(b); end; {к следующему В} dec(b); end; {выводим результат} for b:=1 to d do write(a[b]:3);end.
Об авторе:
Мне безразлично, что Вы думаете о обо мне, но я рад за Вас - Вы начали думать.

Форма ответа