したらばTOP ■掲示板に戻る■ 全部 1-100 最新50 | |

test

1名無しさん:2009/07/01(水) 02:52:24
testスレ

2名無しさん:2009/07/01(水) 02:53:10
/*** インクルードファイル ***/
#include <stdio.h>
#include <stdlib.h>

int main()
{
int Num = 10; /* データ人数 */
int* point_ptr; /* 得点を記録する領域のポインタ */
int* rank_ptr; /* 順位を記録する領域のポインタ */
int i; /* point_ptrのオフセットカウンタ */
int j; /* rank_ptrのオフセットカウンタ */

int* rank_sort; /* ソートした順位を記録する領域のポインタ */
int k; /* ちょっと入れとく用変数 */
int no[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}; /* 番号に使う */


/*** 領域確保 ***/
point_ptr = (int*)calloc(Num,sizeof(int));
rank_ptr = (int*)calloc(Num,sizeof(int));
rank_sort = (int*)calloc(Num,sizeof(int));


/*** データの入力 ***/
i = 0;
while( i < Num ){
scanf("%d",(point_ptr + i));
i++;
}

/***
*** 順位付け
***/
/*** 最初の人から順番に自分の順位を調べる ***/
for (i = 0; i < Num; i++) {
/*** 順位を1に初期化 ***/
*(rank_ptr + i) = 1;
*(rank_sort + i) = 1;

/*** 自分と全員の得点を比べ自分より高い得点の人がいたら ***/
/*** 順位を1足していく ***/
for (j = 0; j < Num; j++) {
if( *( point_ptr + j ) > *( point_ptr + i ) ){
*( rank_ptr + i ) += 1;
}
}
}


/*** ソート ***/
for (i = 0; i < Num; i++) {
for (j = 0; j < Num; j++) {
if( *( rank_ptr + j ) > *( rank_ptr + i ) ){
k = *( rank_ptr + j );
*( rank_ptr + j ) = *( rank_ptr + i );
*( rank_ptr + i ) = k;

k = *(point_ptr + j);
*(point_ptr + j) = *(point_ptr + i);
*(point_ptr + i) = k;

k = no[j];
no[j] = no[i];
no[i] = k;
}
}
}

printf(" 番号 得点 順位\n");

/*** 結果出力 ***/

for (i = 0; i < Num; i++) {
printf("%6d%6d%6d\n",no[i],*(point_ptr + i),*(rank_ptr + i));
}

return(0);
}

3名無しさん:2009/07/01(水) 03:15:57
>>2
int* rank_sort; /* ソートした順位を記録する領域のポインタ */
の部分と、
領域確保のとこの
rank_sort = (int*)calloc(Num,sizeof(int));
と、
/*** 順位を1に初期化 ***/ の部分の
*(rank_sort + i) = 1;


はまったく必要なかった。ごめん。

4名無しさん:2009/07/01(水) 12:47:03
#include <stdio.h>
#include <stdlib.h>
int main()
{
&nbsp;&nbsp;int Num = 100; /* データ人数 */
&nbsp;&nbsp;int* number_ptr;/* 順位を記録する領域のポインタ */
&nbsp;&nbsp;int* point_ptr; /* 得点を記録する領域のポインタ */
&nbsp;&nbsp;int* rank_ptr; /* 順位を記録する領域のポインタ */
&nbsp;&nbsp;int i; /* point_ptrのオフセットカウンタ */
&nbsp;&nbsp;int j; /* rank_ptrのオフセットカウンタ */
&nbsp;&nbsp;int p, S;

&nbsp;&nbsp;/*** 領域確保 ***/
&nbsp;&nbsp;number_ptr = (int*)calloc(Num,sizeof(int));
&nbsp;&nbsp;point_ptr = (int*)calloc(Num,sizeof(int));
&nbsp;&nbsp;rank_ptr = (int*)calloc(Num,sizeof(int));

&nbsp;&nbsp;/*** データの入力 ***/
&nbsp;&nbsp;for (i = 0; i<100; i++) {
&nbsp;&nbsp;&nbsp;&nbsp;scanf("%d", (point_ptr + i));
&nbsp;&nbsp;&nbsp;&nbsp;if(*(point_ptr + i) == -1) break; /* 入力終わり */
&nbsp;&nbsp;&nbsp;&nbsp;*(number_ptr + i) = i+1;
&nbsp;&nbsp;}
&nbsp;&nbsp;Num = i; /* データ人数 */


新着レスの表示


名前: E-mail(省略可)

※書き込む際の注意事項はこちら

※画像アップローダーはこちら

(画像を表示できるのは「画像リンクのサムネイル表示」がオンの掲示板に限ります)

掲示板管理者へ連絡 無料レンタル掲示板