質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

Q&A

解決済

2回答

2277閲覧

不正解の理由がわかりません

daifukuzaka

総合スコア12

C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

0グッド

0クリップ

投稿2018/11/21 16:39

編集2018/11/22 09:53

前提・実現したいこと

Aizu Online JudgeにてITP1_8_D Ringという問題に取り組んでいたのですが、自分のpcでは正解と同じ結果が出るにも関わらずaojではwrong answer となってしまいます。
原因を知りたいです。よろしくお願いします。

発生している問題・エラーメッセージ

該当のソースコード

C

1#include <stdio.h> 2#include <string.h> 3 4int main() { 5 char s[101], p[101], ans[101]; 6 int len_s, len_p; 7 int i, j, k; 8 9 scanf("%s", s); 10 scanf("%s", p); 11 len_s = strlen(s); 12 len_p = strlen(p); 13 for (i = 0; i < len_s; i++) { 14 for (j = 0; j < len_p; j++) { 15 k = i + j; 16 if (k >= len_s) k -= len_s; 17 ans[j] = s[k]; 18 } 19 ans[j + 1] = '\0'; 20 if (strcmp(ans, p) == 0) { 21 printf("Yes\n"); 22 return 0; 23 } 24 } 25 printf("No\n"); 26 27 return 0; 28} 29 30

試したこと

補足情報(FW/ツールのバージョンなど)

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

http://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=ITP1_8_D
この問題ですね?

「vanceknowledgetoad」と「advance」を与えます。
s ← vanceknowledgetoad
p ← advance
len_s ← 18
len_p ← 7
k ← 0 + 0
ans[0] ← s[0] : v
k ← 0 + 1
ans[1] ← s[1] : a

k ← 0 + 6
ans[6] ← s[6] : n
ans[7+1] ← '\0' 注目
strcmp('vancekn?', 'advance') != 0

j < len_p の間回り続けるのだから、ループを抜けたときに j は1つ進んでいます。そこにさらに +1 しています。
デバッガで変数を追いかけたり、上記のように自分で変数値を計算して確認しましょう。

投稿2018/11/22 13:29

Q71

総合スコア995

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

daifukuzaka

2018/11/22 13:43

ご回答ありがとうございます! やっと理解できました ご指摘ありがとうございました
guest

0

文字列ansの終端について考える必要があります。

投稿2018/11/21 17:32

asm

総合スコア15147

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

daifukuzaka

2018/11/22 09:50

ご回答ありがとうございます! 配列ansの終端に'\0'を入れたのですがやはりダメでした。 補足なのですが、2/30までは解答が正解になっており、そこも変化はありませんでした。
pepperleaf

2018/11/22 11:58

入れる場所、間違えてません?
daifukuzaka

2018/11/22 13:43

やっと理解、突破できました! わざわざご回答ありがとうございました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問