質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
for

for文は、様々なプログラミング言語で使われている制御構造です。for文に定義している条件から外れるまで、for文内の命令文を繰り返し実行します。

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Unity

Unityは、Unity Technologiesが開発・販売している、IDEを内蔵するゲームエンジンです。主にC#を用いたプログラミングでコンテンツの開発が可能です。

Q&A

解決済

2回答

474閲覧

UnityのC#で、自作コード(for文)について

TSE

総合スコア28

for

for文は、様々なプログラミング言語で使われている制御構造です。for文に定義している条件から外れるまで、for文内の命令文を繰り返し実行します。

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Unity

Unityは、Unity Technologiesが開発・販売している、IDEを内蔵するゲームエンジンです。主にC#を用いたプログラミングでコンテンツの開発が可能です。

0グッド

0クリップ

投稿2022/02/27 15:27

ソースコード

C#

1 int x = 0; 2 float[] degrees = new float[count]; 3 Debug.Log(tCR_rate); 4 for(int i = 0; i < count; i++) 5 { 6 if(i < tCR_rate) 7 { 8 degrees[i] = i / tCR_rate; 9 Debug.Log(degrees[i] + "前半"); 10 } 11 else if (i > count - tCR_rate) 12 { 13 degrees[i] = 1 - x / tCR_rate; 14 Debug.Log(degrees[i] + "後半"); 15 x++; 16 } 17 else 18 { 19 degrees[i] = 1; 20 Debug.Log(degrees[i]); 21 } 22 } 23 Debug.Log("end");

発生している問題

必要な部分だけ切り抜いていますが、画像ではcountは500、tCR_rateは125です。
0, 0.1, 0.2, 0.3,.....1, 1, 1, 1,.......0.3, 0.2, 0.1, 0のような配列(countが30で tCR_rateが10の場合)を作りたいのですが、
上記のコードで、以下の出力になります。
イメージ説明

何が問題なのでしょうか?

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

i / tCR_rateなど、int をint で割ると結果はint です。

投稿2022/02/27 22:06

ozwk

総合スコア13512

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ShortArrow

2022/02/27 23:54

たぶんこれ ``` degrees[i] = (double) i / (double) tCR_rate; ```
TSE

2022/02/28 06:54

int型だからか、、、!! 盲点でした。無事思った通りの挙動になりました。 ありがとうございました^^
guest

0

コード

csharp

1using UnityEngine; 2 3public class Calc : MonoBehaviour 4{ 5 [SerializeField] int _count = 100; 6 [SerializeField] int _rate = 10; 7 8 public void Run() 9 { 10 float[] arr = new float[_count]; 11 float temp = 0; 12 int counter = 0; 13 14 while (temp < 1) 15 { 16 arr[counter] = temp; 17 arr[arr.Length - 1 - counter] = temp; 18 temp += (float) 1 / _rate; 19 counter++; 20 } 21 22 for (int i = counter; i < arr.Length - counter; i++) 23 { 24 arr[i] = 1; 25 } 26 27 // ログ出力処理 28 System.Text.StringBuilder sb = new System.Text.StringBuilder(); 29 30 foreach (var f in arr) 31 { 32 sb.AppendLine(f.ToString("0.000")); 33 } 34 35 Debug.Log(sb.ToString()); 36 } 37}

結果

text

10.000 20.100 30.200 40.300 50.400 60.500 70.600 80.700 90.800 100.900 111.000 121.000 131.000 141.000 151.000 16(中略) 171.000 180.900 190.800 200.700 210.600 220.500 230.400 240.300 250.200 260.100 270.000

備考

_count = 10, _rate = 100 が指定された時などの例外処理は考慮していません。

投稿2022/02/27 16:19

bboydaisuke

総合スコア5270

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問