Помощь - Поиск - Пользователи - Календарь
Полная версия: одномерный массив
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
Renat
Разработать в среде Turbo Pascal программу осуществляющую сдвиг элементов массива на одну позицию влево.
Дан одномерный массив ненулевых целых чисел размера N.
1. Найти номера одинаковых элементов, вывести эти номера в порядке возрастания, а так же квадрат суммы этих элементов;
2. Вставить элемент с нулевым значением перед минимальным и после максимального элемента массива;
3. Осуществить сдвиг элементов массива влево на одну позицию . Последний элемент полученного массива положительно равен 0.
Для отладки программы исходный массив сформировать с помощью генератора случайных чисел. / Заранее спасибо!
Федосеев Павел
А покажите, что уже получилось за 4 вечера.

Помочь-то мне не сложно, но неприятно "стирать чьи то носки".
Renat
Цитата(Федосеев Павел @ 13.04.2016 3:54) *

А покажите, что уже получилось за 4 вечера.

Помочь-то мне не сложно, но неприятно "стирать чьи то носки".


const N = 10; //Описание констант
var a: array [1..N] of integer; //Описание переменных
begin //Начало программы
for var i:=1 to N do //Описание массива и вывод его
a[i] := Random(100);
writeln('Элементы массива: ');
for var i:=1 to N do
write(a[i],' ');
writeln;

for var i:=1 to N-1 do //Сдвиг эл-ов массива
a[i] := a[i+1];
a[N] := 0;

writeln('После сдвига влево: ');//Вывод массива
for var i:=1 to N do
write(a[i],' ');
writeln;
end. //Конец программ

//Сдвиг элементов в одномерном массиве влево


Вы верно подметили!
Федосеев Павел
Вечером приеду и посмотрю.
Федосеев Павел
А для 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. //Конец программ
//Сдвиг элементов в одномерном массиве влево
Renat
а мне кажется что , вот например :
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
Федосеев Павел
Напомню
Цитата(Renat @ 13.04.2016 0:09) *

Дан одномерный массив ненулевых целых чисел размера N.
1. Найти номера одинаковых элементов, вывести эти номера в порядке возрастания, а так же квадрат суммы этих элементов;

И ни слова о Фобоначчи.
Renat
Цитата(Федосеев Павел @ 14.04.2016 12:44) *

Напомню
Цитата(Renat @ 13.04.2016 0:09) *

Дан одномерный массив ненулевых целых чисел размера N.
1. Найти номера одинаковых элементов, вывести эти номера в порядке возрастания, а так же квадрат суммы этих элементов;

И ни слова о Фобоначчи.



Мне подсказали тут ,что несколько заданий . Например : массив состоит из 25 чисел ,5й и 20й одинаковые ,и находишь их квадрат и ,вроде, выходит одно число
Федосеев Павел
А если там две пары одинаковых?
1 2 3 2 5 7 3 9
Renat
Цитата(Федосеев Павел @ 15.04.2016 1:38) *

А если там две пары одинаковых?
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.


Пример работы с двумя повторяющимися числами (65 и 19) выводятся данные только по 65
Код
Элементы массива:
51 78 65 19 85 15 65 19 89 66
3 7
16900
Renat
Цитата(Федосеев Павел @ 15.04.2016 1:38) *

А если там две пары одинаковых?
1 2 3 2 5 7 3 9


даже не знаю
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.