Применение функций в работе с последовательностями чисел (разные системы счисления) - C (СИ)

Узнай цену своей работы

Формулировка задачи:

И еще одна задачка , не хватает до полной лабы ( Условие : Заданы два числа А и B ,первое в 6-тиричной системе исчисления , второе в 4-ричной системе исчисления. Вычислить : A*A+A*B. Результат вывести в десятичной и в 7-ричной системах исчисления. Помогите пожалуйста , последняя лаба и закрою предмет )
Поднимаю тему

Решение задачи: «Применение функций в работе с последовательностями чисел (разные системы счисления)»

textual
Листинг программы
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. int convFrom(int rFrom, int v)
  5. {
  6.     if (v < rFrom)
  7.        return v;
  8.     else
  9.        return convFrom(rFrom, v/10)*rFrom+v%10;
  10. }  
  11.  
  12. int convTo(int rTo,int v)
  13. {
  14.    if (v < rTo)
  15.       return v;
  16.    else
  17.       return convTo(rTo,v/rTo)*10+v%rTo;  
  18. }
  19. int main(int argc, char *argv[])
  20. {
  21.  
  22.   int A,B,AA,BB,R;
  23.  
  24.   printf("A=");
  25.   scanf("%d",&A);
  26.  
  27.   printf("B=");
  28.   scanf("%d",&B);
  29.  
  30.   AA=convFrom(6,A);
  31.   BB=convFrom(4,B);
  32.  
  33.   R=AA*AA+BB*BB;
  34.    
  35.   printf("R(10)=%d\n",R);
  36.   printf("R(7)=%d\n",convTo(7,R));
  37.  
  38.   system("PAUSE"); 
  39.   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

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы