Как остановить выполнение программы C ++ на Sublime Text 3 - PullRequest
0 голосов
/ 06 января 2019

Я попытался запустить программу на Sublime Text 3 с пользовательской сборкой. Я думаю, что я вошел в бесконечный цикл.

Я прочитал несколько других ответов о том, что Sublime Text 3 входит в бесконечный цикл. Но никто из них не отвечает на мой вопрос.

Программа находится в c++. Я ввожу текст из файла с именем input.in и выводлю на output.out. В коде нет ничего, что могло бы превратиться в потенциальный бесконечный цикл.

Я мог бы решить проблему, удалив output.out, а затем создать другой файл с тем же именем. Но я не думаю, что это единственный и не лучший путь. У кого-нибудь есть лучший метод.

Я пытался удалить все входные данные из input.in. Это только усугубило проблему. Программа начала записывать множество блоков 0000 0000 в output.out. После тысяч таких строк он начинает печатать буквенно-цифровые строки длиной 4 (которые также могут быть шестнадцатеричными числами, не вполне уверенными) Я уже пытался убить возвышенный текст из терминала. Но когда я снова открываю его, файл output.out все еще заполняется. Я тоже попробовал Cancel Build. Даже это не помогает.

Мой код

#include <stdio.h>
#include <cmath>
#include <bits/stdc++.h>
#define ll long long 
#define rep(a,b) for(int i = a; i<b; i++)
#define debug(s) cout<<s
using namespace std;

float err = 1e-7;
int main(){
    #ifndef ONLINE_JUDGE
        // for getting input from input.txt
        freopen("input.in", "r", stdin);
        // for writing output to output.txt
        freopen("output.out", "w", stdout);
    #endif
    int a;
    while(scanf("%d",&a) == 1){
        int ans = 0;
        vector<int> v1;
        std::vector<int> v2;
        for(int i = a+1;i<=2*a;i++){
            for(int j = i; j<100000000000; j++){
                //printf("checking for i = %d and j = %d\n", i,j);
                if(abs(1.0/a-1.0/j - 1.0/i)<err){
                    //arr.push_back("1/%d = 1/%d + 1/%d\n"+a+j+i) ;
                    v1.push_back(j);
                    v2.push_back(i);
                    ans++;
                    break;
                }
                if(1.0/j + 1.0/i < 1.0/a){
                    break;
                }
            }
        }



        printf("%d\n", ans);
        for(int i = 0; i<ans; i++){
            printf("1/%d = 1/%d + 1/%d\n",a,v1.at(i),v2.at(i));
        }
    }

}

Буду признателен за любую помощь.

РЕДАКТИРОВАТЬ: Я не беру ввод с терминала или небольшого поля, которое появляется в возвышенном тексте. Я беру информацию из файла, и это отличает проблему от предложенного дубликата. Другие методы, такие как отмена сборки, не помогают, что поможет задающему вопрос в предложенном дубликате

...