Остановка бесконечного цикла - 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;
        } 
    }
}

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

  1. Включение необходимых заголовочных файлов: , , .
  2. Определение двух функций: func1, func2.
  3. Установка начальных значений переменных: a=0, b=1, c=0.
  4. Ввод числа N с клавиатуры с помощью функции scanf.
  5. Получение состояния клавиши 0 с помощью функции GetAsyncKeyState.
  6. Запуск двух функций: func1, func2.
  7. Проверка состояния клавиши 0 в цикле while.
  8. Выход из цикла при нажатии клавиши 0.

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


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

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

11   голосов , оценка 4 из 5