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

В массиве после каждого отрицательного элемента вставить элемент, равный его модулю

24.09.2015, 10:39. Показов 2980. Ответов 13
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Не знаю как решить задачу. В массиве после каждого негативного элемента, вставить элемент, равный модулю негативного элемента.
Нужно решить двумя способами: 1) Создать второй массив и заново в него записывать элементы, но уже с модулем негативного элемента. 2) Расширять массив (при необходимости) сдвигом элементов, для записи нового элемента.
(Еще и блок-схемы нужны).
Описал как смог. Спрашивайте, если что!
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
24.09.2015, 10:39
Ответы с готовыми решениями:

В массиве А после каждого отрицательного элемента вставить элемент с заданным значением
Задание: В массиве А после каждого отрицательного элемента вставить элемент с заданным значением ...

В массиве после каждого отрицательного элемента, вставить элемент, равный модулю отрицательного элемента
Нужен код С#

Вставить в массив максимальный по модулю элемент после каждого отрицательного элемента с четным индексом
К ней я не могу написать код. Вот условие: Дан массив целых чисел размера n. Вставить в массив...

В одномерном массиве нужно после каждого отрицательного элемента вставить его модуль
Всем доброго времени суток! Необходима Ваша помощь. Я недавно начала изучать С# и уже возникли...

13
Эксперт Pascal/Delphi
6811 / 4568 / 4819
Регистрация: 05.06.2014
Сообщений: 22,438
24.09.2015, 11:13 2
Саня878, пожалуйста, давайте вашим темам осмысленные названия!
0
Почетный модератор
64303 / 47600 / 32742
Регистрация: 18.05.2008
Сообщений: 115,181
24.09.2015, 11:20 3
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

Вот тебе решение обоими способами, остальное уж сам..
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
50
51
52
53
54
55
uses crt;
const nmax=100;
var a,b:array[1..nmax] of integer;
    n,i,j,k:byte;
    x:integer;
begin
clrscr;
randomize;
repeat
write('Размер массива до ',nmax div 2,' n=');
readln(n);
until n in [1..nmax div 2];
writeln('Исходный массив A:');
for i:=1 to n do
 begin
  a[i]:=-50+random(101);
  write(a[i]:4);
 end;
writeln;
writeln;
{1 способ}
k:=0;
for i:=1 to n do
 begin
  inc(k);
  b[k]:=a[i];
  if a[i]<0 then
   begin
    inc(k);
    b[k]:=abs(a[i]);
   end;
 end;
writeln('Массив B');
for i:=1 to k do
write(b[i]:4);
writeln;
{2 способ}
i:=1;
k:=0;
while i<=n do
if a[i]<0 then
 begin
  n:=n+1;
  k:=1;
  for j:=n downto i+2 do
  a[j]:=a[j-1];
  a[i+1]:=abs(a[i]);
  i:=i+2;
 end
else i:=i+1;
writeln('Массив A');
for i:=1 to n do
 write(a[i]:4);
readln
end.
1
0 / 0 / 0
Регистрация: 24.09.2015
Сообщений: 4
24.09.2015, 11:25  [ТС] 4
Puporev, Большое спасибо, а не могли бы Вы написать пояснения к коду, а то боюсь долго сам разбираться буду?
0
Почетный модератор
64303 / 47600 / 32742
Регистрация: 18.05.2008
Сообщений: 115,181
24.09.2015, 11:41 5
Лучший ответ Сообщение было отмечено Саня878 как решение

Решение

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
50
51
52
53
54
uses crt;    //модуль для очистки экрана процедурой clrscr
const nmax=100;//макс. размер массива
var a,b:array[1..nmax] of integer;//массивы
    n,k,i,j:byte; //размерs массива и счетчики циклов
    //x убрать, рудимент старой программы
begin
clrscr; //очистка экрана, можно убрать ее и модуль
randomize; //генерация псевдослучайных чиел
repeat//вводразмера массива с прверкой
write('Размер массива до ',nmax div 2,' n=');//не больше половины макс.
readln(n);
until n in [1..nmax div 2];
writeln('Исходный массив A:');
for i:=1 to n do
 begin
  a[i]:=-50+random(101);//от -50 до +50
  write(a[i]:4);
 end;
writeln;
{1 способ}
k:=0;//размер массива В
for i:=1 to n do
 begin
  inc(k);//увеличим на 1
  b[k]:=a[i];//запишем число из А
  if a[i]<0 then //если отрицательное
   begin
    inc(k); //+1
    b[k]:=abs(a[i]);//пишем модуль
   end;
 end;
