第2期白銀組第8題

1703 ワード

各アクセントアルファベットが文字列に表示される回数を統計します.Input入力データは、まず、テストインスタンスの個数を表す整数nと、n行の長さが100を超えない文字列とを含む.Outputは、a:num 1 e:num 2 i:num 3 o:num 4 u:num 5の複数のテストインスタンス間を1つの空の行で区切った形式で、各テストインスタンスに対して5行出力する.
特に注意してください:最後の出力の後ろに空行はありません:)Sample Input 2 aeiou my name is ignatius Sample Output a:1 e:1 i:1 o:1 u:1
a:2 e:1 i:3 o:0 u:1
A E I O Uの数ACコードを見つけるように要求されています.
#include
#include
using namespace std;
int main()
{
	void write(int*x, int*y, int*z, int*r, int*t);
	int a;
	while (cin >> a)
	{
		int i;
		int**p = new int*[a];
		int j;
		for (j = 0; j < a; j++)
		{
			p[j] = new int[5];
			memset(p[j], 0, 20);
		}
		for (i = 0; i < a; i++)
		{
			write(&p[i][0], &p[i][1], &p[i][2], &p[i][3], &p[i][4]);
		}
		int k;
		for (k = 0; k < a; k++)
		{
			if (k != 0)
			{
				cout << endl;
			}
			cout << "a:" << p[k][0] << endl;
			cout << "e:" << p[k][1] << endl;
			cout << "i:" << p[k][2] << endl;
			cout << "o:" << p[k][3] << endl;
			cout << "u:" << p[k][4] << endl;
		}
	}
	return 0;
}

void write(int*x, int*y, int*z, int*r, int*t)
{
	int m;
	char a[200];
	cin >> a;
	for (m = 0; m < 200; m++)
	{
		if (a[m] == '\0' || a[m] == '
') { break; } if (a[m] == 'a') { *x += 1; } if (a[m] == 'e') { *y += 1; } if (a[m] == 'i') { *z += 1; } if (a[m] == 'o') { *r += 1; } if (a[m] == 'u') { *t += 1; } } }

この問題はforループを用いて遍歴し,newでカスタム数のアドレスを申請した.