Форум программистов, компьютерный форум CyberForum.ru

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

Восстановить пароль Регистрация
 
Arseny242
0 / 0 / 0
Регистрация: 29.09.2013
Сообщений: 27
29.11.2013, 16:54     Удалить из целочисленного одномерного массива все элементы, в записи которых все цифры различны #1
Удалить из целочисленного одномерного массива все элементы, в записи которых все цифры различны.

Можете подсказать хотя бы алгоритм, я не знаю даже с чего начать.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.11.2013, 16:54     Удалить из целочисленного одномерного массива все элементы, в записи которых все цифры различны
Посмотрите здесь:

Удалить из массива все элементы,в записи которых все цифры различны. C++
C++ Удалить из массива все элементы,в записи которых все цифры различны.
Удалить из массива элементы, в записи которых все цифры различны C++
C++ Найти все трехзначные числа, в которых все цифры различны.
C++ Удалить из массива, в котором все элементы различны, максимальный и минимальный элементы
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
ПерС
366 / 282 / 84
Регистрация: 05.11.2013
Сообщений: 806
Записей в блоге: 5
Завершенные тесты: 1
29.11.2013, 17:17     Удалить из целочисленного одномерного массива все элементы, в записи которых все цифры различны #2
Тема извлечения цифр из числа обсуждается на форуме каждый день, так что как-то невесело
Ну, вот прога, печатает только те числа из массива, в записи которых все цифры различны.
Замени печать на что тебе надо (см. коммент) и получишь искомое
C++
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
#include <iostream>
 
int main () {
 const int n=10;
 int a[n]={1234, 554, 325, 11, -7, 101, 200, -543, 1111, 202};
 int i,x,digs[5],k,l,j,dif;
 for (i=0; i<n; i++) {
  x=a[i];
  k=0;
  while (x) { digs[k++]=x%10; x/=10; }
  dif=1;
  for (j=0; j<k-1; j++) {
   for (l=j+1; l<k; l++) if (digs[j]==digs[l]) {
    dif=0; break;
   }
   if (!dif) break;
  }
  if (dif) {
   cout << a[i] << " ";
   //вот тут и удаляй, например, не пиши такие числа в новый массив b
   //а которые не отвечают условию - пиши
  }
 }
 cin.get();
 return 0;
}
Тест:

1234 325 -7 -543
Arseny242
0 / 0 / 0
Регистрация: 29.09.2013
Сообщений: 27
30.11.2013, 14:38  [ТС]     Удалить из целочисленного одномерного массива все элементы, в записи которых все цифры различны #3
Большое спасибо, но вопросы остались. Можете рассказать как работает вот этот цикл?
for (i=0; i<n; i++) {
x=a[i];
k=0;
while (x) { digs[k++]=x%10; x/=10; }
dif=1;
for (j=0; j<k-1; j++) {
for (l=j+1; l<k; l++) if (digs[j]==digs[l]) {
dif=0; break;
}
if (!dif) break;
}
ПерС
366 / 282 / 84
Регистрация: 05.11.2013
Сообщений: 806
Записей в блоге: 5
Завершенные тесты: 1
03.12.2013, 08:21     Удалить из целочисленного одномерного массива все элементы, в записи которых все цифры различны #4
C
1
while (x) { digs[k++]=x%10; x/=10; }
пока в числе x остались цифры,
извлечь в массив цифр очередную цифру (x%10) и выбросить ее из числа (x/=10; деление целых дает в Си целое, например, 325/10=32)

C
1
2
3
4
5
dif=1; //предположили, что все цифры разные
for (j=0; j<k-1; j++) { //каждую цифру в массиве цифр сравниваем с каждой
for (l=j+1; l<k; l++) if (digs[j]==digs[l]) {
dif=0; break; //есть хотя бы раз одинаковые? сбросить флаг dif и выйти
}
Arseny242
0 / 0 / 0
Регистрация: 29.09.2013
Сообщений: 27
06.12.2013, 23:25  [ТС]     Удалить из целочисленного одномерного массива все элементы, в записи которых все цифры различны #5
А можно ли решить данную задачу другим способом? При помощи сдвига элементов?
ПерС
366 / 282 / 84
Регистрация: 05.11.2013
Сообщений: 806
Записей в блоге: 5
Завершенные тесты: 1
07.12.2013, 16:29     Удалить из целочисленного одномерного массива все элементы, в записи которых все цифры различны #6
Наверно, можно. Обнаружив подходящий элемент, пакуй массив
C++
1
2
3
4
5
6
7
8
for (j=0; j<k-1; j++) {
   for (l=j+1; l<k; l++) if (digs[j]==digs[l]) {
    dif=0; 
    //здесь
    break;
   }
   if (!dif) break;
  }
Yandex
Объявления
07.12.2013, 16:29     Удалить из целочисленного одномерного массива все элементы, в записи которых все цифры различны
Ответ Создать тему
Опции темы

Текущее время: 00:54. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru