特定のタスクを実行するプログラムを c++ で作成しました。ユーザーは、どれを実行するかを選択します。最初に、プログラムはユーザーが選択したすべてのタスクを実行しますが、ユーザーが指定した時間 (秒単位) だけ待機して、特定のタスクを再度実行します。タスクの待機時間は異なる場合があります。
私のコンピューターでは正常に動作しますが、実行可能ファイルを誰かに渡したところ、彼は最初に選択したタスク (タスク 3 を選択しただけ) を実行すると言いましたが、待機時間が終了した後でも実行されます。なし。問題の原因がわかりません。使用しているのと同じ .exe ファイルであり、コンピューターで正常に動作します。動作は同じはずですが、何らかの理由でそうではありません。
msvc 2012 を使用しました。はい、ユーザーは Visual C++ Redistributable を持っています。
#include "stdafx.h"
#include <Windows.h>
#include <iostream>
using namespace std;
int GetLowestWaitingTime(int* a)
int main()
{
    int WaitingTime[3];
    int TimeForTask[3];
    bool task[3];
    int i;
    cout<<"1=yes 0=no. Press enter after you have typed the chosen number" <<endl;
    for(i = 0; i < 3;i++){
        cout<<"Do you want task " <<i+1 <<" to be performed? ";
        cin >> task[i];
        if(task[i])
        {
            cout<<"Enter the waiting time for task " <<i+1 <<" in seconds: ";
            cin >> TimeForTask[i];
        }else{
            TimeForTask[i] = -1;
        }
        WaitingTime[i] = 0;
    }
    while(1)
    {
        for(i = 0; i < 3; i++){
            if(task[i] && WaitingTime[i] == 0)
            {
                //Do task i+1
                WaitingTime[i] = TimeForTask[i];
            }
        }
        SleepTime = GetLowestWaitingTime(WaitingTime);
        SendMessage(HWND_BROADCAST, WM_SYSCOMMAND, SC_MONITORPOWER, (LPARAM) 2); //turn off monitor
        Sleep(SleepTime*1000);
        for(i = 0; i < 3; i++)
        {
            if(WaitingTime[i] != -1){
                WaitingTime[i] -= SleepTime;
            }
        }
    }
    return 0;
}
int GetLowestWaitingTime(int* a)
{
    int l = -2;
    if(a[0] != -1 && ((a[0] < a[1]) || (a[1] == -1))){
        l = a[0];
    }else if(a[1] != -1){
        l = a[1];
    }
    if(l == -2){l = a[2];}else if(l > a[2] && a[2] != -1){l = a[2];}
    return l;
}