Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.71/7: Рейтинг темы: голосов - 7, средняя оценка - 4.71
Renerker

Найти сумму тех элементов, в запись которых входит ровно две цифры

07.04.2011, 21:35. Показов 1689. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Задача: Дан одномерный массив из N элементов. Найти сумму тех элементов, в запись которых входит ровно две цифры. Пример: 112212

Делал все это через циклы определяя последние 2 цифры элемента и сравнивал с ними остальные.
Получилась большая программа. Говорят можно сделать проще, а именно через некую функцию (которой я естественно не знаю). Не подскажите что за функция?

Добавлено через 1 час 34 минуты
Ну хоть какие нибудь идеи..
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
07.04.2011, 21:35
Ответы с готовыми решениями:

Как найти сумму тех двузначных чисел, в запись которых входит хотя бы одна цифра 7
Всем добрый вечер. Помогите решить задачу: Дана последовательность из N целых двузначных чисел типа: 17,11,43,44,98,77, 72... Найти...

Сосчитать среднее арифметическое тех отрицательных чисел, в десятичной записи которых встречается ровно две цифры 5
С клавиатуры вводятся целые числа. Окончание ввода – число ноль. Ноль используется только для указания окончания ввода и в остальных...

Найти среднее арифметическое тех элементов массива, запись которых начинается с цифры 5
добрый день всем! не могу понять с чего начать (с++): "В массиве из целых чисел найти среднее арифметическое тех чисел, запись которых...

7
 Аватар для lemegeton
4903 / 2696 / 921
Регистрация: 29.11.2010
Сообщений: 5,783
08.04.2011, 00:32
Нужно найти сумму элементов массива, десятичная запись которых состоит из двух цифр?
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <stdio.h>
#include <time.h>
#include <stdlib.h>
 
int main(int argc, char *argv[]) {
  srand(time(NULL));
  const size_t array_size = 20;
  int array[array_size];
  int i;
 
  for (i = 0; i < array_size; ++i)
    printf("%5d", array[i] = rand() % 1000);
  printf("\n");
 
  int result = 0;
  for (i = 0; i < array_size; ++i)
    if (array[i] > 9 && array[i] < 100)
      result += array[i];
 
  printf("Sum of two-digit elements: %d.\n", result);
 
  return 0;
}
1
Диссидент
Эксперт C
 Аватар для Байт
27714 / 17332 / 3810
Регистрация: 24.12.2010
Сообщений: 38,978
08.04.2011, 12:34
lemegeton, Ты считаешь просто двузначные числа. А требуется несколько другое. ТС даже привел пример 112122 - это число (как и 373) в твою сумму не попадает.
Может быть так
C
1
2
3
4
5
6
7
8
9
10
11
12
13
char c[10];
for(i=s=0; i<n; i++) {
  memset(c, 0, 10);
  k = 0;
  b = a[i];
  while (b!=0) {
     cx = b%10;
     b /= 10;
     if (c[cx]!=0{ c[cx]=1; k++; }
     if (k>2) break;
  }
  if (b==0) s += a[i];
}
1
Renerker
08.04.2011, 13:53
Отличный вариант...очень помог.Спасибо
Freelance
Эксперт С++
 Аватар для asics
2891 / 1826 / 356
Регистрация: 09.09.2010
Сообщений: 3,841
08.04.2011, 15:05
Еще вариант
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>
#include <algorithm>
#include <string>
#include <sstream>
 
int sum(std::vector<int> &v){
  static int res = 0;
  struct func{
    void operator() (const int &elem){
      std::ostringstream ost;
      ost << elem;
      std::string str = ost.str();
      if(std::unique(str.begin(), str.end()) - str.begin() == 2)
        res += elem;
    }
  };
  std::for_each(v.begin(), v.end(), func());
  return res;
}
 
int main(){
  int arr[] = {123, 21, 342, 441, 55};
  std::vector<int> vec(arr, arr + sizeof(arr) / sizeof(*arr));
  std::cout << sum(vec) << std::endl;
  return 0;
}
2
 Аватар для lemegeton
4903 / 2696 / 921
Регистрация: 29.11.2010
Сообщений: 5,783
08.04.2011, 23:55
Вот как. Ну тогда так.
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
27
28
29
30
31
32
33
34
35
#include <stdio.h>
#include <time.h>
#include <stdlib.h>
 
int IsOfTwoDigits(int number) {
  int first_digit = number % 10;
  int second_digit = (number / 10) % 10;
  number /= 100;
  while (number > 0) {
    if (number % 10 != first_digit && number % 10 != second_digit)
      return 0;
    number /= 10;
  }
  return 1;
}
 
int main(int argc, char *argv[]) {
  srand(time(NULL));
  const size_t array_size = 20;
  int array[array_size];
  int i;
 
  for (i = 0; i < array_size; ++i)
    printf("%5d", array[i] = rand() % 1000);
  printf("\n");
 
  int result = 0;
  for (i = 0; i < array_size; ++i)
    if (IsOfTwoDigits(array[i]))
      result += array[i];
 
  printf("Sum of two-digit elements: %d.\n", result);
 
  return 0;
}
1
Диссидент
Эксперт C
 Аватар для Байт
27714 / 17332 / 3810
Регистрация: 24.12.2010
Сообщений: 38,978
09.04.2011, 08:34
lemegeton, а что если first_digit==second_digit ? Числа типа 2211 твой алгоритм отбросит.
Но мозговой штурм - великое дело!

Добавлено через 52 минуты
Можно немного модифицировать твой алгоритм
C
1
2
3
4
5
6
7
second_digit = first_digit = num % 10;
num /= 10;
while (num!=0 && second_digit==first_digit) {
 second_digit = num%10;
 num /= 10;
}
// далее как у тебя
А что. Довольно изящно получается. И не нужно шкалы char c[10]
1
 Аватар для taras atavin
4226 / 1796 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
11.04.2011, 08:01
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
bool Check(int x)
{
 int i,c;
 bool d[10];
 for (i=9; i>=0; --i)
 {
  d[i]=false;
 }
 for (i=x; i>0; i/=10)
 {
  d[i%10]=true;
 }
 for (c=0, i=9; i>=0; --i)
 {
   if (d[i])
   {
    ++c;
   }
 }
 if (c==2)
 {
  return true;
 }
 return false;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
11.04.2011, 08:01
Помогаю со студенческими работами здесь

Вычислить сумму тех чисел отрезка (a, b), в запись которых входит цифра k
Тип программа должна подсчитать сколько значений между а,б именют k. Тип сколько чисел от 20 до 30 имеют 2 в записи.

Найти сумму тех элементов массива, цифровая запись которых дает четную сумму цифр
Дан массив натуральных чисел А(N), значения элементов которого лежат в диапазоне . Найти сумму тех элементов массива, цифровая запись...

Вычислить сумму тех чисел из заданного отрезка [a, b], в запись которых входит цифра k
Вычислить сумму тех чисел из заданного отрезка (a, b – натуральные числа), в запись которых входит цифра k.

Вычислить сумму тех чисел из заданного отрезка, в запись которых входит цифра k
Решить задачу с использованием процедур. Указать выделенные подзадачи, решаемые процедурами. Вычислить сумму тех чисел из заданного...

Вычислить сумму тех чисел из заданного отрезка [a, b] (a, b – натуральные), в запись которых входит цифра k
Вычислить сумму тех чисел из заданного отрезка (a, b – натуральные), в запись которых входит цифра k.


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru