Применение функций в работе с последовательностями чисел (разные системы счисления) - 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, чтобы указать, что программа успешно завершилась.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д