VC++2008でWindows Forms Applicationを作った

どーも.

僕の通っている学校では, 幾つかの実験科目があります.
今年の後学期から僕のクラスで始まった電気/電子工学実験では, 3ジャンル12タイトルの実験を班ごとに週替わりでやっていきます.

先週, 僕の班では第12章 Visual C++の基礎という, 嫌な予感しかしないタイトルの実験(というか実習)をやりました.
今回はその内容と僕なりの補足, 意見を書いていこうと思います.

– WARNING – WARNING – WARNING –

この記事には多大のVisual C++成分が含まれます.
耐性のない方はブラウザを閉じることをおすすめします.

主な演習内容

  • 与えられる開発環境はVisual C++ 2008 Express Edition
  • 演習0: 新規プロジェクトの作成
  • 演習1: FormにButtonを配置してMessageBox
  • 演習2: TextBoxとComboBoxを用いた簡易電卓の作成
  • 演習3: FormにButtonを16個配置して電卓の作成
  • 課題: オブジェクト指向プログラムをクラスとカプセル化の単語をふまえて説明せよ
  • 実験テキストの参考文献: 3週間完全マスター Visual C++ 6.0

尚, 以下に掲示するソースコードは出来る限り実験テキストのコードに従ったものです.
(変数名, アルゴリズム等)

Read More »

C/C++のプリプロセッサと#include

お久しぶりです.

まず, 7/30〜8/9の間, いろいろあって家族でアメリカに行ってきました.
旅行中の写真はflickrにあげているのでよかったらみてくださひ. 2014_America

さて, C/C++では必要なライブラリ等を読み込むときに#includeというワードを使いますね.
僕もつい最近までは何も気にせずそう書いていたのですが, 今年何度か学校の図書館から借りて読んでいたこの本
c++
この “10章 C++プロプロセッサ” , というかまぁCプリプロセッサの話題を読んでなんてこったいとなったので記事を書くことにしました.

Cプリプロセッサこわい

まず

#include <stdio.h>

int main(void) {
  // なんか処理

  return 0;
}

これをおまじないと教えられている方はこちらの記事などを先に読んでください.
C言語はこうやって教えてくれればいいなって思っただけ

Read More »

AtCoder Beginner Contest 011に挑戦してた

どーも

暇ってわけではなかったんですが, 昼間segmentation faultばっかり見てて辛かったので, 気分転換も兼ねてAtCoder Beginner Contestに初めて挑戦してみました.

Welcome to AtCoder Beginner Contest #011 - AtCoder Beginner Contest #011 | AtCoder

A - 来月は何月?

今月の月を表すN (1 <= N <= 12)が標準入力から与えられるので, 来月が何月かを出力する問題.

結果: AC http://abc011.contest.atcoder.jp/submissions/187088

#include <iostream>

int main() {
  int month;
  std::cin >> month;

  if (month < 12) {
    std::cout << month + 1 << std::endl;
  } else {
    std::cout << "1" << std::endl;
  }
}

入力された値が12より小さければ+1した値を表示, それ以外の時は1を出力しています.
予め入力される値の範囲はわかっているので細かい値のチェックは省いています.

B - 名前の確認

小文字と大文字が混ざった名前が入力されるので, 1文字目を大文字, それ以外を小文字に直して出力する問題.

結果: AC http://abc011.contest.atcoder.jp/submissions/187497

#include <iostream>

int main() {
  std::string name;
  std::cin >> name;

  std::string::iterator it = name.begin();

  if (*it >= 'a' && *it <= 'z') {
    *it -= 32;
  }

  ++it;

  for (; it != name.end(); ++it) {
    if (*it >= 'A' && *it <= 'Z') {
      *it += 32;
    }
  }

  std::cout << name << std::endl;
}

入力された名前をnameを代入し, そのイテレータitを作成.
10行目で1文字目が小文字だった場合は大文字に変換, 14行目でイテレータをひとつ進めた後, 残りの文字が大文字だったら小文字に変換して出力しています.

大文字小文字の変換はアスキーコードが云々を利用して+/-32していますが, 解説にもあるように'a' - 'A'のようにも書けますね……

C - 123引き算

ルールが少々複雑なのでリンク先参照.

結果: WA x 3

#include <iostream>

int main() {
  int num;
  int ng1, ng2, ng3;

  std::cin >> num;
  std::cin >> ng1;
  std::cin >> ng2;
  std::cin >> ng3;

  if (num == ng1 || num == ng2 || num == ng3) {
    std::cout << "NO" << std::endl;
    return 0;
  }

  for (int cnt = 100; cnt != 0; --cnt) {
    if (num == 0) {
      break;
    }

    if (((num - 3) != ng1 || (num - 3) != ng2 || (num - 3) != ng3) && ((num - 3) >= 0)) {
      num -= 3;
    } else if (((num - 2) != ng1 || (num - 2) != ng2 || (num - 2) != ng3) && ((num - 2) >= 0)) {
      num -= 2;
    } else if (((num - 1) != ng1 || (num - 1) != ng2 || (num - 1) != ng3) && ((num - 1) >= 0)) {
      num -= 1;
    } else {
      break;
    }
  }

  if (num != 0) {
    std::cout << "NO" << std::endl;
  } else {
    std::cout << "YES" << std::endl;
  }
}

うん, 焦りすぎた.
値や演算子間違えたまま提出しちゃったり, return 1;なんて書いちゃったからRuntime Error出てたりするし, そもそも条件式がアレすぎて機能してない部分もあるし.

一旦諦めD問題を考えていたりしたので結局AC取れませんでした.

D - 大ジャンプ

これもルールが少々複雑なのでリンク先参照.

結果: 未提出

#include <iostream>
#include <cmath>

int main() {
  int n;
  int d;
  int x, y;

  std::cin >> n >> d;
  std::cin >> x >> y;

  double myon = std::pow(4, n);

  for (int cnt = n; n > 0; --n) {
}

指定されただけの深度を探索する方法が書けなかった. うん, 何となくはわかるんだけどコードが思い浮かばず完全に手が止まってた.
関数の再帰なりでイケるんだろうけど….? うーん.
そういえばこんな感じに探索するプログラムは1度も書いた覚えがないなぁ……….

まとめ

あるごりずむ力なさすぎる(。>﹏<)

ABCは結構頻繁に行われているようなので次回も挑戦したい.

C言語はこうやって教えてくれればいいなって思っただけ

どーもです

プログラミングの教育で、よく “おまじない” って使われますよね.
例えばC言語なら

#include <stdio.h>

int main(void) {
  // なんか処理

  return 0;
}

みたいなのを “おまじない” と教えられ, 「難しいからスルーしましょうね」と流されるわけです.

これっておかしくないでしょうか. 上に挙げたコードだけでもかなり重要なことが書いてあるのに.
ってことで, 僕流に “こうやって教えればいいんじゃないか” ってことを思いついたので書いてみようと思います.

まぁ僕もプヨグヤムなんてパーペキねな人じゃないんで, 「あっ、そう。」な感じで見てもらえれば.

Read More »

テスト終わりました

どもですー

何とか今年度最初のテストが終わりました。
今日は寝坊で大変なことになりかけるというトラブルもありましたが、いつもよりは点取れた気がするのでまぁいいでしょう。

さて、テスト明けたので流行ってる例のアレ書きました。

くだらないですねw

ではではー