授業日一覧

10月22日

  • 成績処理プログラム
//
//  成績処理プログラム: プログラミングIIの成績表の出力
//
//      file name : seiseki.cpp
//
//             written by N. Takeda (2000.4.26)
//             modified by Y. Matsunaga (2005.11.10)
//

#include  <iostream.h>
#include  <iomanip.h>

main()
{
   const  int Member_Max = 20 ;  // 受講生の人数

   int    prog2[Member_Max] ;    // 各受講生の成績

   // 成績処理プログラムの説明
   cout << endl ;     // 空行
   cout << "------ 成績処理プログラム --------" << endl ;
   cout << "プログラミングIIの成績を入力し、一覧表を出力します" << endl ;

   // 成績の入力
   for( int i = 0 ; i < Member_Max ; i++ ){
       cout << setw( 3 ) << i + 1 ;
       cout << " 人目の成績を入力して下さい >> " ;
       cin >> prog2[ i ] ;
   }

   // 成績表の出力
   cout << endl ;
   cout << " No. |  II" << endl ;      // 見出し行の表示
   cout << "-------------" << endl ; 
   for(  int i = 0 ; i < Member_Max ; i++ ){     // 受講生の成績表示
       cout << " " << setw( 3 ) << i + 1 << " |" ;        // 1列目の表示
       cout << "   " << setw( 3 ) << prog2[ i ] << endl ; // 2列目の表示
   }

   cout << "-------------" << endl ;

   return 0 ;
}

11月12日

アスキーコードを利用したプログラムの例

#include <iostream.h>

int main()
{
  char Bmoji;
  char Smoji;
  int offset;
  offset = 'A' - 'a';

  cout << "入力された大文字を小文字に変換します。" << endl;
  while(1){
    cout << "半角のアルファベット1文字を大文字で入力してください。>";
    cin >> Bmoji;
    if('A' <= Bmoji && Bmoji <= 'Z'){
        cout << "正しい入力を受け付けました。\n";
        Smoji = Bmoji - offset;
        cout << "小文字に変換した結果は、" << Smoji << "です。\n";
        cout << "これで終わります。" << endl;
        break;
    }
    cout << "不正な文字が入力されました。再度入力してください。\n";
  }
}

関数の使い方の例(プリントp2)

  • 注意:***の部分は、プリントを確認して正しいものを入れること。4か所あり。
//
//     add.cpp 関数の使い方の例
//                足し算する関数を作る
//
//        written by Naohiko Takeda (2000.5.23)

#include	<iostream.h>

***     // 足し算関数のプロトタイプ宣言

main()
{
   int x, y, result ;

   while( 1 ){
            cout << endl << "2つの整数を入力(ともに0で終了) >> " ;
            cin >> x >> y ;
       if( x == 0 && y == 0 ){
           cout << endl << "プログラムを終了します。" ;
	    break ;
	}
	***    // xとyの和を求める
                                            // 結果の表示
	cout << endl << x << " + " << y << " = " << result  ;
	cout << endl ;
   }
        return 0;
}

//	ad 整数の和を求める関数
//
//       int a, int b  和を求める2つの整数
//       int 2数の和
//

***   //関数宣言
{
   int  wa ;

   wa = a + b ;   // 和を求める
   ***   // 結果(2数の和)を返す
}

11月19日

例題のプログラム(1p)

  • 注意:***の部分は、自分で考えられるなら自分で、難しければプリントを見て入力すること。2か所あり。
  //  2つの整数値を与え、その商と余りを求める関数(値呼び出し版)のテスト
  //    註:  関数内では正しい結果が出るが、mainでは正しい結果が得られない
  //      composed by Naohiko Takeda (2000.5.31)
  //      modified by Takeyuki Takahashi(2007.11.14)
 
  #include  <iostream.h>
 
  ***     // 割り算関数のプロトタイプ宣言
 
  main()
  {
    int  x, y ;
    int  n = 0, d = 0 ;
          
      cout << "\n\n2つの整数の商と余りを求める関数のテストプログラム\n\n" ;
 
     for( ; ; ){				// 無限ループ
         cout << "2つの数を入力して下さい(ともに0で終了します) >> " ;
         cin >> x >> y ;
         if( x == 0 && y == 0 ) {              // x と y がともに0で終了
             break ;
          }
          ***              // 商・余りを計算する関数
 
          // 以下は、関数内で変更した引数の値が、main では変更されて
          // いないことを確認するために値の出力を行っている
          cout << "\nmainでの計算結果:\n" ;
          cout << x << " ÷ " << y << " = " ;
          cout << n << " … " <<  d <<  endl << endl ;
      }
      cout << "\nプログラムを終了します\n";
      return 0;
  }
  
  //  2つの整数値を与え、その商と余りを求める関数
  //    a:割られる数  (整数:入力)
  //    b:割る数      (整数:入力)
  //    shou:商      (整数値:  )
  //    amar:余り    (整数値:  )
  
  void  warizan ( int a, int b, int shou, int amari )
  {
      // 商と余りを求める
      shou  = a / b ;
      amari = a % b ;
      cout << "\nwarizan内での計算結果:\n" ;
      cout << a << " ÷ " << b << " = " ;
      cout << shou << " … " <<  amari <<  endl << endl ;
  }

局所変数の例(3p)

  #include <iostream.h>
 
  void   func( void ) ;
 
  main()
    {
       int   a = 20 ;
       cout << "main での a の値=" << a << endl ;
       func() ;
       cout << "main での a の値=" << a << endl ;
    }
  
  void   func( void )
    {
         int   a ;
  
          a = 10000 ;
          cout << "func での a の値=" << a << endl ;
    }

11月26日

例題プログラム(2p)

  • 先週の例題プログラム(1p)を参照引数に書き換えただけ。
  • ***の部分をプリントを見て修正すること。
  //  2つの整数値を与え、その商と余りを求める関数(参照呼び出し版)
  //      composed by Naohiko Takeda
  //          ver. 1.00.  2000.5.31.
 
   
  #include  <iostream.h>
 
  ***     // 割り算関数のプロトタイプ宣言
 
  main()
  {
    int  x, y ;
    int  n = 0, d = 0 ;
          
      cout << "\n\n2つの整数の商と余りを求める関数のテストプログラム\n\n" ;
 
     for( ; ; ){				// 無限ループ
         cout << "2つの数を入力して下さい(ともに0で終了します) >> " ;
         cin >> x >> y ;
         if( x == 0 && y == 0 ) {              // x と y がともに0で終了
             break ;
          }
          ***              // 商・余りを計算する関数
 
          // 以下は、関数内で変更した引数の値が、main では変更されて
          // いないことを確認するために値の出力を行っている
          cout << "\nmainでの計算結果:\n" ;
          cout << x << " ÷ " << y << " = " ;
          cout << n << " … " <<  d <<  endl << endl ;
      }
      cout << "\nプログラムを終了します\n";
      return 0;
  }
  
  //  2つの整数値を与え、その商と余りを求める関数
  //    a:   割られる数  (整数:***)
  //    b:   割る数         (整数:***)
  //    shou:   商          (整数値:***)
  //    amar:   余り      (整数値:***)
  
  void  warizan ( *** )      // 関数定義
  {
      // 商と余りを求める
      shou  = a / b ;
      amari = a % b ;
      cout << "\nwarizan内での計算結果:\n" ;
      cout << a << " ÷ " << b << " = " ;                  // 関数内での結果を印刷
      cout << shou << " … " <<  amari <<  endl << endl ;
  }

12月3日

1次元配列と関数の例(p1)

//  複数の整数値を入力する関数(1次元配列を用いる)
//
//      composed by Takeyuki Takahashi
//          ver. 1.00.  2007.12.1.
//

#include  <iostream.h>

void   in_data( *** ) ;     //配列を引数とする関数の宣言

main()
{
   int prog[5];
      
   cout << "\n\n複数の整数値を入力する関数のテストプログラム\n\n" ;

   in_data( *** );

   cout << "\n\n入力された値を表示します\n\n" ;
   
   for(int i = 0; i < 5; i++ ){
       cout << i+1 << " 番目の入力値 : " << prog[i] << endl;
   }
}

//  複数の整数値を入力する関数
//    tensu : 入力される数値  (整数の配列:***)

void in_data ( int *** )
{
  // 値を個数分入力する
   for(int i = 0; i < 5; i++ ){
     cout << i+1 << " 番目の整数を入力してください : ";
     cin  >> tensu[i];
   }
}

文字列と関数のプログラム例(p3)

//  文字列を複写する関数
//      composed by Takeyuki Takahashi
//          ver. 1.00.  2007.12.1.
//

#include  <iostream.h>

void   string_copy( *** ) ;

main()
{
   const  int  Max_Length = 80 ;   // 入力文字列の最大値  
   char in_char[Max_Length];          // 複写元文字列
   char out_char[Max_Length] = "" ;   // 複写先文字列

   cout << "\n\n文字列を複写する関数のテストプログラム\n\n" ;

   // 文字列の入力
   cout <<  "\n文字列を入力して下さい (英数字のみ) >> " ;
   cin.getline( *** ) ;

   // 複写前の状態
   cout << "\n複写元文字列:" << in_char << ":\n";
   cout << "\n複写先文字列:" << out_char << ":\n";

   string_copy( *** );

   cout << "\n\n複写後の状態を表示します\n\n" ;
   // 複写後の状態
   cout << "\n複写元文字列:" << in_char << ":\n";
   cout << "\n複写先文字列:" << out_char << ":\n";
}

//  文字列を複写する関数
//    in_c  : 複写元の文字列  (文字列:***)
//    out_c : 複写先の文字列  (文字列:***)

void string_copy ( *** )
{
   int i = 0;              // 文字列のカウンタ
   
   while(in_c[i] != '\0')  // 複写元文字列のNULL 文字まで,複写先文字列に複写する
   {
     out_c[i] = in_c[i];
     i++;
   }
}

12月10日

成績処理プログラムのモジュール分割

//
//  成績処理プログラム:プログラミング3教科の成績の出力
//
//      file name : seiseki4.cpp (2次元配列・文字列配列版)
//                         written by N. Takeda (2000.7.18)
//                         modified by T. Takahashi (2007.12.12)
//

#include  <iostream.h>
#include  <iomanip.h>

const  int Member_Max = 90 ;    // 受講生の人数
const  int Kyouka_Max = 3 ;     // 科目数
const  int Name_Len =  20 ;     // 名前の長さ

void   input_data( char [][Name_Len], int [][Kyouka_Max] ) ;  // 素点入力関数
void   calc_data( const int [][Kyouka_Max], int [], double [] ) ;   // 成績処理関数
void   disp_data( const char [][Name_Len], const int [][Kyouka_Max], const int [], const double [] ) ;                                         // 成績表表示関数

main()
{
    int    seiseki[Member_Max][Kyouka_Max] ;  // 3教科の成績
    char   name[Member_Max][Name_Len] ;       // 学生の氏名

    int      total[Member_Max] ;      // 各人の合計点
    double   ave[Member_Max] ;        // 各人の平均点

    // 成績処理プログラムの説明
    cout << "\n------ 成績処理プログラム --------\n\n" ;
    cout << "プログラミングの成績を入力し、一覧表を出力します\n" ;

    // 学生の氏名と成績の入力
    input_data( name, seiseki ) ;

    // 各個人の合計点と平均点を求める
    calc_data( seiseki, total, ave ) ;

    // 成績表の出力
    disp_data( name, seiseki, total, ave ) ;

    return 0 ;
}

// 素点入力関数
void input_data( char shimei[][Name_Len], int ten[][Kyouka_Max] )
{

}


// 成績処理関数
void  calc_data( const int ten[][Kyouka_Max], int gr[], double av[])
{

}

// 成績表表示関数
void  disp_data( const char shimei[][Name_Len], const int ten[][Kyouka_Max], const int gr[], const double av[])
{

}

最終課題

各課題についての補足

  • 課題3についてですが,これは置換対象となる文字列が含まれる文章があって,その文章に含まれる文字列1を文字列2に置換すると考えてください。前方一致,後方一致の意味については調べてみてください。

締め切りなど

  • 仕様書のチェック
    • 1/8(金)までにメールor直接OKをもらう
    • メールで送る場合は担当教員3名に送る
    • メールの件名は「pro2最終仕様」とする。
  • 面接
    • 1/28(月)〜3/8(金):最終の締め切りは変わる可能性があります。
    • 第1回面接の締め切り: 2/15(金)この日までに1回目の面接を受けてください。プログラムは実行可能な状態にすること。
    • 予約方法などの詳細は追って連絡します。

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2012-12-25 (火) 11:50:53 (1788d)