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

雑談スレ。

57獅子 ◆Zbmx8wQyk6:2012/07/22(日) 01:48:04 ID:iLn8rFd60
#include <stdio.h>
#include <stdlib.h>

#ifdef _DEBUG
# define _DEBUG_PRINTF( str, ... ) printf( str, __VA_ARGS__ );
#else
# define _DEBUG_PRINTF( str, ... )
#endif

int getNumberPosition( int _target, int _array[], int _size )
{
int low = 0;
int high = _size;

if( _target < _array[0] || _target > _array[_size-1] ) return 0;

while(1)
{
int number = (low+high)/2;
int select = _array[ number ];
_DEBUG_PRINTF( "number->%3d: low->%3d: high->%3d: %3d\n",number, low, high, select );
if( select == _target ){
return ++number;
}
else if( select > _target ){
high = number;
if( high-1 == low && _array[number-1] != _target ) return 0;
}
else if( select < _target ){
low = number;
if( high == low+1 && _array[number-1] != _target ) return 0;
}
}
};

void outputArray( int _array[], int _size ){
for(int i = 0; i < _size; ++i )
{
printf("%d ",_array[i]);
}
printf("\n");
};

int main(void)
{
const int numMaxData = 100;

int numData = 0;
int targetNum;
int arrayData[numMaxData];
char filename[32];
FILE* fp;


printf("Please input file name.\nFile name is ");
scanf("%s",filename);


fp = fopen( filename, "r" );
{
if( !fp )
{
printf("** error:: Don't open file!\n");
return 1;
}

while( fscanf( fp, "%d", &arrayData[numData] ) != EOF ) ++ numData;
}
fclose(fp);

for(int i = 0; i < numData-1; ++i )
{
int l=i;
for (int k=i+1;k<numData;k++)
{
if (arrayData[l]>arrayData[k]) l=k;
}
int tmp = arrayData[l];
arrayData[l] = arrayData[i];
arrayData[i] = tmp;
}

outputArray( arrayData, numData );

while( scanf( "%d", &targetNum ) )
{
int result = getNumberPosition( targetNum, arrayData, numData );

result ?
printf("%d -> №%d\n", targetNum, result ):
printf("%d is not found.\n", targetNum );
}

printf("see you again...\n");

return 0;
}


新着レスの表示


名前: E-mail(省略可)

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

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

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

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