やる気維持のためのブログ

大学の課題、自主勉など...。

paiza備忘録

文字列から数値をトリミングする関数

機能

入力値として与えられた空白区切りの任意の長さの文字列に対して、それぞれの数値を切り出して配列に格納する。
ex)「12 23 25 68 2 34」という文字列が渡されたら12、23、25、68、2、34という数値を配列に格納する。

プログラムの概要

プログラム中のコメント参照
※今回は数値が2桁までで設計しているが、3桁以上も対応させる場合にはtemp配列の大きさを大きくすればいい。 また、今回はtrimedに値を格納しているが、番兵の意味で最後に-1を代入させている。

プログラム

//空白区切りの入力から数値データを切り出す関数ver2
void trim( char *str, int *trimed, int len){
    int i,j,k;
    char temp[3]; /* 2桁までの対応をするため。1つ多いのはnull文字用 */
    j = k = 0;
    //文字列の長さ分ループを回す
    for(i=0;i<len;i++){
        //空白が来た場合の処理
        if(str[i] == ' '){
            //積んである文字の後ろのゴミを切り離すため文字列終端文字nullを代入しておく
            temp[j] = '\0';
            //tempは数字文字nullの構成になっており、これを数値化する
            trimed[k++] = atoi(temp);
            //文字列を空にしておく
            temp[0] = temp[1] = '\0';
            //indexを先頭に戻す
            j = 0;

        //空白が来るまでは数値を文字としてtempに積んでいく    
        }else if(str[i] != ' '){
            temp[j++] = str[i];            
        }        
    }
    trimed[k++] = atoi(temp);
    trimed[k] = -1;
}

Androidアプリ開発:

現状

  • 初回

進捗

  • スタート画面と時間割ページのスクロール対応フラグメントの構築

コード部分

Main側のソースコード

public class MainActivity extends AppCompatActivity {

    
    private Spinner spinner;
    final private String spinnerItems[] = {"Monday", "Tuesday", "Wednesday", "Thursday", "Friday"};

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        //初期フラグメントの呼び出し
        MondayFragment firstFragment = new MondayFragment();
        FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
        transaction.add(R.id.fragment_container, firstFragment);
        transaction.commit();


        spinner = findViewById(R.id.spinner);
       

        // ArrayAdapter
        ArrayAdapter<String> adapter = new ArrayAdapter<>(this,
                android.R.layout.simple_spinner_item, spinnerItems);
        adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);

        // spinner に adapter をセット
        spinner.setAdapter(adapter);

        // リスナーを登録
        spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
            // アイテムが選択された時
            @Override
            public void onItemSelected(AdapterView<?> parent,
                                       View view, int position, long id) {

                //その曜日のfragmentを呼ぶ処理
               
            }

            // アイテムが選択されなかった
            public void onNothingSelected(AdapterView<?> parent) {
                //
            }
        });
    }
    
}

フラグメントの使い方

        MondayFragment firstFragment = new MondayFragment();
        FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
        transaction.add(R.id.fragment_container, firstFragment);
        transaction.commit();
  1. 呼び出したいフラグメントに紐づけてあるjavaファイルのインスタンス(firstFragment)を生成する。
  2. その後フラグメントに関する処理を行うためにFragmentTransactionを使ってインスタンス(transaction)を生成する。
  3. transaction.add("入れ込むレイアウト部分のidを指定(今回はactivity_mainの内部)", そのレイアウトを呼び出すインスタンス )
  4. transaction.commit()により実行

スピナーの使い方

        ArrayAdapter<String> adapter = new ArrayAdapter<>(this,
                android.R.layout.simple_spinner_item, spinnerItems);
        adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);

        spinner.setAdapter(adapter);

xml側的には普通のViewと同様に扱う。

  1. adapterを使って扱うデータ(今回はspinnerItems)を設定しインスタンスの生成。
  2. spinnerのメソッドsetAdapterにより、このadapterをスピナーにセットする。

成果

  • ScrollViewの使い方
  • Spinnerの使い方
  • Fragmentの使い方

次回予定

  • フラグメントの生成の分岐と時間割部分の詳細設計
  • それぞれの科目部分についてのデータ管理部分

学習備忘録:0章

Todo

  1. FE:基本情報技術者試験
  2. C言語
  3. java
  4. androidアプリ開発
  5. HTML・CSS
  6. javaScript

 

1. FE

  • 2021年度5月度の試験。CBTでの開催につき申し込みを忘れない


www.jitec.ipa.go.jp

 

2. C言語

  •  明解入門・中級編・ポインタ編

3. java

4. androidアプリ開発

5. HTML・CSS

  • 参考書のサイトの改造
  • Webデザイン周り

 

6. javaScript

  • 未定

 

2021年3月23日

 

 

 

kazuki0724i