Форум программистов, компьютерный форум, киберфорум
Pascal (Паскаль)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.54/13: Рейтинг темы: голосов - 13, средняя оценка - 4.54
16 / 3 / 4
Регистрация: 26.11.2011
Сообщений: 92

Вставить новый элемент после первого отрицательного элемента массива

27.11.2011, 17:49. Показов 2544. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Задача на одномерный массив:
Вставить новый элемент после первого отрицательного элемента.

Т.е. если у нас исходный массив 2 3 -1 4 5 -4
Первый отрицательный элемент: -1
После него мы должны вставить любое число, например A.
Тогда новый массив 2 3 -1 A 4 5 -4

Вот мой вариант программы:

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
program s;
uses crt;
var
  x:array[1..100] of integer;
  n,A,i,p:integer;
begin
clrscr;
randomize;
  write ('Введите размерность массива: '); readln(n);
  writeln('Исходный массив: ');
  for i:=1 to n do
  begin
  x[i]:=random(n*2+1)-n;
  write (x[i]:4,'');
  end;
  writeln;
  p:= n+1;
  for i:=n downto 1 do
  if (x[i]<0) then p := i;
  if (p > n) then begin
  writeln('Отрицательных элементов не найдено');
  end;
  writeln;
  write ('Введите число, которое нужно вставить: '); readln(A);
  for i := n downto p+1 do
  begin
    x[i+1] := x[i];
  x[p+1] := A;
  n := n+1;
  end;
  writeln('Новый массив: ');
  for i := 1 to n do
  begin
    write(x[i]:4,'');
  end;
  readln;
end.
Проблемы следующие:
1) Если отрицательных элементов нет, то программа выдает надпись "Отрицательных элементов не найдено" и тут же просит ввести новый элемент для вставки. Мне нужно, что бы после первого оповещения программа закрывалась.
2) Если ввести размерность от 4 и больше, то после вставки нового элемента программа приписывает в конце массива какие то нули.
3) Если у нас срандомился массив: 1 -2 3 4 5
То после вставки элемента мы получаем: 1 -2 A A 4 5 0 0
Почему то заменяется следующий второй элемент, после первого отрицательного... Про нули я уже говорил.

Кто поможет исправить программу?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
27.11.2011, 17:49
Ответы с готовыми решениями:

Вставить в массив новый элемент после первого отрицательного элемента
Вставить массив Х(N) элемент z после первого отрицательного элемента, если такой имеется.

Вставить элемент с данным значением после первого отрицательного элемента массива
Вставить элемент с данным значением после первого отрицательного элемента/

Вставить элемент с заданным значением после первого отрицательного элемента массива
вставить элемент с значением после первого отрицательного элемента массива) надо с помощью...

4
Почетный модератор
 Аватар для КонецСвета
7966 / 3937 / 2464
Регистрация: 30.10.2011
Сообщений: 5,377
27.11.2011, 18:53
Альтернатива
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
uses crt;
var a:array [1..100] of integer;
    NE,i,io,ko,n: integer;
begin
write ('Введите размер массива ');
readln (n);
write ('Введите новый элемент ');
readln (NE);
ko:=0;
writeln ('Исходный массив');
for i:=1 to n do
    begin
    a[i]:=random(21)-10;
    write (a[i]:3);
    if (a[i]<0) and (ko<1) then
       begin
       io:=i;
       ko:=ko+1;
       end;
    end;
writeln;
if ko<1 then writeln('Отрицательных элементов не найдено') else
begin
 
writeln ('Итоговый массив');
for i:=n+1 downto io do
    a[i+1]:=a[i];
a[io]:=NE;
for i:=1 to n+1 do
    write (a[i]:3);
end;
readln;
end.
0
16 / 3 / 4
Регистрация: 26.11.2011
Сообщений: 92
27.11.2011, 19:45  [ТС]
Цитата Сообщение от КонецСвета Посмотреть сообщение
Альтернатива
В этом случае новый элемент вставляется перед первый отрицательным элементом, а нужно что бы он вставлялся после.
Pascal
1
a[i]:=random(21)-10;
при вводе любых значений пишет ошибку "арифметическое переполнение"

Желательно, что бы запрос на вставку элемента был после того, как сформировался исходный массив и прошел проверку на отрицательные значения.
0
Почетный модератор
 Аватар для КонецСвета
7966 / 3937 / 2464
Регистрация: 30.10.2011
Сообщений: 5,377
27.11.2011, 19:59
Извини, невнимательность... исполняю

Добавлено через 11 минут
вот исправленный вариант (за исключением арифметического переполнения)
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
uses crt;
var a:array [1..100] of integer;
    NE,i,io,ko,n: integer;
begin
write ('Введите размер массива ');
readln (n);
ko:=0;
writeln ('Исходный массив');
for i:=1 to n do
    begin
    a[i]:=random(21)-10;
    write (a[i]:3);
    if (a[i]<0) and (ko<1) then
       begin
       io:=i;
       ko:=ko+1;
       end;
    end;
writeln;
if ko<1 then writeln('Отрицательных элементов не найдено')
else
begin
io:=io+1;
write ('Введите новый элемент ');
readln (NE);
writeln ('Итоговый массив');
for i:=n+1 downto io do
    a[i+1]:=a[i];
a[io]:=NE;
for i:=1 to n+1 do
    write (a[i]:3);
end;
readln;
end.
а арифметическое переполнение - это ошибка генерации случайных чисел в shool pack (у меня его нет), вот, коллеги по форуму советуют так
Pascal
1
2
a[i]:= random(21);
a[i]:= а[i]-10;
1
16 / 3 / 4
Регистрация: 26.11.2011
Сообщений: 92
27.11.2011, 20:11  [ТС]
Вот теперь хорошо, спасибо
Ошибку решил, вставив свой вариант рандома
Pascal
1
a[i]:=random(n*2+1)-n;
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
27.11.2011, 20:11
Помогаю со студенческими работами здесь

Вставить элемент после первого отрицательного элемента массива
работа с одномерными массивами: 1) вставить элемент после первого отрицательного элемента 2)...

Одно число вставить после первого отрицательного элемента массива, второе – после последнего положительного
Вот условие - Дан одномерный массив. Надо одно число вставить после первого отрицательного элемента...

Вставить элемент, равный номеру вашего компьютера, после первого отрицательного элемента
Заполнить массив из 10 элементов случайными числами в интервале . Вывести массив на экран. Вставить...

Найти номер первого максимального элемента среди положительных элементов до первого отрицательного элемента массива
Массивы, без рандомных чисел нужно. Дан целочисленный вектор A(n). Найти номер первого...

После каждого отрицательного элемента массива X вставить очередной элемент массива Z
Даны два одномерных массива X(n) и Z(n). после каждого отрицательного элемента массива X вставить...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru