С наступающим Новым годом! Форум программистов, компьютерный форум, киберфорум
Наши страницы
Pascal (Паскаль)
Войти
Регистрация
Восстановить пароль
 
Shepard3750
0 / 0 / 0
Регистрация: 04.12.2014
Сообщений: 6
1

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

09.12.2014, 10:52. Просмотров 284. Ответов 6
Метки нет (Все метки)

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

Зараннее спасибо.
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.12.2014, 10:52
Ответы с готовыми решениями:

Вставить после каждого положительного числа в одномерном массиве число 0
Вставить после каждого положительного числа в одномерном массиве число 0

Массив. Вставить число 5 после каждого четного числа
Вот наработок. Выдает ошибку: Индекс находится вне границ массива. var x:array...

Даны три целых числа. Вывести наибольшее четное число, если хотя бы одно такое число есть
Даны три целых числа. Вывести наибольшее четное число, если хотя бы одно такое...

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

В массиве после каждого элемента вставить такой же
дан массив. после каждого элемента вставте такой же.

6
Sergio Leone
2467 / 1112 / 579
Регистрация: 07.06.2014
Сообщений: 3,259
09.12.2014, 11:08 2
приведи свой код, в котором ты описываешь и заполняешь массив.
0
Shepard3750
0 / 0 / 0
Регистрация: 04.12.2014
Сообщений: 6
09.12.2014, 11:38  [ТС] 3
Pascal
1
2
3
4
5
6
7
8
9
10
var a: array[1..100] of integer; 
i: byte;
begin
 randomize; 
  for i:=1 to 100 do
   begin
   a[i]:=random(1000);   
   write(a[i],'     ');
   end;
end.
0
Sergio Leone
2467 / 1112 / 579
Регистрация: 07.06.2014
Сообщений: 3,259
09.12.2014, 11:52 4
Shepard3750, неплохо!

Вот только есть один нюанс.
Если я правильно понял задание, то в массив нужно ВСТАВЛЯТЬ значения.
И тогда числа, расположенные после вставки, нужно сдвигать.
А изменить размер статического массива в Паскале нельзя

Поэтому я бы рекомендовал Вам просто взять массив ВДВОЕ большего размера 2*N.
Тогда, даже если ВСЕ N значений подойдут, в массиве всё равно найдётся место для вставки новых значений!


p.s. Надеюсь, как проверить "число, состоящее из одинаковых цифр" знаете?
0
Shepard3750
0 / 0 / 0
Регистрация: 04.12.2014
Сообщений: 6
09.12.2014, 12:16  [ТС] 5
Т.е. за место a: array[1..100] взять вдвое больше?
И, к сожалению, я не знаю как проверять число,так как недавно начал
0
Sergio Leone
2467 / 1112 / 579
Регистрация: 07.06.2014
Сообщений: 3,259
09.12.2014, 13:39 6
Цитата Сообщение от Shepard3750 Посмотреть сообщение
Т.е. за место a: array[1..100] взять вдвое больше?
Да, Вы правильно поняли:

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
const maxN = 200;
var
  a : array[1.. maxN div 2] of integer;
  i, N : integer;
begin
  randomize; 
  repeat
     Write('Введите размерность массива от 1 до ',maxN div 2.': ');
     Readln(N);
     if (N<1) or (N>(maxN div 2)) then WriteLn('Вы ввели недопустимое значение! Попробуйте ещё раз!');
  until (N>=1) and (N<=(maxN div 2));
  for i:=1 to N do
   begin
      a[i]:=random(1000);   
      write(a[i],'  ');
   end;
   WriteLn;
 
   // тут надо написать обработку массива
  //     и при вставке значений не забывать увеличивать N
 
  {вывести полученный массив}
  Write('Полученный массив: ');
  for i:=1 to N do
      write(a[i],'  ');
  WriteLn;
  
  Readln
end.
Цитата Сообщение от Shepard3750 Посмотреть сообщение
, к сожалению, я не знаю как проверять число
ну, например, так:
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
function isEqualDigits(x:integer) : boolean;
var i : integer;
   s : string;
begin
  Str(abs(x), s);
  if Length(s)<2 then  isEqualDigits := true
  else begin
      isEqualDigits := false;
      for i:=2 to Length(s) do
          if s[i]<>s[i-1] then Exit;
      isEqualDigits := true;
  end;
end;
1
volvo
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
26542 / 17828 / 7051
Регистрация: 22.10.2011
Сообщений: 31,371
Записей в блоге: 6
09.12.2014, 13:51 7
Без конвертации в строку:
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
function IsEqualDigits(n : integer) : boolean;
var
   digit : integer;
   Equal : boolean;
begin
   digit := n mod 10; Equal := true;
   while n >= 10 do
   begin
      Equal := Equal and ((n mod 10) = digit);
      n := n div 10;
   end;
   IsEqualDigits := Equal;
end;
1
09.12.2014, 13:51
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.12.2014, 13:51

Вставить число после каждого пробела.
помогите решить задачу:Дана строка до точки, группа символов, в которой между...

После каждого числа n, в котором число десятков меньше числа единиц, вставьте n
С клавиатуры вводится одномерный массив целых чисел: сначала вводится...

Вставить в массив число "a" после каждого из элементов, в которых больше трёх цифр
Дан целочисленный линейный массив. Вставить в него число a после каждого из...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru