2012-02-13 8 views
-6

したがって、私は、数値の平方根になるforループを作成しようとしていますが、 ですが、制御文はdouble型を持つことができないので、この平方根を型intとして定義する必要があります。Cでsqrtをint型として定義していますか?

基本的に私が行ったことは、タイプintとしてint1を定義し、次にint1=sqrt(n);を持っています。

しかし、コンパイラはそれを受け入れていません。助けて?

int1 = (int) sqrt(n); 
+5

あなたはタイプキャスティングに精通していますか? (http://www.aui.ma/personal/~O.Ir​​aqi/csc1401/casting.htm) – ruakh

+0

@ruakh:実際には現在の状況よりも良い答えです。状況の理由を指摘してください。あなたはそれを答えにするべきです。 – haylem

+0

コードを見るためにどこか別の場所に行かせないでください。ここに投稿してください。あなたが記述しているように問題が真実ならば、それよりはるかに小さなコードでそれを再現することができます!しかし暗黙的なキャストを使用した表現は完全に有効ですが、あまり参考にならないので、あなたの問題は他の場所にあります。 "*コンパイラがそれを受け付けていない"場合は、コンパイラのエラーメッセージまたはビルドログを追加します。 – Clifford

答えて

0

int int1 = (int) sqrt(n); 
0

あなたは単にintsqrt()の結果をキャストすることができます:あなたは本当に唯一の整数をしたい場合は は、ここに私のコード全体(それはエラトステネスのふるいのためのアルゴリズムです)

http://pastebin.com/V6cHqj4F

+0

intキャストは0に丸めます。アプリケーションによっては、これが必要なものかもしれませんし、 'int int1 =(int)ceil(sqrt(n));'が必要かもしれません。 –

4

私はそれに何か問題はありません。あなたのループにjを使用していることがわかり、宣言されていないので、私たちにあなたのエラーを表示して読んでください。また、このコードはあなたの意見で何をすべきか?

int n, primecap[n], int1, i; 
n=50; 
initArray(primecap[n]); 

あなたの問題は、あなたが書いているのか分からないということです。

1

また、ここで劇中のタイプに関する仮定のカップルがある

int int1 = (int)(lround(sqrt(n)); 

注意を検討するかもしれないが、これはあなたのために働く必要があります。

のsqrt()関数の性質を考えると、あなたも無サイズデータ型にlround()の結果を代入検討するかもしれないが(すなわちunsigned long型など)

+1

'int(...)'は有効なC構文ではありません。 '(int)(...)'を意味しましたか? –

+0

コードを修正しました。 – Throwback1986

+0

+1の 'lround()'です。 「最も近い整数値に引数を丸め、途中の場合をゼロから丸める」 – chux

3
int int1 = sqrt(n); 

これはStandard Cで完全に有効であり、コンパイラはそれを受け入れるべきです。 コンパイラでいくつかの警告オプションを有効にしたか、エラーがプログラムのどこかにあります。

(私はあなたがmath.hn算術型であるが含まれて想定しています。)

+0

+1は、キャストが役に立たないことを指摘する唯一の人だからです。 –

1

だから、Cで、私は数の平方根に上がるためのループを作るしようとしているが、私は必要制御文は2つの型を持つことができないので、その平方根を型intとして定義します。

forとwhileループの構造には、任意の型を使用できます。

intとしてint1を定義し、int1=sqrt(n);を有します。

これは完全に問題ありません。

しかし、コンパイラは約(私はideoneにあなたのコードを試みたが、別に行方不明ヘッダと宣言されていない識別子(jprimecap)から、コンパイラは文句didin'tそれを

を受け付けていませんこの特定のもの)。

1

thisのコードがint n, primecap[n], int1, i;の場合は、primecap[n]となります。これはnが後で定義されるためです。

+0

+1また、C99可変長配列のサポートが必要です。これは、すべてのコンパイラにはあてはまらないものです。初期化されていない変数 'n'を使用すると、配列の次元を決めることができません。 – Clifford

関連する問題