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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
rafull6
0 / 0 / 0
Регистрация: 22.02.2013
Сообщений: 32
#1

Найти все числа в массиве которые заканчиваются на число 47 - C++

06.04.2014, 14:17. Просмотров 856. Ответов 13
Метки нет (Все метки)

Помогите пожалуйста решить задачу:
Неоходимо найти все числа в массиве (диапазон случайных чисел от 200 до -200) которые заканчиваются на 47 (как я понял вариантов будет не много. -47 47 -147 147) и вывести эти числа с ихними индексами в массиве.
Пример:

Число -47 | Ряд 2 | Строка 7
Число 147 | Ряд 4 | Строка 8

Знакомый сказал что можно реализовать это задание следующим способом. От каждого числа из массива отнять 47 и то что получится разделить на 10. Если получится целое число в результате - выписывем наш элемент. Проблема в том что я не до конца понимаю как это реализовать, особенно с отрицательными числами.


P.S Если не сложно - объясните саму процедуру поиска таких числел (если например числа будут заканчиваться на 23 или на 14)
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.04.2014, 14:17     Найти все числа в массиве которые заканчиваются на число 47
Посмотрите здесь:

C++ Вывести все числа, которые встречаются в этом массиве несколько раз
C++ Удалить все числа, которые начинаются и заканчиваются на одну и ту же цифру
Масивы: удалить все числа которые начинаются и заканчиваются на одну и ту же цифру C++
Удалить все слова, которые начинаются и заканчиваются за одну и ту же букву C++
C++ Найти все двузначные числа, которые при умножении на 2 заканчиваются на 8, а при умножении на 3 - на 4.
C++ В заданном массиве натуральных чисел заменить все числа на такие числа, которые получаться из исходного записью его цифр в обратном порядке
Строки. Найти все слова, которые начинаются и заканчиваются одной и той же буквой. C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
stealzy
0 / 0 / 0
Регистрация: 06.04.2014
Сообщений: 6
06.04.2014, 14:31     Найти все числа в массиве которые заканчиваются на число 47 #2
fmod — вычисление остатка от деления нацело для чисел с плавающей точкой
remainder(x,y) вычисляет остаток от деления
http://ru.wikipedia.org/wiki/Math.h

C++
1
2
3
#include <math.h>
...
if (remainder(n, 100)=47) then ...
rafull6
0 / 0 / 0
Регистрация: 22.02.2013
Сообщений: 32
06.04.2014, 14:40  [ТС]     Найти все числа в массиве которые заканчиваются на число 47 #3
причем здесь fmod вообще? вы прочитали мой вопрос до конца?
AndrSlav
44 / 44 / 6
Регистрация: 20.12.2013
Сообщений: 259
06.04.2014, 14:47     Найти все числа в массиве которые заканчиваются на число 47 #4
А можно сравнить последние биты - если число заканчивается на 101111, то последние цифры будут "47". По крайней мере для целых чисел, для действительных тоже, наверно, можно изловчиться.

Добавлено через 2 минуты
Цитата Сообщение от rafull6 Посмотреть сообщение
разделить на 10
На 100.
rafull6
0 / 0 / 0
Регистрация: 22.02.2013
Сообщений: 32
06.04.2014, 15:02  [ТС]     Найти все числа в массиве которые заканчиваются на число 47 #5
Задачу решил таким методом:
C++
1
2
3
4
5
6
7
8
9
10
11
void check()
{
      for (int i=0; i<n; i++)
      {
        for (int j=0; j<m; j++)
        {
             if(ar[i][j]%100==47||ar[i][j]%100==-47||ar[i][j]%10==47||ar[i][j]%10==-47) 
            cout<<ar[i][j]<<endl;
        }
      }
}
так как в моем случае диапазон чисел массива от -200 до 200, делим каждое число на 100. Если остаток 47 или -47 - выводим элемент в консоль. Потом делим каждое число на 10. Если остаток 47 или -47 - выводим элемент в консоль. Таким образом мы захватываем и двузначные и трехзначные элементы.
stealzy
0 / 0 / 0
Регистрация: 06.04.2014
Сообщений: 6
06.04.2014, 15:03     Найти все числа в массиве которые заканчиваются на число 47 #6
причем здесь fmod вообще? вы прочитали мой вопрос до конца?
Как вы собираетесь реализовывать предложение вашего знакомого?
C++
1
2
3
if ( (fmod( (n-47)/100 ) == 0) and (n!=0) ) {
//число кончается на 47
}
rafull6
0 / 0 / 0
Регистрация: 22.02.2013
Сообщений: 32
06.04.2014, 15:05  [ТС]     Найти все числа в массиве которые заканчиваются на число 47 #7
Посмотрите мой предыдущий пост.
Хотя ваш способ выглядит более окуратнее.
stealzy
0 / 0 / 0
Регистрация: 06.04.2014
Сообщений: 6
06.04.2014, 15:10     Найти все числа в массиве которые заканчиваются на число 47 #8
А зачем вы делите на 10, если вам нужны числа,
которые заканчиваются на число 47
а?
Точнее формулируйте свои хотелки
Байт
Эксперт C
15537 / 9879 / 1484
Регистрация: 24.12.2010
Сообщений: 18,478
06.04.2014, 15:17     Найти все числа в массиве которые заканчиваются на число 47 #9
rafull6, Такого
C++
1
ar[i][j]%100==-47
не будет никогда. Остаток от целочисленного деления всегда число неотрицательное
C++
1
2
3
4
5
6
for (int j=0; j<m; j++)
        {
             int x = ar[i][j];
             if (x < 0) x = -x;
             if((x%100)==47) cout<<ar[i][j]<<endl;
        }
