Может ли программа на С ++ иметь альтернативные результаты при каждом выполнении с одним и тем же вводом? - PullRequest
0 голосов
/ 29 марта 2020

Я подставил ошибку в вопрос.

Я получаю 2 результата чередования случайным образом (иногда это «KATE», а иногда «Little Deepu», даже если ввод одинаковый.

Может кто-нибудь объяснить мне, почему это происходит? Проблема с компилятором?

Я почти уверен, что набор команд с одинаковым вводом не может изменять свой вывод при каждом запуске.

#include <iostream>
using namespace std;
int main() 
{
  int n;
  cin>>n;




  for(int i=0;i<n;i++)
  {



    int N ,M;

    cin>>M>>N;


    int arr[N];
    int turn=-1;
    char win='D';
    for(int i=0;i<N;i++)
    {
      if(M>0)
      { 
        if(turn==-1)
        {
          M=M-arr[i];
          win='D';
        }
        else if(turn==1)
        {
          M=M-arr[i];
          win='K';
        }
      }
      else
        break;

      turn=turn*-1;
    }

    if(win=='K')
    {
      cout<<"Kate"<<endl;
    }
    else if(win=='D')
    {
      cout<<"Little Deepu"<<endl;
    }
  }

    return 0;
}

1 Ответ

0 голосов
/ 29 марта 2020

вы никогда не инициализируете arr , но вы используете его для выполнения M = M-arr [i]; поведение не определено

из этого, чтобы использовать массив с динамическим размером c не рекомендуется (ISO C ++ запрещает массив переменной длины), размещать его в куче

...