Разработать в среде Turbo Pascal программу осуществляющую сдвиг элементов массива на одну позицию влево.
Дан одномерный массив ненулевых целых чисел размера N.
1. Найти номера одинаковых элементов, вывести эти номера в порядке возрастания, а так же квадрат суммы этих элементов;
2. Вставить элемент с нулевым значением перед минимальным и после максимального элемента массива;
3. Осуществить сдвиг элементов массива влево на одну позицию . Последний элемент полученного массива положительно равен 0.
Для отладки программы исходный массив сформировать с помощью генератора случайных чисел. / Заранее спасибо!
А покажите, что уже получилось за 4 вечера.
Помочь-то мне не сложно, но неприятно "стирать чьи то носки".
Вечером приеду и посмотрю.
А для 1-го задания не понял смысл.
Например, что должно быть для
1 2 3 4 5 6 7 8 9 1
или для
1 2 3 3 4 2 2 2 1 1
program test;
const
N = 10; //Описание констант
var
a: array [1..N] of integer; //Описание переменных
i: integer;
Imin, Imax: integer;
begin //Начало программы
randomize;
{Вставить элемент с нулевым значением перед минимальным
и после максимального элемента массива}
for i := 1 to N do //Описание массива и вывод его
a[i] := Random(100);
writeln('Элементы массива: ');
for i := 1 to N do
Write(a[i], ' ');
writeln;
Imin := 1;
for i := 2 to N do
if a[Imin] > a[i] then
Imin := i;
for i := N downto Imin + 1 do
a[i] := a[i - 1];
a[Imin] := 0;
writeln('После вставки 0 перед минимальным: ');//Вывод массива
for i := 1 to N do
Write(a[i], ' ');
writeln;
Imax := 1;
for i := 2 to N do
if a[Imax] < a[i] then
Imax := i;
for i := N downto Imax + 2 do
a[i] := a[i - 1];
if Imax + 1 <= N then
a[Imax + 1] := 0;
writeln('После вставки 0 после максимального: ');//Вывод массива
for i := 1 to N do
Write(a[i], ' ');
writeln;
{Осуществить сдвиг элементов массива влево на одну
позицию . Последний элемент полученного массива
положительно равен 0.}
for i := 1 to N - 1 do //Сдвиг эл-ов массива
a[i] := a[i + 1];
a[N] := 0;
writeln('После сдвига влево: ');//Вывод массива
for i := 1 to N do
Write(a[i], ' ');
writeln;
end. //Конец программ
//Сдвиг элементов в одномерном массиве влево
а мне кажется что , вот например :
1, 2, 3, 5, 8, 13 и т.д
1+2=3
2+3=5 и так до 13 ,как указано в примере
Последовательность Фибоначе
Еще однин пример
begin
mas[0] :=5;
mas [1]:= 10
for I :=2 to 7 do
mas[i]:= mas[i-2] + mas[i-1];
writeln (mas) ;
end.
на экран выведет ;
5 10 15 25 40 65 105 170
Напомню
А если там две пары одинаковых?
1 2 3 2 5 7 3 9
Пусть будет вывод только первого встреченного повторяющегося числа
program test;
const
N = 10; //Описание констант
var
a: array [1..N] of integer; //Описание переменных
i, j: integer;
Naiden: boolean;
Sum: integer;
begin //Начало программы
randomize;
for i := 1 to N do //Описание массива и вывод его
a[i] := Random(100);
writeln('Элементы массива: ');
for i := 1 to N do
Write(a[i], ' ');
writeln;
{найти}
Sum := 0;
Naiden := False;
for i := 1 to N do
begin
for j := i + 1 to N do
if a[i] = a[j] then
begin
if not Naiden then
begin
Sum := a[i];
Write(i);
end;
Naiden := True;
Write(' ', j);
Sum := Sum + a[j];
end;
if Naiden then
break;
end;
if Naiden then
begin
writeln;
writeln(Sum * Sum);
end
else
writeln('Нет одинаковых чисел');
end.