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

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

Восстановить пароль Регистрация
 
rafull6
0 / 0 / 0
Регистрация: 22.02.2013
Сообщений: 32
06.04.2014, 14:17     Найти все числа в массиве которые заканчиваются на число 47 #1
Помогите пожалуйста решить задачу:
Неоходимо найти все числа в массиве (диапазон случайных чисел от 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++ Найти все двузначные числа, которые при умножении на 2 заканчиваются на 8, а при умножении на 3 - на 4.
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
Сообщений: 241
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
а?
Точнее формулируйте свои хотелки
Байт
 Аватар для Байт
13955 / 8786 / 1222
Регистрация: 24.12.2010
Сообщений: 15,913
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
Байт
 Аватар для Байт
13955 / 8786 / 1222
Регистрация: 24.12.2010
Сообщений: 15,913
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++ В строке символов найти все слова, которые начинаются и заканчиваются одинаковой буквой

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

Или воспользуйтесь поиском по форуму:
Байт
 Аватар для Байт
13955 / 8786 / 1222
Регистрация: 24.12.2010
Сообщений: 15,913
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 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru