C++ 程式初探 III.

Slides:



Advertisements
Similar presentations
第一單元 建立java 程式.
Advertisements

第八章 互换的运用.
計算機程式語言實習課.
算法设计与分析 Algorithm Design and Analysis
第4章 数组 数组是由一定数目的同类元素顺序排列而成的结构类型数据 一个数组在内存占有一片连续的存储区域 数组名是存储空间的首地址
File Access 井民全製作.
高级语言程序设计 主讲人:陈玉华.
Visual C++ introduction
簡易C++除錯技巧 長庚大學機械系
資料大樓 --談指標與陣列 綠園.
函數(一) 自訂函數、遞迴函數 綠園.
2 C++ 程式概論 2.1 C++ 程式結構 程式註解 // 插入標題檔 #include 2-3
101北一女中 資訊選手培訓營 妳不可不了解的指標 Nan.
Java程式概觀.
C語言簡介 日期 : 2018/12/2.
Object-Oriented Programming in C++ 第一章 C++的初步知识
第12章 從C到C++語言 12-1 C++語言的基礎 12-2 C++語言的輸出與輸入 12-3 C++語言的動態記憶體配置
類別(class) 類別class與物件object.
QQ: 李祥 QQ: 欢迎多种方式的学习交流,祝大家学有所成.
第八章 文件 引述 输入输出流和文件概述 文件操作 流的格式化输出 程序举例 本章小节.
第3讲 C++程序控制结构 3.1 顺序结构 3.2 分支结构 3.3 循环结构 3.4 转向控制 3.5 综合案例分析.
Java 程式設計 講師:FrankLin.
JAVA 程式設計與資料結構 第四章 陣列、字串與數學物件.
切換Dev c++顯示語言 工具->環境選項(V)->介面->language (Chinese TW)
程式設計實習課(四) ----C 函數運用----
第一單元 建立java 程式.
陣列(Array).
分支宣告與程式設計 黃聰明 國立臺灣師範大學數學系
選擇性結構 if-else… switch-case 重複性結構 while… do-while… for…
第4讲 C++程序控制结构(二) 4.1 循环结构 4.2 转向控制 4.3 综合案例分析.
C++大学基础教程 第5章 数组 北京科技大学 信息基础科学系.
開始使用Visual C++.
C++语言程序设计 C++语言程序设计 第五章 函数 第十一组 C++语言程序设计.
第7章 输入/输出流 文件和I/O流概述 标准I/O流的对象及其成员函数 文件流.
JAVA 程式設計 資訊管理系 - 網路組.
4 條件選擇 4.1 程式基本結構 循序式結構 選擇式結構 重複式結構 4-3
第三章 C++的语句和简单的程序设计 主要内容:
第一章 程序设计和C语言 主讲人:高晓娟 计算机学院.
C++语言程序设计 C++语言程序设计 第三章 控制语句 第十一组 C++语言程序设计.
OOP Recitation Course Speaker: Liu Yu-Jiun Date: 2009/3/25.
1.2 C语言程序的结构与书写规则 一、 C语言程序的总体结构
Oop8 function函式.
基本IO.
向量 (vector) 就是典型的一維陣列,而更高維的矩陣,例如矩陣 (matrix) 和張量 (tensor) 則分別是二維和三維的陣列。
C程序设计.
C qsort.
第2章 基本数据及其运算 本章学习的目标: 1、掌握基本数据的各种表示,基本数据常数的书写方法;
Introduction to the C Programming Language
挑戰C++程式語言 ──第7章 輸入與輸出.
C/C++基礎程式設計班 C++: 物件的使用、參考、重載函式 講師:林業峻 CSIE, NTU 3/28, 2015.
陣列與結構.
第1章 C++面向对象程序设计要点 1.1 函数和函数参数 1.2 输入输出   1.3 类 1.4 抽象类型和模板.
挑戰C++程式語言 ──第9章 函數.
第四章 函数 丘志杰 电子科技大学 计算机学院 软件学院.
北一女中 資訊選手培訓營 妳不可不了解的指標 Nan.
選擇性結構 if-else… switch-case 重複性結構 while… do-while… for…
C++语言程序设计 C++语言程序设计 第十章 多态 第十一组 C++语言程序设计.
《数据结构与算法设计》第一部分 面向对象的C++程序设计基础.
第四章 陣列、指標與參考 4-1 物件陣列 4-2 使用物件指標 4-3 this指標 4-4 new 與 delete
第二章 数据类型、运算符和表达式 §2.1 数据与数据类型 §2.2 常量、变量和标准函数 §2.3 基本运算符及其表达式 目 录 上一章
Programming & Language Telling the computer what to do
All Sources Shortest Path The Floyd-Warshall Algorithm
第9章 C++程序设计初步 9.1 C++的特点 9.2 最简单的C++程序 9.3 C++的输入输出 9.4 函数的重载
變數與資料型態  綠園.
Array(陣列) Anny
資料!你家住哪裏? --談指標 綠園.
C語言程式設計 老師:謝孟諺 助教:楊斯竣.
第六章 复合数据类型 指针的声明与使用 数组的声明与使用 指针与数组的相互引用 字符串及相关库函数 new与delete
方法(Method) 函數.
InputStreamReader Console Scanner
Presentation transcript:

C++ 程式初探 III

C++ 程式 II – 大綱 陣列 副函式

陣列 int array [10] #include <iostream.h> int main(void) { 陣列型別 陣列 陣列大小 ; int array [10] #include <iostream.h> int main(void) { int a[10]={0}; //設定初始值為0 for(int i=0; i<10; i++) { a[i] = i+1 } system(“PAUSE”); return 0; a[0] a[1] a[2] a[3] a[4] a[5] a[6] a[7] a[8] a[9] 1 2 3 4 5 6 7 8 9 10 a[0] a[1] a[2] a[3] a[4] a[5] a[6] a[7] a[8] a[9]

2維陣列 int array [10] [11] ; 陣列型別 陣列 第一維大小 第二維大小 ; 陣列型別 陣列 第一維大小 第二維大小 ; int array [10] [11] ; #include <iostream.h> int main(void) { int array_a [2][3]; //設定大小 int array_b [2][3] = {{1, 2, 3}, {4, 5, 6}}; //初始化 int array_c [][] = {{1, 2, 3}, {4, 5, 6}}; //初始化設定大小 int array_d [2][3] = {0}; //初值為0 const int row = 2; const int col = 3; int array_e [row][col]; system(“PAUSE”); return 0; }

多維陣列 #include <iostream.h> int main(void) { int array_a [2][3][4]; //設定大小 //初始化 int array_b [2][3][2] = {{{0,1}, {2,3}, {4,5}}, {{6,7}, {8,9}, {10,11}}}; int array_c [2][3][2] = {0,1,2,3,4,5, 6,7,8,9,10,11}; system(“PAUSE”); return 0; }

練習 1 – 移動平均法 double a[7] = {0.2, 5.5, 9.9, 5.9, 1.6, 8.0, 5.1}; 利用移動平均法,計算每三個數字為一期的平均數。 0.2 5.5 9.9 5.9 1.6 8.0 5.1 a[0] a[1] a[2] a[3] a[4] a[5] a[6] (0.2+5.5+9.9)/3= 5.2 0.2 5.5 9.9 5.9 1.6 8.0 5.1 a[0] a[1] a[2] a[3] a[4] a[5] a[6] 5.2 7.1 5.8 5.167 4.9

陣列練習-找最大值 #include <iostream.h> int main(void) { int a[7] = {8,4,6,9,2,3,1}; int max = a[0]; //或-1e9 for(int i=1; i<n; i++) { if(a[i]>max) { max = a[i]; } cout<<“max = ”<<max<<endl; system(“PAUSE”); return 0; 8 4 6 9 2 3 1 a[0] a[1] a[2] a[3] a[4] a[5] a[6] max 8 4 6 9 2 3 1 8 8 4 6 9 2 3 1 8 8 4 6 9 2 3 1 8 8 4 6 9 2 3 1 9 8 4 6 9 2 3 1 9 8 4 6 9 2 3 1 9 8 4 6 9 2 3 1 9

練習 2 -氣泡排序法(1/2) max pos max pos 8 4 8 1 6 1 8 2 8 2 9 3 8 3 9 4 8 4 9 4 6 8 2 3 1 9 4 4 8 6 9 2 3 1 8 1 4 6 8 2 3 1 9 6 1 4 6 8 9 2 3 1 8 2 4 6 8 2 3 1 9 8 2 4 6 8 9 2 3 1 9 3 4 6 2 8 3 1 9 8 3 4 6 8 2 9 3 1 9 4 4 6 2 3 1 8 9 8 4 4 6 8 2 3 9 1 9 5 4 6 8 2 3 1 9 9 6 4 6 2 3 1 8 9 8 5 8

練習 2 -氣泡排序法(2/2) a[0] a[1] a[2] a[3] a[4] a[5] a[6] 4 6 8 2 3 1 9 9 6 4 6 2 3 1 8 9 8 5 4 2 3 1 6 8 9 6 4 2 3 1 4 6 8 9 4 3 2 1 3 4 6 8 9 3 2 1 2 3 4 6 8 9 2 1

練習 3 – 移除重複數字 Globe Logistic Lab. 2009 int array[10] = {1,1,1,3,3,4,5,5,5,6}; 將上述陣列元素中重複的移除,使得陣列Array中新 的陣列元素為 {1,3,4,5,6,0,0,0,0,0}; 允許使用額外的陣列宣告 宣告一個新的陣列b[10],將array中不重複的元素儲存至b中。 僅可使用同一陣列的空間 不額外宣告b[10],直接對array做判斷與運算。 Yuan Ze University 2009 Globe Logistic Lab. summer Revised

