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

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

新規登録して質問してみよう
ただいま回答率
85.35%
C#

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

Arduino

Arduinoは、AVRマイコン、単純なI/O(入出力)ポートを備えた基板、C言語を元としたArduinoのプログラム言語と、それを実装した統合開発環境から構成されたシステムです。

配列

配列は、各データの要素(値または変数)が連続的に並べられたデータ構造です。各配列は添え字(INDEX)で識別されています。

Q&A

解決済

2回答

1732閲覧

C#での配列について

退会済みユーザー

退会済みユーザー

総合スコア0

C#

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

Arduino

Arduinoは、AVRマイコン、単純なI/O(入出力)ポートを備えた基板、C言語を元としたArduinoのプログラム言語と、それを実装した統合開発環境から構成されたシステムです。

配列

配列は、各データの要素(値または変数)が連続的に並べられたデータ構造です。各配列は添え字(INDEX)で識別されています。

0グッド

0クリップ

投稿2021/12/07 13:52

編集2021/12/08 03:40

前提・実現したいこと

皆さんどうも、プログラミング初心者です。
c#において振り子の周期を計算するプログラミングを作成しています。Arduinoで取得したcsvデータを読み取って配列に入れたいのですが、配列の中の数値を選択して新たな配列に入れていく方法が分からないです。説明がうまくないかもしれませんが回答していただければありがたいです。
よろしくお願いいたします。

該当のソースコード

//例として10000個のデータを取得できたとします
for( i = 0 ; i < 10000 ; ++i){
int A[i] = Val[i+1] - Val[i]; //取得したデータの次のものから一つ前のものを順々にひいていく処理をひとつづつ行っていきます
if( A[i] > 500){  //仮に前の計算の結果500より大きくなったものを新たな配列に入れていきたいです。
int B[] = i;  //個々のコードの書き方が分かりません、助けてください
}
}

C#(Visual studio)を使用しています。

試したこと

何度かトライしてみましたがうまくいきませんでした。

追記
今回の質問はある配列から条件を満たしている要素を抽出し、新たな配列に代入する際のコードが知りたいというものでした。そこで、皆さんの力をお借りしたいと思いこのサイトを利用したのですが、私の質問の仕方がまずく皆様にうまく伝わっていなかったのでこのような形で追記させていただきました。

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

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

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

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

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

YAmaGNZ

2021/12/07 14:37 編集

配列よりList<List<int>> を使ったほうがいいように思えます。
退会済みユーザー

退会済みユーザー

2021/12/07 21:33

読んでください→ https://teratail.com/help/question-tips 特にこの辺り: "人に質問をするには、自分が何を尋ねたいかを知っている必要があります。これは、「自分が今『何がわからないのか』がわかっていて、言語化できている」ということです。一見簡単なようですが、実はとても難しいことです。何がわからないかわからない人から質問を受けても、答える側も困ってしまいます"
退会済みユーザー

退会済みユーザー

2021/12/08 03:31

質問の内容がまとまっていない段階で投稿し混乱させてしまい申し訳ございません。
退会済みユーザー

退会済みユーザー

2021/12/08 04:02

回答が出ているので、それに対するフィードバックを返しましょう。
guest

回答2

0

ベストアンサー

こんな話なのでしょうか.

CSharp

1//何か Val という配列があって,そこに値が入っており… 2var Val = new double[]{ 1, 550, 500, 3.0, 777, 7 }; 3 4//V の隣り合う要素の値の差を要素値とする配列 A を作る(配列 A 自体の必要性の有無は質問文から読み取れないが) 5var A = new double[Val.Length-1]; 6for( int i=0; i<A.Length; ++i ){ A[i] = Val[i+1] - Val[i]; } 7 8//A の要素のうち値が 500 を超える要素だけを集めた配列 B を作る 9var B = A.Where( a => a>500 ).ToArray();

B の書き方以前に,その手前の

int A[i] = Val[i+1] - Val[i];

という記述も既に怪しいので,まずは文法を復習されるのが良いかと.


[追記]
上記の配列 B を作る部分: var B = A.Where( a => a>500 ).ToArray();
を,もっと素朴に(?)書くとしたら,以下のようになるであろうか.

//何か Val という配列があって,そこに値が入っており… var Val = new double[]{ 1, 550, 500, 3.0, 777, 7 }; //V の隣り合う要素の値の差を要素値とする配列 A を作る(配列 A 自体の必要性の有無は質問文から読み取れないが) var A = new double[Val.Length-1]; for( int i=0; i<A.Length; ++i ){ A[i] = Val[i+1] - Val[i]; } //---(↑ここまでは同じ↑)--- //結果を格納する配列 B を用意する. //要素数をいくつとして用意すればよいのか? → 考えられる最大値としておく. var B = new double[ A.Length ]; {//Bの中身を作る処理 //この変数 AssignIndex は //次の要素を B のどこに入れれば良いのか? というindex値である. //言い方を変えれば「Bにこれまで入れた要素の個数」でもある. int AssignIndex = 0; //配列 A の全ての要素について値を調べて,条件に該当するものを B に入れる. foreach( double a in A ) { if( a > 500 ) { B[ AssignIndex ] = a; ++AssignIndex; } } //配列 B のサイズを修正する. //ここまでで B には AssignIndex[個] の要素を入れたのだから, //B のサイズを AssignIndex に修正する. Array.Resize( ref B, AssignIndex ); }

投稿2021/12/08 01:20

編集2021/12/08 04:17
fana

総合スコア11996

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

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

退会済みユーザー

退会済みユーザー

2021/12/09 03:21

ご回答ありがとうございます。条件を満たしている要素を抽出し配列に代入していくことができました。
guest

0

CSVなら、splitでコンマで区切ればそのまんま配列でとれます

String.Split を使用して文字列を分割する (C# ガイド) | Microsoft Docs

投稿2021/12/07 14:20

y_waiwai

総合スコア88042

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

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

dodox86

2021/12/08 00:05

低評価は入れていませんが、 > 配列の中の数値を選択して新たな配列に入れていく方法が分からないです。 が質問の主旨のはずなので、String.Splitはこの際関係無いです。
Zuishin

2021/12/08 01:02

C# とは書いてあるけど、C 言語の可能性すらありますね。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問