writeln('Массив B');
for i:=1 to k do
write(b[i]:4);
writeln;
{2 способ}
//k:=0; убрать ошибку
i:=1; //начало массива
while i<=n do//пока не конец
if a[i]<0 then //если отрицательное
 begin
  n:=n+1;//+1
//k:=1;  убрать ошибку
  for j:=n downto i+2 do  //сдвинем массив вправо на 1, освободим место i+1
  a[j]:=a[j-1];
  a[i+1]:=abs(a[i]);//вставим туда модуль
  i:=i+2;//перешагнем
 end
else i:=i+1;//иначе вперед
writeln('Массив A');
for i:=1 to n do
write(a[i]:4);
readln
end.
1
0 / 0 / 0
Регистрация: 24.09.2015
Сообщений: 4
24.09.2015, 15:15  [ТС] 6
Puporev, Уточнение по первому способу. Мне нужно что бы во второй массив записывались все числа и положительные и отрицательные и их модули.

Добавлено через 6 минут
Puporev, Еще нужно делать проверку, не последний ли это элемент массива.
0
Почетный модератор
64303 / 47600 / 32742
Регистрация: 18.05.2008
Сообщений: 115,181
24.09.2015, 15:15 7
Не понял, что не верно?
Миниатюры
В массиве после каждого отрицательного элемента вставить элемент, равный его модулю  
1
Почетный модератор
64303 / 47600 / 32742
Регистрация: 18.05.2008
Сообщений: 115,181
24.09.2015, 15:16 8
Цитата Сообщение от Саня878 Посмотреть сообщение
не последний ли это элемент массива.
А зачем, если мы добавляем n:=n+1?
1
0 / 0 / 0
Регистрация: 24.09.2015
Сообщений: 4
24.09.2015, 17:12  [ТС] 9
Puporev, А можно поподробней, что нам дает n:=n+1?
0
Почетный модератор
64303 / 47600 / 32742
Регистрация: 18.05.2008
Сообщений: 115,181
24.09.2015, 17:16 10
Увеличивает размер массива на 1 для вставки модуля.
1
0 / 0 / 0
Регистрация: 12.03.2014
Сообщений: 20
24.09.2015, 19:24 11
Puporev, Можете дать разъяснения по этим строкам:
Pascal
1
2
3
4
 for j:=n downto i+2 do  //сдвинем массив вправо на 1, освободим место i+1
  a[j]:=a[j-1];
  a[i+1]:=abs(a[i]);//вставим туда модуль
  i:=i+2;//перешагнем
Зачем сдвигать на 2, и т.д.?
И еще, что значит "Убрать ошибку", что это за ошибка такая?
0
Почетный модератор
64303 / 47600 / 32742
Регистрация: 18.05.2008
Сообщений: 115,181
24.09.2015, 19:32 12
Цитата Сообщение от Iliyabond Посмотреть сообщение
Зачем сдвигать на 2
Мы сдвигаем на 1
Pascal
1
for j:=n downto i+2 do  //сдвинем массив вправо на 1, освободим место i+1
Цитата Сообщение от Iliyabond Посмотреть сообщение
"Убрать ошибку", что это за ошибка такая?
Лишние строчки, остались от предыдущей программы.
0
0 / 0 / 0
Регистрация: 12.03.2014
Сообщений: 20
25.09.2015, 11:26 13
Puporev, А что делает эта строка: a[j]:=a[j-1]; ?
0
Почетный модератор
64303 / 47600 / 32742
Регистрация: 18.05.2008
Сообщений: 115,181
25.09.2015, 11:37 14
Совсем плохой что ли?
Присваивает каждому элементу значение предыдущего, происходит сдвиг вправо.
1
25.09.2015, 11:37
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
25.09.2015, 11:37
Помогаю со студенческими работами здесь

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

Односвязный список: после каждого отрицательного элемента добавить новый элемент, равный 0
Односвязный массив. Нужно после каждого отрицательного элемента добавить после него новый элемент...

Вставить элемент 100 до и после каждого отрицательного элемента
Вставить элемент 100 до и после каждого отрицательного элемента. Прошу, свое решение не писать,...

после каждого отрицательного элемента вставить нулевой элемент.
В типизированный файл, компонентами которого являются вещественные числа, после каждого...


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

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru