Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Задачи _ одномерный массив

Автор: Renat 13.04.2016 2:09

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

Автор: Федосеев Павел 13.04.2016 2:54

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

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

Автор: Renat 13.04.2016 3:14

Цитата(Федосеев Павел @ 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. //Конец программ

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


Вы верно подметили!

Автор: Федосеев Павел 13.04.2016 11:05

Вечером приеду и посмотрю.

Автор: Федосеев Павел 14.04.2016 2:01

А для 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 14.04.2016 5:03

а мне кажется что , вот например :
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

Автор: Федосеев Павел 14.04.2016 11:44

Напомню

Цитата(Renat @ 13.04.2016 0:09) *

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

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

Автор: Renat 15.04.2016 0:05

Цитата(Федосеев Павел @ 14.04.2016 12:44) *

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

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

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



Мне подсказали тут ,что несколько заданий . Например : массив состоит из 25 чисел ,5й и 20й одинаковые ,и находишь их квадрат и ,вроде, выходит одно число

Автор: Федосеев Павел 15.04.2016 0:38

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

Автор: Renat 15.04.2016 2:37

Цитата(Федосеев Павел @ 15.04.2016 1:38) *

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


даже не знаю

Автор: Федосеев Павел 15.04.2016 4:38

Пусть будет вывод только первого встреченного повторяющегося числа

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 20.04.2016 2:01

Цитата(Федосеев Павел @ 15.04.2016 1:38) *

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


даже не знаю