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

Объяснение кода листинга программы

  1. Включаем необходимые заголовочные файлы для работы сprintf и scanf, а также для работы с функциями C
  2. Объявляем функцию convFrom, которая принимает два целых числа в качестве аргументов - rFrom (результат от деления на которое мы хотим преобразовать число) и v (число, которое мы хотим преобразовать).
  3. Если v меньше rFrom, то возвращаем v без изменений.
  4. Если v больше или равно rFrom, то возвращаем результат преобразования числа v с использованием rFrom в качестве основания системы счисления (сначала выполняем деление на rFrom, затем берем остаток от деления, умножаем на rFrom и прибавляем остаток от деления).
  5. Объявляем функцию convTo, которая принимает два целых числа в качестве аргументов - rTo (результат от деления на которое мы хотим преобразовать число) и v (число, которое мы хотим преобразовать).
  6. Если v меньше rTo, то возвращаем v без изменений.
  7. Если v больше или равно rTo, то возвращаем результат преобразования числа v с использованием rTo в качестве основания системы счисления (сначала выполняем деление на rTo, затем берем остаток от деления, умножаем на 10 и прибавляем остаток от деления).
  8. В функции main() объявляем пять переменных типа int - A, B, AA, BB и R.
  9. С помощью функции scanf() считываем значения A и B с помощью клавиатуры.
  10. Вызываем функцию convFrom(), передавая в качестве аргументов 6 и A, затем вызываем функцию convFrom() с аргументами 4 и B.
  11. Вычисляем значение R как сумму квадратов AA и BB.
  12. Выводим значение R в двоичной системе счисления с помощью функции printf().
  13. Вызываем функцию convTo() с аргументами 7 и R.
  14. Выводим результат вызова функции convTo() в двоичной системе счисления с помощью функции printf().
  15. Используем функцию system() для приостановки выполнения программы до нажатия клавиши.
  16. Возвращаем 0, чтобы указать, что программа успешно завершилась.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

13   голосов , оценка 3.769 из 5
Похожие ответы