基礎プログラミング2015

Similar documents
基礎プログラミング2015

ポインタ変数

ポインタ変数

ポインタ変数

* ライブラリ関数 islower(),toupper() を使ったプログラム 1 /* 2 Program : trupper.c 3 Student-ID : K 4 Author : TOUME, Kouta 5 Comments : Used Library function i

Java Scriptプログラミング入門 3.6~ 茨城大学工学部情報工学科 08T4018Y 小幡智裕

Microsoft Word - no103.docx

PowerPoint プレゼンテーション

2 ASCII コードと文字型変数 2-1 ASCII コード 文字 コードコードコードコードコードコードコードコード文字文字文字文字文字文字文字 10 進 10 進 10 進 10 進 10 進 10 進 10 進 10 進 0 16 SP P 80 ` 96 p 112

Taro-ファイル処理(公開版).jtd

ポインタ変数

Microsoft PowerPoint - prog03.ppt

ファイル入出力

文字列 2 前回の授業ではコンピュータ内部での文字の取り扱い 文字型の変数 文字型変数への代入方法などを学習した 今回は 前回に引き続き 文字処理を学習する 内容は 標準入出力 ( キーボード ディスプレイ ) での文字処理 文字のファイル処理 文字を取り扱うライブラリ関数である 標準入出力 Lin

ファイル入出力

PowerPoint プレゼンテーション

ポインタ変数

本チュートリアルについて 14 部構成 比較的簡単なトピックから 各回 プログラミング言語 任意 チュートリアルで 新しい内容 宿題 プログラミング演習 次の週 結果について発表 もしくは話し合いをする スライドは Python で Python, C++, Java, Perl についての質問い答

Java プログラミング Ⅰ 3 回目変数 変数 変 数 一時的に値を記憶させておく機能型 ( データ型 ) と識別子をもつ 2 型 ( データ型 ) 変数の種類型に応じて記憶できる値の種類や範囲が決まる 型 値の種類 値の範囲 boolean 真偽値 true / false char 2バイト文

Microsoft Word - no15.docx

プログラミング演習 土曜日(Q組)

基礎プログラミング2015

新版 明解C++入門編

文字の装飾 / 配置について 文字の装飾 ( ボールド / イタリック / アンダーライン等 ) 網掛けは行わないでください 背景色は バーコード部分とのコントラストが低下する色を避けてください 文字の回転を行う場合 回転角度は 90 度 180 度 270 度以外は指定しないでください 文字間隔の

Java講座

プログラミング基礎

ソフトゼミC 第二回 C++の基礎

2006年10月5日(木)実施

Microsoft PowerPoint - ruby_instruction.ppt

gengo1-6

メソッドのまとめ

基礎プログラミング2015

GEC-Java

Microsoft PowerPoint - 5Chap15.ppt

Prog1_2nd

_unix_text_command.pptx

データ構造

テキスト処理第 2 回 田中哲産業技術総合研究所情報技術研究部門 akira/textprocess/

Microsoft PowerPoint - 第3回目.ppt [互換モード]

フィルタとは

ファイル操作

文字列操作と正規表現

Prog1_12th

ソフトウェア基礎 Ⅰ Report#2 提出日 : 2009 年 8 月 11 日 所属 : 工学部情報工学科 学籍番号 : K 氏名 : 當銘孔太

デジタル表現論・第4回

設問 println はそこで指定されている内容を出力して改行するものである. 一方,print は内容を出力して改行しないものである. 下記のプログラムそれぞれについて出力結果がどうなるか回答せよ. 下記のプログラム - を実行すると, fms という文字列が 回表示される. プログラム - vo

Prog1_6th

Cプログラミング1(再) 第2回

piyo rtfd

プログラミング実習I

Microsoft PowerPoint - CproNt02.ppt [互換モード]

Microsoft PowerPoint - kougi6.ppt

Report#2.docx

基礎情報処理 I (文字型)

JavaプログラミングⅠ

解きながら学ぶC++入門編

<4D F736F F D2091E F196E291E889F090E C4816A82CC838C E646F6378>

Prog1_3rd

Microsoft Word - no11.docx

計算機プログラミング

JavaプログラミングⅠ

slide5.pptx

書式に示すように表示したい文字列をダブルクォーテーション (") の間に書けば良い ダブルクォーテーションで囲まれた文字列は 文字列リテラル と呼ばれる プログラム中では以下のように用いる プログラム例 1 printf(" 情報処理基礎 "); printf("c 言語の練習 "); printf

JavaプログラミングⅠ

明解C++

解答編 第 9 章文字データの取り扱い 演習問題 9.1 文法事項 1 ) コンピュータにおける 文字データの取り扱いについて説明しなさい コンピュータでは 文字に整数の番号を割り当てて ( コード化して ) 文字コードとして扱います 実際に用いられる文字コードとして ASCII コード EUC コ

練習&演習問題

とても使いやすい Boost の serialization

Microsoft Word - Training10_プリプロセッサ.docx

PowerPoint プレゼンテーション - 物理学情報処理演習

第12回 モナドパーサ

※ ポイント ※

char int float double の変数型はそれぞれ 文字あるいは小さな整数 整数 実数 より精度の高い ( 数値のより大きい より小さい ) 実数 を扱う時に用いる 備考 : 基本型の説明に示した 浮動小数点 とは数値を指数表現で表す方法である 例えば は指数表現で 3 書く

Microsoft PowerPoint - prog03.ppt

Microsoft PowerPoint pptx

Java プログラミング Ⅰ 3 回目変 数 今日の講義講義で学ぶ内容 変数とは 変数の使い方 キーボード入力の仕方 変 数 変 数 一時的に値を記憶させておく機能 変数は 型 ( データ型 ) と識別子をもちます 2 型 ( データ型 ) 変数に記憶する値の種類変数の型は 記憶できる値の種類と範囲

図 1 アドインに登録する メニューバーに [BAYONET] が追加されます 登録 : Excel 2007, 2010, 2013 の場合 1 Excel ブックを開きます Excel2007 の場合 左上の Office マークをクリックします 図 2 Office マーク (Excel 20

1. はじめに 1. はじめに 1-1. KaPPA-Average とは KaPPA-Average は KaPPA-View( でマイクロアレイデータを解析する際に便利なデータ変換ソフトウェアです 一般のマイクロアレイでは 一つのプロー


Microsoft Word - no204.docx

プレポスト【解説】

このルールをそのまま正規表現として書くと 下記のようになります ^A[0-9]{2}00[0-9]{3}([0-9]{2})?$ ちょっと難しく見えるかもしれませんが 下記のような対応になっています 最初 固定 年度 固定 通番 ( 枝番 ) 最後 ルール "A" 数字 2 桁 0 を 2 桁 数字

Microsoft Word - Javacc.docx

PowerPoint プレゼンテーション

PYTHON 資料 電脳梁山泊烏賊塾 PYTHON 入門 文字列 文字列リテラル プログラムの中で文字列を表す方法は幾つか有るが 基本的な方法は下記の 2 種で有る 対象と成る文字の集まりをダブルクオーテーション ( " ) で囲うか シングルクオーテーション ( ' ) で囲う PYTHON3 "

Microsoft Word - Cプログラミング演習(8)

C 資料 電脳梁山泊烏賊塾 ファイルの入出力 C++ のファイル入出力 初めに 此処では Visual Studio 2017 を起動し 新しいプロジェクトで Visual C++ の Windows デスクトップを選択し Windows コンソールアプリケーションを作成する 使用クラ

オブジェクト指向プログラミング・同演習 5月21日演習課題

Functional Programming

JavaプログラミングⅠ

PowerPoint プレゼンテーション - 物理学情報処理演習

02: 変数と標準入出力

JavaプログラミングⅠ

コマンドラインから受け取った文字列の大文字と小文字を変換するプログラムを作成せよ 入力は 1 バイトの表示文字とし アルファベット文字以外は変換しない 1. #include <stdio.h> 2. #include <ctype.h> /*troupper,islower,isupper,tol

02: 変数と標準入出力

PowerPoint プレゼンテーション

デジタル表現論・第6回

untitled

PowerPoint プレゼンテーション

Microsoft PowerPoint - 14th.ppt [互換モード]

Transcription:

応用プログラミング 第 5 回 テキスト入力処理 2017 年 10 月 18 日 ( 水 )

第 7 章 テキスト入力処理

1 文字ずつの処理 (P.58) char 型などに入力する cin >> x や fin >> x はホワイトスペースが読み飛ばされる仕様 ホワイトスペース : スペース ( 空白 ), Tab( タブ ), 改行 // sample.cpp char ch; while(cin >> ch) cout << ch; // 実行例 This is a test. Thisisatest. スペースが読み飛ばされている

1 文字ずつの処理 (P.58) どうすれば飛ばされないようになる? <iomanip> ヘッダに入っている noskipws を使用 // sample2.cpp #include<iostream> #include<iomanip> using namespace std; char ch; // 実行例 This is a test. This is a test. スペースが読み飛ばされない! while(cin >> noskipws >>ch) cout << ch;

ホワイトスペースの明示的な読み飛ばし (P.62) 左のテキストファイルを右のように作成し直したい 全てのホワイトスペースを飛ばしてしまうと, 改行などもされなくなってしまう // sample.txt abc xyz ABC XYZ // result.txt abc xyz ABC XYZ cin >> ws を用いて行頭の空白だけ読み飛ばす!

ホワイトスペースの明示的な読み飛ばし (P.62) // sample3.cpp #include<iostream> #include<iomanip> using namespace std; cin >> ws; char ch; while(cin >> noskipws >> ch){ cout << ch; if(ch == n ) cin >> ws;

入力文字のカウント (P.59) ホワイトスペースを含めずにカウント // count1.cpp #include<iostream> using namespace std; int n = 0; char ch; while(cin >> ch){ n++; cout << n << endl; // 実行例 This is a test. (ctrl+d) 12

入力文字のカウント (P.59) ホワイトスペースを含めてカウント // count2.cpp #include<iostream> #include<iomanip> using namespace std; int n = 0; char ch; while(cin >> noskipws >> ch){ n++; cout << n << endl; // 実行例 This is a test. (ctrl+d) 16

入力行のカウント (P.59) 何行入力されたのかのカウントにも noskipws を用いる // count2.cpp #include<iostream> #include<iomanip> using namespace std; int n = 0; char ch; while(cin >> noskipws >> ch){ if(ch == n ) n++; cout << n << endl; // 実行例 This is first. Second. Third. Fourth. (ctrl+d) 4

単語のカウント (P.60) これまでは文字数を数えていた T h i s _ i s _ a _ 1 2 文中に含まれる単語数を数えたい T h i s _ i s _ a _ 1 2 * どうすれば単語ごとにカウントできる?

単語のカウント (P.60) ホワイトスペースで区切って考えればよい! T h i s _ i s _ a _ : カウント +1( 単語の開始 ) : 区切り ( 単語の終り ) 単語が始まってから, ホワイトスペースまでを 1 単語としてカウントしていく

単語のカウント (P.60) int n = 0, char ch, bool flag = false; while(cin >> noskipws >> ch){ if(ch == ch == n ch == t ){ flag = false; else if(!flag){ flag = true; n++; cout << n << endl;

string 型による単語のカウント (P.60) string 型変数は, WS を区切りとして, 別の文字列と判断してくれる int n = 0; string str; while(cin >> str){ n++; cout << n << endl; // 実行例 This is a test. Count words. (ctrl+d) 6

文字の変換 (P.61) 文字の変換はASCIIコードを用いて行う 各文字のASCIIコードを覚える必要はない! 様々な文字変換 大文字 小文字 : ch = ch A + a 小文字 大文字 : ch = ch a + A char 型で読み込んだ数字文字を数値として扱う > ch 0 とすれば, 0-9 の数字が0-9として扱える 3 文字ずらし変換 (a d, b e,, y b, z c) > ch = (ch a + 3) % 26 + a

文字の変換 (P.61) char ch; while(cin >> noskipws >> ch){ if( a <= ch && ch <= z ){ ch = ch a + A ; // 小文字 大文字 cout << ch; // 実行例 This is a test. Change words. (ctrl+d) THIS IS A TEST. CHANGE WORDS.

string 型による文字変換 (P.63) // 各単語の先頭を大文字にする string str; while(cin >> str){ if( a <= str[0] && str[0] <= z ){ str[0] = str[0] a + A ; cout << str; string 型に文を入力するときは, WS を区切りに別の文字列として判断してくれる // 実行例 can i help you? (ctrl+d) Can I Help You?

1 行ずつの処理 :getline()(p.64) これまで, 文が入力されると 1 文字 or 1 単語ずつ読み込んでいた 入力を一行ずつ読み込む方法として, getline() 関数を用いる getline( 第 1 引数, 第 2 引数 ) 第 1 引数 :cin, ifstream のオブジェクト (fin 等 ) 第 2 引数 :string 型の変数 ( 正確には, string クラスのオブジェクト ) ( 例 ) getline(cin, str), getline(fin, str), etc * つまり, getline() 関数の引数は入力と string 型変数の組 入力を 1 行読み込み, 第 2 引数で設定した変数に格納する

1 行ずつの処理 :getline()(p.64) // 入力された行数をカウントするプログラム string line; int count = 0; while(getline(cin, line)){ count++; cout << #line = << count << endl; // 実行例 This is a test. That is a cat. It is a post. (ctrl+d) #line = 3 *getline() は何も指定しなければ, 改行記号 n ごとに区切る

区切り文字ごとの処理 (P.65) * 改行記号 n 以外で区切るように指定することもできる string s; while(getline(cin, s,, )){ cout << s << endl; // 実行例 Cat, dog, rabbit and cow (ctrl+d) Cat dog rabbit and cow getline(cin, s, 文字 ) 指定した文字を区切りにして, s にそこまでの文字列を保存.

行の途中から行末までの入力 (P.65) *getline() 関数は関数が呼ばれた地点から区切りまでの 入力を 1 行として読み込む int a; string s; while(cin >> a && getline(cin, s)){ cout << s << endl; // 実行例 20 chocolates 300 handles (ctrl+d) chocolates handles

部分文字列の検出 :find()(p.66) find(string) * 引数に指定した文字列が変数 ( オブジェクト ) が保持する文字列に含まれているのかどうかを判定する 存在する ( 最初の文字列の ) 先頭からの文字位置を返す 存在しない string::npos という特殊な値を返す * 例 :string s = I will get up early in the morning. s.find( get ) 7 を返す s.find( I ) 0 を返す s.find( e ) 8 を返す s.find( them ) string::npos が返ってくる

部分文字列の検出 :find()(p.66) string s; string line = I have two cars. ; while(cout << Input a search word. && cin >> s){ if(line.find(s)!= string::npos) cout << Found! << endl; else cout << Not Found! << endl;

練習問題 問題. a~z が適当な順で何行か並んでいるファイル (data.txt) の中で指定したアルファベットの小文字が各行の何文字目にあるかを全て出力するプログラムを作成せよ. ただし, 各行には 26 種類すべての小文字アルファベットが現れており, また各行内では重複はないものとする. // data.txt の中身 abcdefghijklmnopqrstuvwxyz nopqbcdefghaijklmrwxyzstuv zyxwvutsrqponmlkjihgfedcba vutsrqnmlkzwjicbayxpohgfed // 実行例検索文字 : a 1 行目 1 文字目 2 行目 12 文字目 3 行目 26 文字目 4 行目 17 文字目