Такое
C++
1
ar[i][j]%10==47
тоже бывает не часто.
Вспомните, что такое остаток от деления

Добавлено через 6 минут
stealzy,
C++
1
if ( (fmod( (n-47)/100 ) == 0) and (n!=0) )
А если n < 0? Не катит ваш код.
И при чем тут fmod? Числа-то целые. А при чем n!=0 ?
Цитата Сообщение от rafull6 Посмотреть сообщение
Хотя ваш способ выглядит более АККуратнО.
Можно просто "выглядит аккуратнее". Так вот, этот способ не выглядит НИКАК
rafull6
0 / 0 / 0
Регистрация: 22.02.2013
Сообщений: 32
06.04.2014, 15:20  [ТС]     Найти все числа в массиве которые заканчиваются на число 47 #10
Цитата Сообщение от stealzy Посмотреть сообщение
А зачем вы делите на 10, если вам нужны числа,
которые заканчиваются на число 47
а?
Точнее формулируйте свои хотелки
Прошу прощения. Виноват.



Байт,
Ваш вариант работает отлично! Спасибо за помощь
stealzy
0 / 0 / 0
Регистрация: 06.04.2014
Сообщений: 6
06.04.2014, 15:25     Найти все числа в массиве которые заканчиваются на число 47 #11
более окуратнее

Если вам надо просто включение числа 47, то:

C++
1
2
3
4
5
6
7
8
9
for (int j=0; j<m; j++)
        {
             int x = ar[i][j];
             if (x < 0) x = -x;
             for (int r=x; r>46; r=floor(r/10))
                  {
                       if((r%100)==47) cout<<ar[i][j]<<endl;
                  }
        }
Еще красивее было бы использовать regex
Байт
Эксперт C
15537 / 9879 / 1484
Регистрация: 24.12.2010
Сообщений: 18,478
06.04.2014, 15:31     Найти все числа в массиве которые заканчиваются на число 47 #12
stealzy,
C++
1
2
3
4
for (int r=x; r>46; r/=10)
{
if((r%100)==47) { cout<<ar[i][j]<<endl; break; }
}
А то 4747 выведется 2 раза. Хотя там условие -200, 200, но все-таки
И почему вы так настойчиво применяете операции для double к целым числам? Нет, ошибки тут не будет. Но некрасиво. Не окуратно
rafull6
0 / 0 / 0
Регистрация: 22.02.2013
Сообщений: 32
06.04.2014, 15:34  [ТС]     Найти все числа в массиве которые заканчиваются на число 47 #13
Можно уточнить еще один момент? Как вывести в консоль не просто найденые элементы а еще их индексы в массиве?

Пример:
147 2 5
2 - строка, 5 - столбец
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.04.2014, 15:41     Найти все числа в массиве которые заканчиваются на число 47
Еще ссылки по теме:

C++ Дан массив. Выберите из него все элементы, которые встречаются в массиве наибольшее число раз
Найти все числа диапазона, которые заканчиваются на любую парную цифру. C++
Вывести все слова, которые начинаются и заканчиваются на одну букву C++
C++ В строке символов найти все слова, которые начинаются и заканчиваются одинаковой буквой
Найти максимальное число в массиве и определить, сколько цифр числа делятся на число Z C++

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

Или воспользуйтесь поиском по форуму:
Байт
Эксперт C
15537 / 9879 / 1484
Регистрация: 24.12.2010
Сообщений: 18,478
06.04.2014, 15:41     Найти все числа в массиве которые заканчиваются на число 47 #14
Сообщение было отмечено автором темы, экспертом или модератором как ответ
C++
1
cout << "a=" << a[i][j] << " i=" i << " j=" << j << endl;
или
C++
1
cout << "a[" << i << "][" << j << "]=" << a[i][j] << endl;
Yandex
Объявления
06.04.2014, 15:41     Найти все числа в массиве которые заканчиваются на число 47
Ответ Создать тему
Опции темы

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