函式 int fun (int input) 回傳型別 函式名稱 (變數型態 變數名稱) int pow2(int num) { return num*num; } int pow(int n, int p) { int r = 1; for(int i = 0; i < p; i++) r *= n; return r;

函式 #include <iostream.h> int main(void) { int num = 0; int power = 0; cout << "輸入數值:”; cin >> num; cout << "輸入平方:”; cin >> power; cout << num <<" 平方:”<< pow2(num) << endl; cout << num <<" 的” << power << "次方:” cout<< pow(num, power)<< endl; system(“PAUSE”); return 0; }

函式 – 陣列引數 int fun (int ary[]) int fun (int ary[][3]) int max(int array[]) { int n=sizeof(array)/sizeof(a[0]); int max = a[0]; for(int i=1; i<n; i++) if(a[i]>max) max = a[i]; return max; } int fun(int array[][3]) { 回傳型別 函式名稱 (變數型態 變數名稱) int fun (int ary[]) int fun (int ary[][3])

函式– 陣列引數 void max(int array[]) { int n=sizeof(array)/sizeof(a[0]); int temp; for(int i=0; i<n-1; i++) if(a[i]>a[i+1]) { temp = a[i]; a[i] = a[i+1]; a[i+1] = a[i]; }

函式– 傳址 void Swap(int a, int b) { int temp = a; a = b; b = temp; } void max(int array[]) { int n=sizeof(array)/sizeof(a[0]); int temp; for(int i=0; i<n-1; i++) if(a[i]>a[i+1]) { Swap(a[i],a[i+1]); &

函式– 變數範圍(Scope)與生命週期 int n; void max(int array[]) { int n=sizeof(array)/sizeof(a[0]); int temp; for(int i=0; i<n-1; i++) if(a[i]>a[i+1]) { Swap(a[i],a[i+1]); } int main(){ int a[5]={5, 9, 8, 1, 6}; max(a); cout<<n<<endl; getchar(); return 0;

補充語法 – 條件運算子?: (a>b) ? a : b 函數 int max(int a, int b = 0) { 判斷式 ? 成立時變數 : 不成立時變數 (a>b) ? a : b 函數 int max(int a, int b = 0) { if(a>b) return a; else return b; } int max(int a, int b) { return a>b ? a : b void max(int a, int b) { cout<< a>b ? “a” : “b” int max = a>b ? a : “b” ; 變數型態需相等

#include<math.h> 補充 – 數學函式庫 #include<math.h> 方法 說明 ceil(x) 最小大於等於x的整數 pow(x, y) x的y次方 floor(x) 最大小於等於x的整數 sqrt(x) x開根號 fabs(x) 絕對值 tan(x) tangent of x exp(x) 指數e的x次方 sin(x) sine of x log(x) x的自然對數(e為底) cos(x) cosine of x log10(x) x的對數(10為底) fmod(x, y) 浮點數的x/y餘數

練習 3 Globe Logistic Lab. 2009 練習將氣泡排序法轉為函式。 (利用投影片9頁中,將最大值移至最後的概念) Yuan Ze University 2009 Globe Logistic Lab. summer Revised

練習 4 Globe Logistic Lab. 2009 假設此20個大小不同的面積記錄於陣列內(例如int area[20])。 同上次射飛鏢問題,但此次標靶有20個大小不同面積。 假設此20個大小不同的面積記錄於陣列內(例如int area[20])。 設計一個函式,每次呼叫會回傳射到面積index。 Yuan Ze University 2009 Globe Logistic Lab. summer Revised

檔案輸出與輸入 fstream.h ofstream fout(“fname.txt”); fout << var ; 函數標頭檔 fstream.h #include<fstream.h> //主函式 int main(void) { int number_a = 6; ofstream fout(“result.txt”); fout<<“number_a = ”; fout<<number_a; fout<<endl; system(“PAUSE”); return 0; //回傳0,程式結束 } 輸出類別 變數名稱 (檔名字串) ; ofstream fout(“fname.txt”); 變數名稱 運算子 變數名稱 ; fout << var ;

檔案輸入 fstream.h ifstream fout(“fname.txt”); fin >> var ; 函數標頭檔 fstream.h #include<fstream.h> //主函式 int main(void) { int number_a; ifstream fin(“infile.txt”); fin>>number_a; system(“PAUSE”); return 0; //回傳0,程式結束 } 輸出類別 變數名稱 (檔名字串) ; ifstream fout(“fname.txt”); 變數名稱 運算子 變數名稱 ; fin >> var ;

練習 5 Globe Logistic Lab. 2009 若有一檔案position.txt,其內容格式如右圖所示。 其中每一列有兩個數字,分別代表其位置(x, y),請讀取position.txt檔案資料,並計算每個座標點的距離矩陣(即任兩點間的距離,如下圖),並且輸出至螢幕上與DistMatrix.txt檔中。 Yuan Ze University 2009 Globe Logistic Lab. summer Revised

作業1 (Homework 1) 假設有一個扭蛋機,共有6種扭蛋,每種扭蛋有7個,利用程式模擬此扭蛋機,計算出要蒐集完六種扭蛋,平均需要轉幾次扭蛋機。