3 / 3 / 0
Регистрация: 09.12.2014
Сообщений: 56
1

Удалить из массива все числа, состоящие из одинаковых цифр и упорядочить элементы по убыванию их сумм

10.12.2014, 09:40. Показов 1894. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Удалить из целочисленного массива все числа, состоящие из одинаковых цифр. Упорядочить элементы массива в порядке убывания суммы их цифр.
paskai ABC net
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
10.12.2014, 09:40
Ответы с готовыми решениями:

Удалить из массива все элементы, состоящие из одинаковых цифр
3 вариант.

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

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

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

4
Эксперт Pascal/Delphi
2385 / 1297 / 1492
Регистрация: 29.08.2014
Сообщений: 4,661
10.12.2014, 09:56 2
Лучший ответ Сообщение было отмечено Tertyshnyj как решение

Решение

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
const n=20;
var
  a,b:array of integer;
  i,j,k:integer;
  s:string;
  ok:boolean;
function sm(a:integer):integer;
var
  l,i:integer;
  s:string;
begin
  l:=0;
  s:=inttostr(a);
  for i:=1 to length(s) do l:=l+ord(s[i])-48;
  result:=l;
end;  
function ordernum(a:integer):string;
var
  i,j:integer;
  s:string;
begin
  s:=inttostr(a);
  for i:=1 to length(s)-1 do
    for j:=i to length(s) do if s[i]<s[j] then swap(s[i],s[j]);
  result:=s;  
end;    
begin
  randomize;
  SetLength(a,n+1);
  writeln('Исходный массив');
  for i:=1 to n do begin
    a[i]:=random(1000);//    read(a[i]);
    write(a[i],' ');
    s:=ordernum(a[i]);
    ok:=true;
    if k>0 then  for j:=1 to k do if ordernum(b[j])=s then ok:=false;
    if ok then begin
      inc(k);
      SetLength(b,k+1);
      b[k]:=a[i];
    end;
  end;
  a:=b;
  writeln;
  writeln('Массив с удаленными элементами, состоящими из одинаковых цифр:');
  for i:=1 to k do write(a[i],' ');
  for i:=1 to k-1 do
    for j:=i to k do if sm(a[i])<sm(a[j]) then swap(a[i],a[j]);
    writeln;
  writeln('Массив, упорядоченный в порядке убывания суммы цифр:');    
  for i:=1 to k do write(a[i],' ');    
end.
1
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
32569 / 21040 / 8131
Регистрация: 22.10.2011
Сообщений: 36,314
Записей в блоге: 8
10.12.2014, 10:41 3
Joy, не то, ты не удаляешь
Цитата Сообщение от Tertyshnyj Посмотреть сообщение
все числа, состоящие из одинаковых цифр
(скажем, 33, 44, 555)... Вот так я бы решал задачу:
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
{$reference System.Core.dll}
uses System.Linq;
 
function SumDigits(i : integer) : integer;
begin
  result := 0;
  while i > 0 do
  begin
    result := result + (i mod 10);
    i := i div 10;
  end;
end;
 
var
  arr, arr_after : array of integer;
  n : integer;
 
begin
  write('n = '); readln(n);
  arr := Enumerable.Range(1, n).Select((i : integer) -> Random(100)).ToArray();
    // ReadString().Split(' ').Select((s : string) -> integer.Parse(s));
  
  writeln('Исходный массив:');
  foreach x : integer in arr do write(x:5);
  writeln;
  
  arr_after := arr.Where((i : integer) -> (i < 10) or (IntToStr(i).ToCharArray().Distinct().Count() > 1)).ToArray();
  writeln('Массив без элементов, состоящих из одинаковых цифр:');
  foreach x : integer in arr_after do write(x:5);
  writeln;
  
  arr_after := arr_after.OrderByDescending((i : integer) -> SumDigits(i)).ToArray();
  writeln('Массив после сортировки:');
  foreach x : integer in arr_after do write(x:5);
  writeln;
end.
1
Эксперт Pascal/Delphi
2385 / 1297 / 1492
Регистрация: 29.08.2014
Сообщений: 4,661
10.12.2014, 10:55 4
volvo, я понял что удалять надо например числа 110 и 101, и накосячил с удалением - оставляю только одно число, а надо оба убирать.

Добавлено через 6 минут
исправление
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
const n=20;
var
  a,b:array of integer;
  i,j,k:integer;
  s:string;
  ok:boolean;
function sm(a:integer):integer;
var
  l,i:integer;
  s:string;
begin
  l:=0;
  s:=inttostr(a);
  for i:=1 to length(s) do l:=l+ord(s[i])-48;
  result:=l;
end;  
function ordernum(a:integer):string;
var
  i,j:integer;
  s:string;
begin
  s:=inttostr(a);
  for i:=1 to length(s)-1 do
    for j:=i to length(s) do if s[i]<s[j] then swap(s[i],s[j]);
  result:=s;  
end;    
begin
  randomize;
  SetLength(a,n+1);
  writeln('Исходный массив');
  for i:=1 to n do begin
    a[i]:=random(1000);//    read(a[i]);
    write(a[i],' ');
  end;
  for i:=1 to n do begin
    s:=ordernum(a[i]);
    ok:=true;
    if k>0 then  for j:=1 to n do if (ordernum(a[j])=s) and (i<>j) then ok:=false;
    if ok then begin
      inc(k);
      SetLength(b,k+1);
      b[k]:=a[i];
    end;
  end;
  a:=b;
  writeln;
  writeln('Массив с удаленными элементами, состоящими из одинаковых цифр:');
  for i:=1 to k do write(a[i],' ');
  for i:=1 to k-1 do
    for j:=i to k do if sm(a[i])<sm(a[j]) then swap(a[i],a[j]);
    writeln;
  writeln('Массив, упорядоченный в порядке убывания суммы цифр:');    
  for i:=1 to k do write(a[i],' ');    
end.
0
3 / 3 / 0
Регистрация: 09.12.2014
Сообщений: 56
14.12.2014, 15:18  [ТС] 5
а можно написать эту программу без function
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
14.12.2014, 15:18
Помогаю со студенческими работами здесь

Удалить из массива элементы, состоящие из одинаковых цифр
дан массив целых чисел (n=10), заполненный случайным образом числами из промежутка . Удалить из...

Удалить из предложения все числа, состоящие из одинаковых цифр
Дано предложение, состоящее из слов, разделенных запятой или пробелами, среди которых есть слова,...

Посчитать все элементы массива, состоящие только из одинаковых цифр
1.Дан Массив с N натуральных чисел. Посчитать все элементы массива, что имеют такую особенность:...

Удалить из предложения все числа, состоящие из одинаковых цифр; сформировать массив из чисел предложения
Дано предложение, состоящее из слов, разделенных запятой или пробелами, среди которых есть слова,...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru