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

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

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

Author24 — интернет-сервис помощи студентам
Написать программу в которой выполняется:
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. Осуществить циклический сдвиг элементов массива влево на одну позицию.

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

5
424 / 424 / 338
Регистрация: 25.06.2012
Сообщений: 668
27.10.2012, 20:17 2
Цитата Сообщение от 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  [ТС] 3
Что-то не так у меня выходит, напишите уж правильный код, а другое задание сам попытаюсь сделать.
0
424 / 424 / 338
Регистрация: 25.06.2012
Сообщений: 668
27.10.2012, 20:35 4
Цитата Сообщение от 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  [ТС] 5
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
424 / 424 / 338
Регистрация: 25.06.2012
Сообщений: 668
27.10.2012, 20:56 6
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
27.10.2012, 20:56
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
27.10.2012, 20:56
Помогаю со студенческими работами здесь

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
Что такое HCL Notes и как с ним работать
InfoMaster 10.01.2025
HCL Notes (ранее известный как IBM Notes и Lotus Notes) представляет собой комплексную платформу для совместной работы и обмена информацией в корпоративной среде. Это многофункциональное решение,. . .
Как работать с Git из Windows и Visual Studio
InfoMaster 10.01.2025
Работа с Git в Windows Работа с Git в операционной системе Windows может быть осуществлена с помощью различных инструментов, каждый из которых обладает своими уникальными возможностями и. . .
Аналог оператора switch case в Python
InfoMaster 10.01.2025
Оператор switch case используется в программировании для выбора одного из нескольких вариантов исполнения кода. Однако в языке Python этот оператор отсутствует. Понимание аналогов switch case в. . .
Отличия абстрактного класса от интерфейса
InfoMaster 10.01.2025
В современной разработке программного обеспечения существуют два основных механизма реализации абстракции: абстрактные классы и интерфейсы. Эти инструменты, хотя и схожи в своей основной цели -. . .
Как работать в Git
InfoMaster 10.01.2025
Git — это одна из наиболее популярных систем контроля версий, которая активно используется разработчиками по всему миру. Она позволяет эффективно управлять изменениями в коде, координировать работу. . .
Реализация передвижения персонажа в Unity3d на C#
InfoMaster 10.01.2025
Реализация передвижения персонажа в Unity3D начинается с правильной настройки проекта. Этот этап критически важен для создания отзывчивого и плавного управления. Рассмотрим основные шаги для создания. . .
Docker: руководство для начинающих
InfoMaster 10.01.2025
В современном мире разработки программного обеспечения контейнеризация стала неотъемлемой частью процесса создания и развертывания приложений. Docker, как ведущая платформа контейнеризации, произвела. . .
Книги и учебные ресурсы по C#
InfoMaster 08.01.2025
Базовые учебники и руководства Одной из лучших книг для начинающих является "C# 10 и . NET 6 для начинающих" Эндрю Троелсена и Филиппа Джепикса . Книга последовательно раскрывает основные концепции. . .
Что такое NullReferenceEx­­­ception и как исправить?
InfoMaster 08.01.2025
NullReferenceException - одно из самых распространенных исключений, с которым сталкиваются разработчики на C#. Это исключение возникает при попытке обратиться к членам объекта (методам, свойствам или. . .
Что такое Null Pointer Exception (NPE) и как это исправить?
InfoMaster 08.01.2025
Null Pointer Exception (NPE) - это одно из самых распространенных исключений в Java, которое возникает при попытке использовать ссылку на объект, значение которой равно null. Это исключение относится. . .
Русский язык в консоли C++
InfoMaster 08.01.2025
При разработке программ на C++ одной из частых проблем, с которой сталкиваются русскоязычные программисты, является корректное отображение кириллицы в консольных приложениях. Эта проблема особенно. . .
Telegram бот на C#
InfoMaster 08.01.2025
Разработка ботов для Telegram стала неотъемлемой частью современной экосистемы мессенджеров. C# предоставляет мощный и удобный инструментарий для создания разнообразных ботов, от простых. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru