C言語 配列 数の大きさ

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
田中
記事: 10
登録日時: 1年前

C言語 配列 数の大きさ

#1

投稿記事 by 田中 » 1年前

こんにちは。
問題は以下の通りです。
「入力する整数の個数nとn個の整数を入力した後、何番目の整数かを
入力してその整数が大きい方から何番目の整数かを表示するプログラム。
ただし、以下の要件を満たすこと。

(要件)
整数の配列a[]とその要素数nと順位を知りたい要素の位置idxを引数として、
大きい順の順位を戻り値とする関数rank(int a[], int n, int idx)を定義して
利用する。一番大きな値の順位を1番とする。グローバル変数は使わない。」

一応プログラムを使ったのですがうまくいきませんでした。
入力値として
10
78 82 65 73 88 56 90 92 70 68
6
を入力すると10位というのが出てきてほしいのですが9位という結果が出てきてしまいます。
間違っている点やアドバイスよろしくお願いします。

コード:

 
 #include <stdio.h>

int rank(int a[], int n, int idx)
{
	int ranking=1;
	
	for(int i=0; i<n; i++){
		if(a[i]>a[idx]) ranking++;
	}
	return ranking;
}

int main(void){
	int n, idx;
	int a[64];
	
	scanf("%d", &n); //読み込み個数
	for(int i=0; i<n; i++){
		scanf("%d", &a[i+1]);
	}
	
	scanf("%d",&idx); //何番目
	printf("順位: %d\n", rank(a,n,idx));
	
	return 0;
}
  

box
記事: 2002
登録日時: 13年前

Re: C言語 配列 数の大きさ

#2

投稿記事 by box » 1年前

rank()「だけ」示されましても、
rank()を「どうやって」使っているかがこちらには全く伝わりません。
main()などを含め、書いたコードを「全部」見せてください。
バグのないプログラムはない。
プログラムは思ったとおりには動かない。書いたとおりに動く。

アバター
みけCAT
記事: 6734
登録日時: 13年前
住所: 千葉県
連絡を取る:

Re: C言語 配列 数の大きさ

#3

投稿記事 by みけCAT » 1年前

box さんが書きました:
1年前
rank()「だけ」示されましても、
rank()を「どうやって」使っているかがこちらには全く伝わりません。
main()などを含め、書いたコードを「全部」見せてください。
main()を含めたコンパイル可能なコードが提示されていますが、これだけでは不満なのでしょうか?
「書いたコードを『全部』」とは、この問題に限らず、生まれてから今までに書いたコードを全部でしょうか?
田中 さんが書きました:
1年前
間違っている点やアドバイスよろしくお願いします。
iが0以上n未満という同じループで、
main関数ではa[i+1]に読み込んでいるのに、rank関数ではa[i​]の値を参照しているので、
・不定の値a[0]を参照する
・読み込んだ値a[n]を参照しない
ため、誤動作の原因となります。

rank関数において、
・main関数と同様にa[i+1]を参照するようにする
・ループの範囲を1以上n以下にする
のどちらか1個を行うとよいでしょう。
(1個だけ行い、両方は行わないでください)
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)

田中
記事: 10
登録日時: 1年前

Re: C言語 配列 数の大きさ

#4

投稿記事 by 田中 » 1年前

田中 さんが書きました:
1年前
間違っている点やアドバイスよろしくお願いします。
iが0以上n未満という同じループで、
main関数ではa[i+1]に読み込んでいるのに、rank関数ではa[i​]の値を参照しているので、
・不定の値a[0]を参照する
・読み込んだ値a[n]を参照しない
ため、誤動作の原因となります。

rank関数において、
・main関数と同様にa[i+1]を参照するようにする
・ループの範囲を1以上n以下にする
のどちらか1個を行うとよいでしょう。
(1個だけ行い、両方は行わないでください)
[/quote]

分かりました。アドバイスありがとうございます!

box
記事: 2002
登録日時: 13年前

Re: C言語 配列 数の大きさ

#5

投稿記事 by box » 1年前

main()を含めたコンパイル可能なコードが提示されていますが、これだけでは不満なのでしょうか?
「書いたコードを『全部』」とは、この問題に限らず、生まれてから今までに書いたコードを全部でしょうか?
おお、これは失礼なことをしてしまいました。
申し訳ありません。>質問者さん
バグのないプログラムはない。
プログラムは思ったとおりには動かない。書いたとおりに動く。

返信

“C言語何でも質問掲示板” へ戻る