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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 14, средняя оценка - 4.86
solomid
1 / 1 / 0
Регистрация: 22.09.2011
Сообщений: 86
#1

цикл и число по модулю - C++

10.11.2011, 17:31. Просмотров 1847. Ответов 8
Метки нет (Все метки)

проблема в следующем: есть отрицательное число, допустим -124, -124 mod 22 = 8, но если использовать стандартное взятие по модулю
C++
1
int i = -124%22;
то получаем -10. это как-то странно считает он, надо же как -124 + 22 + 22...и до тех пор пока не получится положительное число.
дак вот как это сделать? я подумал что через цикл, типо прибавляет к -124 до тех пор пока не получится положительное, первое положительное и есть ответ. помогите этот цикл реализовать, или как-то по другому может возможно сделать?

Добавлено через 57 минут
все сделал, можно закрывать.
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.11.2011, 17:31
Здравствуйте! Я подобрал для вас темы с ответами на вопрос цикл и число по модулю (C++):

Дано натуральное число n и действительное число а, найти, используя цикл - C++
Дано натуральное число n и действительное число а, найти, используя цикл: ...

Дано вещественное число A и целое число N (> 0). Используя один цикл, вывести все целые степени числа A - C++
Дано вещественное число A и целое число N (> 0). Используя один цикл, вывести все целые степени числа A от 1 до N.

Максимальное нечетное число по модулю - C++
Не получается найти максимальное нечетное число по модулю. Вот эта функция выдает неверный результат int func3(int *a, int i) { int ...

как в С написать число по модулю - C++
1) как в С написать число по модулю... ну, например, надо решить уравнение, в котором например, переменная "х"=-2; |x|-5=... как это...

Одномерные массивы - самое большое по модулю число - C++
Доброе время суток! Ребята, задачка такая интересная, что крышу срывает!!! Описать массив типа double с количеством элементов 25. ...

Дан код, надо чтобы выводил не просто число, а по модулю - C++
Дан код, надо чтобы выводил не просто число, а по модулю, подскажите как сделать ? #include <stdio.h> #include <conio.h> ...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Thinker
Эксперт C++
4226 / 2200 / 150
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
10.11.2011, 17:39 #2
Вы правы, в математике остатки отрицательными не бывают, на этом и построена, в частности, теория чисел исходя из единственности разложения одного числа по модулю другого.
0
Paporotnik
383 / 227 / 7
Регистрация: 06.07.2011
Сообщений: 512
10.11.2011, 17:44 #3
а не проще было взять первое число по модулю и после этого посчитать остаток, нежели мучаться и что-то писать?)
0
solomid
1 / 1 / 0
Регистрация: 22.09.2011
Сообщений: 86
10.11.2011, 18:22  [ТС] #4
Цитата Сообщение от Paporotnik Посмотреть сообщение
а не проще было взять первое число по модулю и после этого посчитать остаток, нежели мучаться и что-то писать?)
не,так не получится(или у меня просто не получилось)
да я цикл уже организовал,работает безотказно вроде)
0
Thinker
Эксперт C++
4226 / 2200 / 150
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
10.11.2011, 18:29 #5
Цитата Сообщение от solomid Посмотреть сообщение
не,так не получится
abs(-124)%22
1
solomid
1 / 1 / 0
Регистрация: 22.09.2011
Сообщений: 86
10.11.2011, 19:28  [ТС] #6
я ущерб...знаю эту функцию с 1 класса...забыл о ней просто
0
Net_Wanderer
235 / 208 / 19
Регистрация: 08.06.2011
Сообщений: 467
10.11.2011, 19:40 #7
Цитата Сообщение от Thinker Посмотреть сообщение
abs(-124)%22
и получим 14, а ТС'y надо 8
Цитата Сообщение от solomid Посмотреть сообщение
-124 mod 22 = 8
1
solomid
1 / 1 / 0
Регистрация: 22.09.2011
Сообщений: 86
10.11.2011, 19:54  [ТС] #8
Цитата Сообщение от Net_Wanderer Посмотреть сообщение
abs(-124)%22
и получим 14, а ТС'y надо 8
Сообщение от solomid
-124 mod 22 = 8
у меня работает через abs
0
Thinker
Эксперт C++
4226 / 2200 / 150
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
10.11.2011, 20:07 #9
Цитата Сообщение от Net_Wanderer Посмотреть сообщение
и получим 14, а ТС'y надо 8
Вы правы, через abs не получить значение остатка в математическом смысле. Вот:

C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
long Mod(long a, long mod)
{
    if (a < 0)
        for(; a < 0; a += mod)
            ;
    else
        for(; a > mod; a -= mod)
            ;
    return a;
}
 
int main()
{
    printf("%ld\n", Mod(-124, 22));
    printf("%ld\n", Mod(124, 22));
    return 0;
}
переменная mod (модуль разложения) считается положительной (как в теории чисел)
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
10.11.2011, 20:07
Привет! Вот еще темы с ответами:

Вывести число соседних элементов массива различаются по модулю на порядок - C++
Задана последовательность вещественных чисел a1...aN. Вывести число таких пар (ai, ai+1), что ai и ai+1 различаются по модулю на порядок. ...

Вычислить максимальное по модулю число из последовательности действительных чисел, без использования массива - C++
Даны натуральные n, действительные числа a1..an. Получить max(|a1|,..,|an|)

В указанном диапазоне найти все числа, произведение цифр которых по модулю дает заданное число - C++
Пользователь вводит х, a, b. Из промежутка от a до b найти все числа, произведение цифр которых по модулю дает х.

Произведение элементов массива, расположенных между максимальным по модулю и минимальным по модулю элементами - C++
Определить массив A (m и n константы), заполнить его случайными числами и выполнить следующие вычисления. Результаты выполнения задания...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
10.11.2011, 20:07
Ответ Создать тему
Опции темы

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