Применение функций в работе с последовательностями чисел (разные системы счисления) - C (СИ)
Формулировка задачи:
И еще одна задачка , не хватает до полной лабы (
Условие :
Заданы два числа А и B ,первое в 6-тиричной системе исчисления , второе в 4-ричной системе исчисления. Вычислить : A*A+A*B. Результат вывести в десятичной и в 7-ричной системах исчисления. Помогите пожалуйста , последняя лаба и закрою предмет )
Поднимаю тему
Решение задачи: «Применение функций в работе с последовательностями чисел (разные системы счисления)»
textual
Листинг программы
- #include <stdio.h>
- #include <stdlib.h>
- int convFrom(int rFrom, int v)
- {
- if (v < rFrom)
- return v;
- else
- return convFrom(rFrom, v/10)*rFrom+v%10;
- }
- int convTo(int rTo,int v)
- {
- if (v < rTo)
- return v;
- else
- return convTo(rTo,v/rTo)*10+v%rTo;
- }
- int main(int argc, char *argv[])
- {
- int A,B,AA,BB,R;
- printf("A=");
- scanf("%d",&A);
- printf("B=");
- scanf("%d",&B);
- AA=convFrom(6,A);
- BB=convFrom(4,B);
- R=AA*AA+BB*BB;
- printf("R(10)=%d\n",R);
- printf("R(7)=%d\n",convTo(7,R));
- system("PAUSE");
- return 0;
Объяснение кода листинга программы
- Включаем необходимые заголовочные файлы для работы сprintf и scanf, а также для работы с функциями C
- Объявляем функцию convFrom, которая принимает два целых числа в качестве аргументов - rFrom (результат от деления на которое мы хотим преобразовать число) и v (число, которое мы хотим преобразовать).
- Если v меньше rFrom, то возвращаем v без изменений.
- Если v больше или равно rFrom, то возвращаем результат преобразования числа v с использованием rFrom в качестве основания системы счисления (сначала выполняем деление на rFrom, затем берем остаток от деления, умножаем на rFrom и прибавляем остаток от деления).
- Объявляем функцию convTo, которая принимает два целых числа в качестве аргументов - rTo (результат от деления на которое мы хотим преобразовать число) и v (число, которое мы хотим преобразовать).
- Если v меньше rTo, то возвращаем v без изменений.
- Если v больше или равно rTo, то возвращаем результат преобразования числа v с использованием rTo в качестве основания системы счисления (сначала выполняем деление на rTo, затем берем остаток от деления, умножаем на 10 и прибавляем остаток от деления).
- В функции main() объявляем пять переменных типа int - A, B, AA, BB и R.
- С помощью функции scanf() считываем значения A и B с помощью клавиатуры.
- Вызываем функцию convFrom(), передавая в качестве аргументов 6 и A, затем вызываем функцию convFrom() с аргументами 4 и B.
- Вычисляем значение R как сумму квадратов AA и BB.
- Выводим значение R в двоичной системе счисления с помощью функции printf().
- Вызываем функцию convTo() с аргументами 7 и R.
- Выводим результат вызова функции convTo() в двоичной системе счисления с помощью функции printf().
- Используем функцию system() для приостановки выполнения программы до нажатия клавиши.
- Возвращаем 0, чтобы указать, что программа успешно завершилась.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д