ウィジェットの作成方法(1)


皆さんは小さなプログラムがどのように作られたのか気になると思います.今期は、小さなプログラムでよく使われるコードと関数を勉強しましょう.もちろん、これらの関数は実測されているので、システムやコンパイラによって関数名が異なる可能性があります.CEは噴霧しないでください.また、本人の能力が強くなく、コンパイラがサポートされていないため、グラフィックプログラミングに関する内容はしばらく更新されません.つまり、現在、グラフィックに関する内容やマウスに関する内容をどのように作成するかは教えていませんので、ご了承ください.
システム:windowsコンパイラ:Dev-C++5.11ヘッダファイル:windows.h.
スクリーンをクリアする方法
スクリーンを空にするのは最もよく使われる関数の一つであるはずです.結局、各インタフェースはすべて1つのスクリーンに押し込めないでしょう.このとき,スクリーン関数が役に立つ.スクリーンクリア関数はsystem("cls");です.スクリーンを空にしたり、他のインタフェースにスペースを空けたりするのに特化しています.
プロセスを一時停止する方法
スクリーンを空にするのは役に立ちますが、情報を出力したばかりでスクリーンをクリアすることはできません.そうしないと何も見えませんよ.だから、私たちはまた1つの一時停止関数が必要で、使用者が続けて、スクリーンをクリアして、それから他の命令をします.この一時停止関数は、system("pause");を使用すると、「任意のキーを押して続行してください」という行がポップアップされ、キーを押した後、次の操作が行われます.
一時停止時間の設定方法
プロセスを一時停止するのはいいが、場合によっては使いにくい.例えば、「ロード中」の効果を考えてみると、l o a d i n g⋯⋯⋯⋯loadingcdotscdots loading⋯⋯⋯⋯⋯よりクールになるために、この点が一つ一つ現れることを望んでいるに違いありません.しかし、coutはスピードが速すぎて、system(pause);は美感を破壊しすぎます.どうしよう?これにはSleep関数が必要です.Sleep関数は、Sleep文自体に加えて();ですが、()に数字を記入すると、一時停止時間になります.しかし、注意しなければならないのは、この時間はミリ秒単位です.だから1秒停まるのはSleep(1000);で、1分停まるのはSleep(60000);です.
プロセスの記録方法
配列や構造体はみんな使ったことがあると思いますが、これらのものは今回のプロセスだけで有効で、再実行は役に立たず、ユーザー体験が悪くなります.どうやって解決しますか?これはファイル操作が必要です.ファイルの操作はみんなよく知られていないと信じています.NOIPなどの大規模な試合では、ファイルの操作が必要です.次の行freopen("xxx.in", "r", stdin);freopen("xxx.out", "w", stdout);を打つだけでファイルからデータを読み取ることができます.もちろん、プログラミングならxxx.txtがおすすめですが、outファイルからデータを読み込んだり、inファイルでデータを出力したり…どう見てもおかしいと思います.しかし、読み取りが終わったら、どうやってコンソールに戻るのでしょうか.ユーザーにinファイルとoutファイルでウィジェットを体験させることはできないでしょう.そこで、ファイル操作をオフにする必要があります.
ファイル操作をオフにする方法
ファイルを閉じる操作は簡単です.fclose(stdin);fclose(stdout);です.しかし、そうするとファイル操作がオフになっていることに気づきます.しかし、コンソールはまだ入力できませんね......そこで、コードを1行追加して、コンソールに戻る必要があります.
コンソールに戻る方法
実はコンソールに戻るコードはファイル操作と似ていて、freopenですが、今回はxxx.inxxx.outはありません.今回書くのはCONのうち、CONがコンソールです.具体的なコードはfreopen("CON", "r", stdin);freopen("CON", "w", stdout);です.ただし、f r e o p e n freopen freopenにはB U G BUGがありますので、freopen("CON", "w", stdout);の後にsystem("cls");を使用しないでください.そうしないと、結果は自負します.
システム時間の取得方法
タイマーを作ろうと思っている人もいると思いますが、出力+スクリーンクリアの時間はどうしても見当がつきません.時間が長くなるとずれがある.あるいは、カードを打つソフトウェアを編む必要がありますが、今回のカードを打つのと前回と同じ日かどうかはよく分かりません.この時、システムの時間がかかります.まず,ios::sync_with_stdio(false);と同様にシステム時間の関数も初期化するが,2行ある.具体的には、
SYSTEMTIME sys;
GetLocalTime(&sys);

そして、sys.wYearは現在の年であり、同様に、sys.wMonthは具体的な月であり、このように推定される.次はみんなに表を整理して、みんなは自分で対照することができます.
コード#コード#
表示される時間
sys.wYear

sys.wMonth

sys.wDay
日付
sys.wDayOfWeek
曜日
sys.wHour
何時
sys.wMinute
幾分
sys.wSecond
数秒
sys.wMillisecond
数ミリ秒(でも使えないようです)
乱数を求める方法
乱数を要求する場合はrand関数が必要です.初期化も欠かせない.初期化しないとCEにはなりませんが、求めた乱数はそんなにランダムではありません.1回目の数はランダムですが、2回目の得数は1回目とそっくりです.だから、このsrand(time(0));(もちろんsrand(time(NULL));と書く人もいます)を加えることをお勧めします.そして、乱数を求めるたびに、rand()を書けばOKです.実は、乱数は主に出題時のデータ生成に使われています.n≤100を規定していれば、n=rand()%100+1を書けばいいので、時間コストを大幅に削減できますが、出題できるdalaoたちはwhile(n>100) n=rand();を書くほど馬鹿ではないと思います.
時間が限られているので、まずこのいくつかの実用的な関数を共有します.詳細については、QwQの更新をお待ちください