ホーム » スタッフ » 斉藤徹 » 講義録 » 情報構造論 » 情報構造論のレポート課題

2024年5月
 1234
567891011
12131415161718
19202122232425
262728293031  

検索・リンク

情報構造論のレポート課題

情報構造論の前期中間までのレポートとして、自分の理解力に応じて下記課題の1つを選んで回答せよ。ポインタや文字列操作の練習を目的とするため、言語はC言語,C++にて行うこと。

  1. 入力の中の特定文字列ABCを、別の文字列DEFGに変換して出力したい。ABCやDEFGの文字列は最初に与える。
    最初の2行で、変換元ABCと変換後DEFGで与えられ、その後に複数行の入力が続くものとする。

    • 変換元,変換後の文字列は、空白を含まない50文字以内の文字。複数行の入力は10文字以内、1行は200文字以内とする。
    • 入力例と変換例
    orange  (変換元)
    apple   (変換後)
    I like an orange.
    He likes a pineapple.
    
    I like an apple.
    He likes a pineapple.
  2.  URLが複数行入力として与えられる。最初にすべての入力行を配列に格納した後、URLの中のドメイン名部分は大文字小文字の区別がないので、ドメイン名部分だけ小文字に修正し、その結果を表示せよ。
    • URLは10行以内、URLの1行は200文字以内とする。
    • 変換例
      • http://HOGE.jp/FUGA.html → http://hoge.jp/FUGA.html
      • https://www.Google.co.jp/search?q=FOO+BAR
        → https://www.google.co.jp/search?q=FOO+BAR

  3. プログラムのソースコードが入力として与えられる。最初にすべての入力行を配列に格納した後、プログラム中のキーワード(int, char, if, while, など)だけを大文字に変換して出力するプログラムを作成せよ。(難易度高いので注意)
    • プログラムは10行以内。1行は200文字以内とする。
    • 変換例
      • int a = 123 ; → INT a = 123 ;
      • for( int form = 0 ; form < 10 ; form++ ) printf( “int = %d\n” , form ) ; // if
        → FOR( INT form = 0 ; form < 10 ; form++ ) printf( int = %d\n” , form ) ; // if

        • formはキーワードではない。
        • “int…”は、C言語の文字列内なのでキーワードではない。(オプション)
        • /*…*/ , // のコメント内の if はキーワードではない。(オプション)

レポートには、下記の点を記載してあること。

  • プログラムリスト
  • 説明(コメントや解説)
  • 動作検証とその結果
  • 考察(自分のプログラムの問題点)

C言語での文字列処理に便利な標準関数<string.h>

  • strlen( str ) : 文字列の長さを数える。文字列末尾文字NUL ‘\0’ までの文字数
  • strcpy( dest , src ) : 文字列をコピー。
  • strcmp( s1 , s2 ) : 文字列を比較(辞書順で s1<s2 なら負の値, s1=s2 なら0, s1>s2 なら正の値を返す)
  • strncmp( s1 , s2 , n ) : 文字列を指定した長さ n までで比較。

文字判定に便利な標準関数<ctype.h>

  • isalpha( c ) : 文字 c が英字(A-Z or a-z)、isdigit( c ) : 文字 c が数字(0-9)

レポートの提出先はこちら