Ошибка при использовании Clrscr - C (СИ)
Формулировка задачи:
Листинг программы
- #include <stdio.h>
- #include <math.h>
- #include<iostream>
- double SumD(int a)
- {
- double s=a;
- int i=0;
- while (a>0)
- {
- a/=10;
- i++;
- }
- a=s, s=0;
- while (a>0)
- {
- s+=pow(a%10,i);
- a/=10;
- }
- return s;
- }
- int main(void)
- {
- clrscr();
- setlocale(LC_CTYPE,"Russian");
- double a,b;
- printf("Ââåäèòå ГЈГ°Г*Г*èöû a ГЁ b: \n ");
- scanf("%d %d",&a,&b);
- int i=0;
- for (a=10;a<b;a++)
- {
- if (SumD(a)==a) i++;
- }
- printf("Êîëè÷åñòâî Г·ГЁГ±ГҐГ« Г*ðìñòðîГ*ГЈГ* Гў ГЁГ*òåðâГ*ëå: %d",i);
- return 0;
- }
Листинг программы
- clrscr();
Решение задачи: «Ошибка при использовании Clrscr»
textual
Листинг программы
- #include <stdio.h>
- #include <math.h>
- #include <locale>
- double SumD(int a)
- {
- double s = a;
- int i = 0;
- while (a > 0)
- {
- a /= 10;
- i++;
- }
- a = s;
- s = 0;
- while (a > 0)
- {
- s += pow(a % 10, (double)i);
- a /= 10;
- }
- return s;
- }
- int main(void)
- {
- system("cls");
- setlocale(LC_CTYPE,"Russian");
- double a, b;
- printf("Введите границы a и b: ");
- scanf("%lf %lf", &a, &b);
- int i = 0;
- for (; a < b; a++)
- {
- if (SumD(a) == a)
- {
- i++;
- printf("%d ", (int)a);
- }
- }
- printf("\nКоличество чисел армстронга в интервале: %d\n", i);
- system("pause");
- return 0;
- }
Объяснение кода листинга программы
- В функции
SumD
переменнаяs
инициализируется значениемa
. - Переменная
i
инициализируется значением0
. - Используется цикл
while
, чтобы разделить числоa
на сумму его цифр, увеличивая значение переменнойi
на каждой итерации. - Значение переменной
a
восстанавливается, а переменнаяs
обнуляется. - Используется цикл
while
, чтобы суммировать квадраты цифр числаa
, возведенные в степеньi
, и уменьшать значениеa
на каждой итерации. - В функции
main
вызывается функцияsystem(
cls)
, чтобы очистить консоль. - Устанавливается локальная настройка для русского языка с помощью
setlocale(LC_CTYPE,
Russian)
. - Пользователю предлагается ввести границы
a
иb
. - Переменная
i
инициализируется значением0
. - Используется цикл
for
, чтобы перебрать все числа в диапазоне отa
доb
. - Если функция
SumD
равна числуa
, то переменнаяi
увеличивается на1
, и числоa
выводится на консоль с помощьюprintf(
%d, (int)a)
. - После завершения цикла, выводится количество чисел армстронга в интервале с помощью
printf(
\nКоличество чисел армстронга в интервале: %d\n, i)
. - Вызывается функция
system(
pause)
, чтобы приостановить выполнение программы до тех пор, пока пользователь не нажмет клавишу. - Программа возвращает
0
, чтобы указать, что она успешно завершилась.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д