前提・実現したいこと
※これはpaizaのスキルチェックではありませんのでご安心ください!レベルアップ問題集に関しては解答を教えあったり、コードを公開することは可能です。
https://paiza.jp/works/mondai/c_rank_level_up_problems/c_rank_dictionary_step3
例えば入力例が下記の通りであったとき
2
MIDORIKAWA
KIRISHIMA
2
KIRISHIMA 1
KIRISHIMA 2
出力例は
3
0
になります。
この時実現したいのが「KIRISHIMA 1」「KIRISHIMA 2」は入力例の上から3行目の「KIRISHIMA」と等しいということを実装したいです。
何とぞご教授お願い致します。
発生している問題・エラーメッセージ
エラーはございません。
該当のソースコード
C
1#include <stdio.h> 2#include <stdlib.h> 3#include <string.h> 4int main(void) 5{ 6 //n人の名前s_1,...,s_n 7 int n; 8 scanf("%d", &n); 9 10 char s[n][100]; 11 for (int i = 0; i < n; i++) { 12 scanf("%s", s[i]); 13 } 14 15 //m回の攻撃 16 int m; 17 scanf("%d", &m); 18 19 //p_a[i][1]はp_a[i][0]が受けたダメージを表す数 20 char p_a[n][2][100]; 21 for (int i = 0; i < m; i++) { 22 scanf("%s %s", p_a[i][0], p_a[i][1]); 23 } 24 25 //それぞれの人が受けたダメージを出力 26 int damage = 0; 27 for (int i = 0; i < n; i++) { 28 int j = 0; 29 if (strcmp(s[i], p_a[j][0]) == 0) { //ここが正しく動作しないです。 30 damage += atoi(p_a[j][1]); 31 printf("%s %d\n", p_a[j][0], damage); 32 } else { 33 damage += atoi(p_a[j][1]); 34 printf("%s %d\n", p_a[j][0], damage); 35 } 36 j++; 37 } 38} 39
試したこと
一次元配列と二次元配列を探索できるものと稚拙ながら仮説を立てて「一次元配列 二次元配列 探索」と調べましたが、それらしいことは出てきませんでした。
補足情報(FW/ツールのバージョンなど)
paiza.ioを使っています。
回答2件
あなたの回答
tips
プレビュー