double avg(int t[]);
int main() {
int test[5];
cout << "5人のテストの点数を入力してください。\n";
for(int i=0; i<5; i++){
cin >> test[i];
}
double ans = avg(test);
cout << "5人の平均点は" << ans << "点です。\n";
return 0;
}
double avg(int t[]){
double sum = 0;
for(int i=0; i<5; i++){
sum += t[i];
}
return sum/5;
}
ポインタを引数で渡すように良く書かれる
double avg(int* pT);
int main() {
int test[5];
cout << "5人のテストの点数を入力してください。\n";
for(int i=0; i<5; i++){
cin >> test[i];
}
double ans = avg(test);
cout << "5人の平均点は" << ans << "点です。\n";
return 0;
}
double avg(int* pT){
double sum = 0;
for(int i=0; i<5; i++){
sum += *(pT+i);
}
return sum/5;
}
$ g++ -o sample sample.cpp && ./sample
5人のテストの点数を入力してください。
33
12
14
12
11
5人の平均点は16.4点です。
### 文字列と配列
文字列は配列だけでなく、ポインタでも扱える
int main() {
char str[] = "Hello";
cout << str << "\n";
return 0;
}
int main() {
char* str = "Hello";
cout << str << "\n";
return 0;
}
$ g++ -o sample sample.cpp && ./sample
sample.cpp: In function ‘int main()’:
sample.cpp:6:17: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings]
6 | char* str = “Hello”;
| ^~~~~~~
Hello
int main() {
char str[] = "Hello";
cout << "Hello\n";
for(int i=0; str[i]!='\0'; i++){
cout << str[i] << '*';
}
cout << "\n";
return 0;
}
c++の文字列は必ず\0で終わる
### 文字列の標準ライブラリ
#include <iostream>
#include <cstring>
using namespace std;
int main() {
char str[100];
cout << "文字列(英数字)を入力してください。\n";
cin >> str;
cout << "文字列の長さは" << strlen(str) << "です。\n";
return 0;
}
strcatで文字列を連結する。strcpyは代入格納
int main() {
char str0[20];
char str1[10];
char str2[10];
strcpy(str1, "Hello");
strcpy(str2, "Goodbye");
strcpy(str0, str1);
strcat(str0, str2);
cout << "配列str1は" << str1 << "です。\n";
cout << "配列str2は" << str2 << "です。\n";
cout << "配列str0は" << str0 << "です。\n";
return 0;
}
### practice
int max(int x[]){
int maxnum = 0;
for(int i=0; i<5; i++) {
if(x[i] > maxnum) {
maxnum = x[i];
}
}
return maxnum;
}
int main() {
int result[5];
cout << "テストの点数を入力してください。\n";
for(int i=0; i<5; i++) {
cin >> result[i];
}
int num = max(result);
cout << "テストの最高点は" << num << "点です。\n";
return 0;
}
int length(char* str){
int i = 0;
while(str[i]){
i++;
}
return i;
}
int main() {
char str[10];
cout << "文字列を入力してください。\n";
cin >> str;
int len = length(str);
cout << "文字列の長さは" << len << "です。\n";
return 0;
}
maxは最初から x[0]と宣言してしまった方が効率的
int max(int x[]){
int m = x[0];
for(int i=0; i<5; i++){
}
}
int count(char str[], char ch){
int n = 0;
for(int i=0; i < strlen(str); i++){
if(str[i] == ch){
n++;
}
}
return n;
}
int main() {
char str[10];
char ch;
cout << "文字列を入力してください。\n";
cin >> str;
cout << "文字列から探す文字を入力してください。\n";
cin >> ch;
int n = count(str, ch);
cout << str << "の中に" << ch << "は" << n << "個です。\n";
return 0;
}