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