/



#include<_stdio.h>

#include<_stdlib.h>



void input( long long int *f, int n )

{

int i;



for( i = 1; i <= n ; i++ ){

printf( "%d番目の数を入力。\n", i );

scanf( "%lld", &f[i] );

}

}



int calculation( long long int *f, long long int *a, int n )

{

int i = 1;

int j;

bool flag = false;



// 計算

a[1] = f[1];



while( i < 10 ){

for( j = 2; j <= n; j++ ){

a[j] = f[j] a[j1] * i;

printf( " %lld", a[j] );

}

printf( " | %lld\n", i );

printf( "%lld\n", a[n] );

printf( "%lld\n", a[j1] );



if( 1 < a[n] && a[n] < 1 ){

flag = true;

break;

}

else{

i*= 1;



if( 0 < i ){

i++;

}

}

}



// 該当する値が無ければ全て0に

if( flag == false ){

for( j = 1; j <= n; j++ ){

f[j] = 0;

a[j] = 0;

}



i = 0;

}



return i;

}



void output( long long int *f, long long int *a, int n, int s ){

int i;



for( i = 1; i <= n; i++ ){

printf( " %10lld", f[i] );

}

printf( " | %10lld\n", s );



printf( " " );

for( i = 2; i <= n; i++ ){

printf( " %10lld", a[i1] * s );

}

printf( " |\n" );



for( i = 0; i <= n; i++ ){

printf( "" );

}

printf( "\n" );



for( i = 1; i < n; i++ ){

printf( " %10lld", a[i] );

}

printf( " | %10lld\n", a[n] );

}



int main()

{

int n;



printf( "項数を入力。\n" );

scanf( "%lld", &n );



// 要素数がnの配列を作る

long long int *f = ( long long int * ) malloc ( sizeof ( long long int ) * n + 1 );

long long int *a = ( long long int * ) malloc ( sizeof ( long long int ) * n + 1 );



// データ入力

input( f, n );



// 組み立て除法

int s; // 商を受け取る変数

s = calculation( f, a, n );



// 出力

output( f, a, n, s );



return 0;

}









calculation関数の



if( 1 < a[n] && a[n] < 1 )



って分岐が何故か通らないんですよねぇ……。

直前の



printf( "%lld\n", a[n] );

printf( "%lld\n", a[j1] );




でチェックしてますけど、勿論0が出力。



言うまでもありませんが、



if( a[n] == 0 )



も通りません。

意味不明。



更に



if( a[n] < 1 )



だと成功するのに、



if( 1 < a[n] )



だと成功しない。



一体 a[n] の値は何なのかと小一時間(ry







正の数しか扱わないんだったら



if( a[n] < 1 )



こうしとけば別に問題無いんですけど、

その後のループ前の処理見ての通り、

絶対値の小さい値から正負交互に調べていくんでダメなんですよ。







因みに、 配列 a は long long int型ですが、

普通にint型だと上手くいきます。

但し、私が調べようとしている数字があまりにも大きな数でオーバーフローを起こすため使えません(´д⊂



因みにint型で扱える数値は2,147,483,647 〜 +2,147,483,647。

±21億。



あーわけわかんねー……_| ̄|○



先生なら分かるかなぁ……。

メールしてみるかなぁ……。