Остановка бесконечного цикла - C (СИ)
Формулировка задачи:
Проблема следующая: мне надо бесконечно зациклить первые N чисел некоторой последовательности, например последовательности Фибоначчи, и останавливать цикл нажатием на клавишу 0. И всё вроде бы работает, если число N не содержит нуля. Причём использовать 0 на вспомогательной клавиатуре нельзя. Как поправить код?
Или это вообще нереально реализовать?
#include <stdio.h> #include <locale.h> #include <windows.h> int func1(int N){ if(N == 1) { printf("0 \n"); } else if(N == 2){ printf("0 \n"); printf("1 \n"); } } int func2(int a, int b, int c, int N) { int i; printf("0 \n"); printf("1 \n"); for(i = 0; i < N-2; ++i){ c=a+b; a=b; b=c; printf("%d\n", c); } printf("\n"); } int main() { setlocale (LC_ALL, "Rus"); int a=0; int b=1; static int c; int N; int i; printf("Введите N="); scanf("%d", &N); while(!GetAsyncKeyState(0x30)) { func1(N); func2(a,b,c,N); } }
Решение задачи: «Остановка бесконечного цикла»
textual
Листинг программы
#include <stdio.h> #include <locale.h> #include <windows.h> int func1(int N){ if(N == 1) { printf("0 \n"); } else if(N == 2){ printf("0 \n"); printf("1 \n"); } } int func2(int a, int b, int c, int N) { int i; printf("0 \n"); printf("1 \n"); for(i = 0; i < N-2; ++i){ c=a+b; a=b; b=c; printf("%d\n", c); } printf("\n"); } int main() { setlocale (LC_ALL, "Rus"); int a=0; int b=1; static int c; int N; int i; printf("Ââåäèòå N="); scanf("%d", &N); GetAsyncKeyState(0x30); while(2 > 1) { func1(N); func2(a,b,c,N); if(GetAsyncKeyState(0x30)){ break; } } }
Объяснение кода листинга программы
- Включение необходимых заголовочных файлов:
, , . - Определение двух функций: func1, func2.
- Установка начальных значений переменных: a=0, b=1, c=0.
- Ввод числа N с клавиатуры с помощью функции scanf.
- Получение состояния клавиши
0
с помощью функции GetAsyncKeyState. - Запуск двух функций: func1, func2.
- Проверка состояния клавиши
0
в цикле while. - Выход из цикла при нажатии клавиши
0
.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д