🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
C

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

関数

関数(ファンクション・メソッド・サブルーチンとも呼ばれる)は、はプログラムのコードの一部であり、ある特定のタスクを処理するように設計されたものです。

Q&A

解決済

3回答

1317閲覧

[初心者]関数の処理について

SmaSTATION

総合スコア29

C

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

関数

関数(ファンクション・メソッド・サブルーチンとも呼ばれる)は、はプログラムのコードの一部であり、ある特定のタスクを処理するように設計されたものです。

0グッド

0クリップ

投稿2021/03/24 00:21

「文字列(char 型配列)引数を 2 つ受け取り、辞書的に 1 つめが大きいなら’>’ を、辞書的に 2 つめが大きいなら ’<’ を、辞書的に等しい(同じ文字列)なら ’=’ を返す関数 strcompare() を作れ。」
上記のような関数を作るのが目的です。
以下、プログラムになります。

#include<stdio.h> #define SIZE 100 char strcompare(char a[],char b[]){ int i; for(i=0;a[i]!='\0' || b[i]!='\0';i++){ if(a[i]>b[i]){ return '>'; }else if(a[i]<b[i]){ return '<'; }else{ return '='; } } } int main(void){ char str1[SIZE], str2[SIZE]; scanf("%s", str1); scanf("%s", str2); printf("%c\n", strcompare(str1, str2)); return 0; }

main節の処理につては何ら問題ないのです。
関数の節の処理でなぜ「辞書的に」という条件を満たせるのかがわかりません。
私は勝手にif(a[i]>='a' && a[i]<='z')のようなコードかなと予想していたのですが違いました。
宜しくお願いいたします。
※辞書的にというとらえ方が間違ってる可能性もあるのでしょうか。

辞書的…アルファベット順??

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

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

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

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

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

hoshi-takanori

2021/03/24 00:29

「辞書的に」というのはだいぶ曖昧な言い方だと思いますね。文字コード順と言われた方が分かりやすいです。 ちなみに、そのプログラムにはバグが…。
ozwk

2021/03/24 05:56

> 関数の節の処理でなぜ「辞書的に」という条件を満たせるのかがわかりません。 そもそも提示のコードは条件を満たしてません
guest

回答3

0

char strcompare(char a[],char b[]){

最初の文字だけを比較してその結果を返してますね

投稿2021/03/24 00:51

y_waiwai

総合スコア88038

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

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

0

※辞書的にというとらえ方が間違ってる可能性もあるのでしょうか。

はい、特に並べ方の注釈がない場合、「辞書的に」=「1文字ごとの文字コード順」という意味です。

投稿2021/03/24 00:25

maisumakun

総合スコア145973

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

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

0

ベストアンサー

辞書的というのは、

"abc" < "bcd"
"abc" < "adce"
"ab" < "abc"

というような順序のことです。

まず、a[0]とb[0]を比べましょう。
a[0]が大きければaが大きい、a[0]が小さければaが小さい。
同じであれば、a[1]とb[1]を比べましょう。
a[1]が大きければaが大きい、a[1]が小さければaが小さい。
以下同様

という意味です。

投稿2021/03/24 04:40

ppaul

総合スコア24670

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問