Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 07.04.2017, 20:33   #1
Vladkp
Пользователь
 
Регистрация: 05.10.2016
Сообщений: 24
По умолчанию Найти долю и остаток без операции деления - C++

1)Дано целое число A (> 0) и целое число B (> 0). Найти долю Q и остаток R от деления нацело
числа A на B (без использования операции деления): A = B · Q + R
2)Доработать алгоритм из предыдущего задания, с учетом знака чисел А и B.

Не могу понять 2-ое задание, что надо доработать? помогите

Код:
#include <iostream>
 
using namespace std;
int main() {
    setlocale(LC_ALL, "Russian");
    int a, b, main_sum(0), last_sum(0);
 
    cout << "Введите число а: ";
    cin >> a;
    cout << "Введите число б (б <= a):   ";
    cin >> b;
 
    for (int i(0); i <= a; i += b) {
        i != 0 ? main_sum++ : false;
    }
    last_sum = a - b * main_sum;
 
    cout << "Целых: " << main_sum << " - " << "Остаток: " << last_sum <<endl;
 
    system("pause");
}
Vladkp вне форума Ответить с цитированием
Старый 08.04.2017, 05:27   #2
jura_k
gamer
Участник клуба
 
Аватар для jura_k
 
Регистрация: 09.05.2015
Сообщений: 1,506
По умолчанию

Задача тут:
http://programmersforum.ru/showpost....5&postcount=53
Смотреть задачу номер 21.4.9.

Код:
   /*   21.4.9. Пусть компьютер способен выполнять только две арифметические
   операции - сложение и вычитание. Составить алгоритмы:
   а) умножения двух целых чисел;
   б) целочисленного деления двух чисел;
   в) получения остатка от целочисленного деления двух чисел.   */

   l = 0;
   for (m = 0; m < j; m++)  l += k;
   printf ("6. %i * %i = %i, ", j, k, l);
   l = 0;
   m = j;
   while (m >= k) {m -= k; l++;}
   printf ("%i / %i = %i, %i %% %i = %i.\n", j, k, l, j, k, m);
Я сделал только для положительных чисел. Для всех целых чисел есть два способа:
либо создавать разветвлённый алгоритм, учитывающий все возможные комбинации: +, 0, -;
либо решить задачу для положительных чисел, а потом присвоить знаки результатам в соответствии со знаками исходных данных.
Короче, морока. Вот я и не стал заморачиваться.
мой канал на Ютубе: youtube.com/@games-zz3ju/videos/
мой канал на Рутубе: rutube.ru/channel/31423139/videos/
В ожидании Кеши...
jura_k вне форума Ответить с цитированием
Старый 12.04.2017, 17:42   #3
alexzk
Форумчанин
 
Регистрация: 12.04.2017
Сообщений: 889
По умолчанию

Цитата:
Сообщение от Vladkp Посмотреть сообщение
1)Дано целое число A (> 0) и целое число B (> 0). Найти долю Q и остаток R от деления нацело
числа A на B (без использования операции деления): A = B · Q + R
2)Доработать алгоритм из предыдущего задания, с учетом знака чисел А и B.

Не могу понять 2-ое задание, что надо доработать? помогите

Код:
#include <iostream>
 
using namespace std;
int main() {
    setlocale(LC_ALL, "Russian");
    int a, b, main_sum(0), last_sum(0);
 
    cout << "Введите число а: ";
    cin >> a;
    cout << "Введите число б (б <= a):   ";
    cin >> b;
 
    for (int i(0); i <= a; i += b) {
        i != 0 ? main_sum++ : false;
    }
    last_sum = a - b * main_sum;
 
    cout << "Целых: " << main_sum << " - " << "Остаток: " << last_sum <<endl;
 
    system("pause");
}

Так, не?

Код:
#include <iostream>

int abs(int x)
{
   if (x < 0) x = -x;
   return x;
}

int sign(int x)
{
    if (x<0) x = -1;
    if (x > 0) x = 1;
    return x;
}
 
using namespace std;
int main() {
    setlocale(LC_ALL, "Russian");
    int a, b, main_sum(0), last_sum(0);
 
    cout << "Введите число а: ";
    cin >> a;
    cout << "Введите число б (б <= a):   ";
    cin >> b;

    int s = sign(a) * sign(b); //а умножение не запрещено
    a = abs(a); b = abs(b);

    for (int i(0); i <= a; i += b) {
        i != 0 ? main_sum++ : false;
    }
    last_sum = a - b * main_sum;
 
    cout << "Целых: " << main_sum * s<< " - " << "Остаток: " << last_sum <<endl;
 
    system("pause");
}
alexzk вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Без операции деления на 2 определить. Си nataqwest Помощь студентам 3 19.12.2014 23:06
правильно ли решена задача: Найти сумму всех элементов массива целых чисел, удовлетворяющих условию: остаток от деления .... Тишуня Паскаль, Turbo Pascal, PascalABC.NET 15 15.03.2014 14:38
Доделать задачу на assembler - четное число уменьшено в два раза без использования операции деления hodok93 Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 7 31.05.2012 14:00
Используя только операции сложения и вычитания, найти частное от деления нацело N на K, а также остаток Nipuh Паскаль, Turbo Pascal, PascalABC.NET 2 30.05.2011 13:52
Остаток от деления Memfis_nya Помощь студентам 23 26.09.2010 14:58