Форум программистов, компьютерный форум, киберфорум
Pascal ABC
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/25: Рейтинг темы: голосов - 25, средняя оценка - 5.00
11 / 4 / 1
Регистрация: 22.09.2012
Сообщений: 102

Сдвиг элементов массива на позицию влево, подсчет положительных элементов

27.10.2012, 20:01. Показов 4563. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Написать программу в которой выполняется:
1) ввод одномерного массива А из 14 чисел (положительных и отрицательных);
2) вывод массива на экран;
3) сдвиг всех элементов на одну позицию влево;
4) вывод массива на экран;
5) подсчет количества положительных элементов.
Делать все надо по процедурам и функциям. Сам только начал проходить эту тему, поэтому прошу не винить за ошибки и не смеяться над ними, а также укажите где именно я ошибся.
Моя программа просто не запускается, причина как я понял в том, что неправильно сделал подсчет всех положительных элементов.
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
const n=14;
var
a:array [1..n] of integer;
procedure random;
var
i:integer;
begin
randomize;
for i:=1 to n do
a[i]:=-100+random(100);
end;
procedure vivod;
var
i:integer;
begin
for i:=1 to n do
write(a[i]:5);
writeln
end;
procedure sdvig_vlevo;
var
i,x:integer;
begin
i:=1;
while i<14 do
begin
x:=a[i];
a[i]:=a[i-1];
a[i-1]:=x;
end
end;
function sum_elem:integer;
var
i: integer;
begin
for i:=1 to n do
if a[i]>=0 then
sum_elem:=sum_elem+1;
end;
begin
random;
vivod;
sdvig_vlevo;
vivod;
write('количество положительных элементов',sum_elem);
vivod;
readln
end.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
27.10.2012, 20:01
Ответы с готовыми решениями:

Рекурсия: циклический сдвиг элементов массива на одну позицию влево
описать рекурсивную процедуру циклического сдвига элементов массива на одну позицию влево

В заданном массиве двоичных чисел выполнить циклический сдвиг всех элементов влево на одну позицию
В заданном массиве двоичных чисел выполнить циклический сдвиг всех элементов влево на одну позицию. Определить сумму чисел до и после...

Осуществить циклический сдвиг элементов массива влево на одну позицию
3.Дан массив размера N. Осуществить циклический сдвиг элементов массива влево на одну позицию.

5
 Аватар для Reveng
424 / 424 / 338
Регистрация: 25.06.2012
Сообщений: 668
27.10.2012, 20:17
Цитата Сообщение от Zhenekk Посмотреть сообщение
i:=1;
while i<14 do
begin
x:=a[i];
a[i]:=a[i-1];
a[i-1]:=x;
end
Ошибка №1 : У тебя индексы массива начинаются с единицы, а при твоей инициализации i, выходит обращение к 0-му элементу, которого не существует.
Ошибка №2 : В цикле отсутствует увеличение/изменение i, что влечет за собой зацикливание.

Цитата Сообщение от Zhenekk Посмотреть сообщение
a[i]:=-100+random(100);
При такой генерации у тебя никогда не будет положительных чисел, смысл их тогда искать?
1
11 / 4 / 1
Регистрация: 22.09.2012
Сообщений: 102
27.10.2012, 20:32  [ТС]
Что-то не так у меня выходит, напишите уж правильный код, а другое задание сам попытаюсь сделать.
0
 Аватар для Reveng
424 / 424 / 338
Регистрация: 25.06.2012
Сообщений: 668
27.10.2012, 20:35
Цитата Сообщение от Zhenekk Посмотреть сообщение
function sum_elem:integer;
var
i: integer;
begin
for i:=1 to n do
if a[i]>=0 then
sum_elem:=sum_elem+1;
end;
Тут тоже не верно. У вас получается бесконечная рекурсия, если я не ошибаюсь. Нужно было создать доп. переменную для подсчета элементов и уже в конце: sum_elem := ваша_переменная.

Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
const n=14;
var
  a:array [1..n] of integer;
  
procedure randoms;
var
i:integer;
begin
 randomize;
 for i:=1 to n do a[i]:=random(100) - 50;
end;
 
procedure vivod;
var
i:integer;
begin
for i:=1 to n do write(a[i]:5);
writeln
end;
 
procedure sdvig_vlevo;
var
i,x:integer;
begin
x := a[1];
for i := 1 to n - 1 do
 a[i] := a[i + 1];
a[n] := x;
end;
 
function sum_elem:integer;
var
i, s: integer;
begin
s := 0;
for i:=1 to n do
 if a[i]>=0 then s:=s+1;
sum_elem := s; 
end;
 
begin
randoms;
vivod;
sdvig_vlevo;
vivod;
write('количество положительных элементов',sum_elem);
vivod;
readln
end.
1
11 / 4 / 1
Регистрация: 22.09.2012
Сообщений: 102
27.10.2012, 20:52  [ТС]
Reveng, Мне не понятный эти строки.
Pascal
1
2
3
4
x := a[1];
for i := 1 to n - 1 do
 a[i] := a[i + 1];
a[n] := x;
Как-то тут все запутано, если не сложно скажите, что вы написали? Еще начиная с цикла не понятно почему стоит знак "минус".
И что за a[N]?
0
 Аватар для Reveng
424 / 424 / 338
Регистрация: 25.06.2012
Сообщений: 668
27.10.2012, 20:56
Pascal
1
2
3
4
x := a[1]; //Копируем первый элемент массива в переменную х
for i := 1 to n - 1 do //Организовываем массив с n - 1 итерациями, т.е. с 13.
 a[i] := a[i + 1]; //Производим сдвиг массива влево, путем присваивания i-му элементу, значения i + 1 элемента
a[n] := x; //После сдвига влево, у нас остается пустым 14, т.е. n (n = 14) элемент массива, присваиваем ему значение 1 элемента, т.е. x
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
27.10.2012, 20:56
Помогаю со студенческими работами здесь

Осуществить сдвиг элементов массива влево на одну позицию
Пожалуйста, помогите мне. Дан массив размера N.Осуществить сдвиг элементов маасива влево на одну позицию (при этом в An,An-1- в...

Циклический сдвиг элементов массива влево на одну позицию
Дан массив размера N. Осуществить циклический сдвиг элементов массива влево на одну позицию (при этом AN перейдет в AN-1, AN-1 - в AN-2, .,...

Циклический сдвиг элементов массива влево на одну позицию
Дан массив размера N. Осуществить циклический сдвиг элементов массива влево на одну позицию (при этом A перейдет в A , A - в A , ...,...

Осуществить циклический сдвиг элементов массива влево на одну позицию
Помогите, пожалуйста, решить программы на си++, если не решу мне хана, заранее спасибо: Дан массив размера N. Осуществить циклический...

Произведите сдвиг элементов исходного массива на одну позицию влево
Дан массив А из n элементов. Произведите сдвиг элементов исходного массива на одну позицию влево (первый элемент станет на место...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
SDL3 для Web (WebAssembly): Работа со звуком через SDL3_mixer
8Observer8 08.02.2026
Содержание блога Пошагово создадим проект для загрузки звукового файла и воспроизведения звука с помощью библиотеки SDL3_mixer. Звук будет воспроизводиться по клику мышки по холсту на Desktop и по. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru