C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

ログ内検索
  • キーワードを複数指定する場合は 半角スペース で区切ってください。
  • 検索条件は、(AND)=[A かつ B] (OR)=[A または B] となっています。
  • [返信]をクリックすると返信ページへ移動します。
キーワード/ 検索条件 /
検索範囲/ 強調表示/ ON (自動リンクOFF)
結果表示件数/ 記事No検索/ ON
大文字と小文字を区別する

No.51602 の関連記事表示

<< 0 >>
■51602  配列 逆順
□投稿者/ ワンダ -(2010/07/11(Sun) 22:49:05)

    分類:[C/C++] 

    文字列を渡すと,その文字列の長さを返す関数 string_length() を書きなさい.また、この関数を使って渡された文字列を逆順にする関数 string_reverse() を書きなさい.


    上記のような課題が出されたのですが、いまいちよくわからないので質問出せてください。

    #include <stdio.h>
    #define N 10 /* 配列の要素数 */

    int main()
    {
    int a[N] = {4, 2, 11, 4, 15, 7, 9, 12, 3, 6};
    int b[N];
    int i;

    for (i = 0; i < N; i++) {
    b[i] = a[N-1-i];
    }
    for (i = 0; i < N; i++) {
    printf("%4d", b[i]);
    }
    printf("\n");
    return 0;
    }

    とりあえず関数等は考えずに、配列の要素を逆順にする構造を考えてみました。上記のものでは数字は逆順にできるんですが、文字列を逆にする方法がいまいちわからないので教えていただけると助かります。

親記事 /過去ログ87より / 関連記事表示
削除チェック/

■51603  Re[1]: 配列 逆順
□投稿者/ よねKEN -(2010/07/11(Sun) 23:16:28)
>
    No51602 (ワンダ さん) に返信
    > 上記のものでは数字は逆順にできるんですが、文字列を逆にする方法がいまいちわからないので教えていただけると助かります。

    ということは、文字列とは何か?を理解されていない、ということですね。
    Cの文字列は単なる文字の配列で、文字列を構成する個々の文字要素に加えて最後の要素として'\0'を含めたもの、です。
    最後の'\0'以外の要素を、数字での逆順にやったのと同様にすればよいですよ。

記事No.51602 のレス /過去ログ87より / 関連記事表示
削除チェック/

■51609  Re[1]: 配列 逆順
□投稿者/ .SHO -(2010/07/12(Mon) 00:38:48)
    No51602 (ワンダ さん) に返信

    > 文字列を渡すと,その文字列の長さを返す関数 string_length() を書きなさい.

    int string_length(char *p){return strlen(p);}
記事No.51602 のレス /過去ログ87より / 関連記事表示
削除チェック/

■51620  Re[2]: 配列 逆順
□投稿者/ すなふきぬ -(2010/07/12(Mon) 13:50:10)
    No51609 (.SHO さん) に返信
    > ■No51602 (ワンダ さん) に返信
    > 
    >>文字列を渡すと,その文字列の長さを返す関数 string_length() を書きなさい.
    > 
    > int string_length(char *p){return strlen(p);}
    
    strlenを自作するなら
    
    #include <stddef.h> /* size_t */
    size_t string_length(const char *s){
      size_t i;
      for (i=0; s[i]; i++);
      return i;
    }
    
    でもいいかも。size_tを使わないならintやunsigned longでもOK。
記事No.51602 のレス /過去ログ87より / 関連記事表示
削除チェック/

■51634  Re[3]: 配列 逆順
□投稿者/ επιστημη -(2010/07/13(Tue) 06:03:16)
>
    void string_reverse(char* p) {
      int i = 0;
      int j = string_length(p) -1 ;
      while ( i < j ) {
        p[i] と p[j] を交換する
        ++i;
        --j;
      }
    }
    
記事No.51602 のレス /過去ログ87より / 関連記事表示
削除チェック/

■51674  Re[4]: 配列 逆順
□投稿者/ .SHO -(2010/07/13(Tue) 21:36:00)
    >     p[i] と p[j] を交換する
    
    void swap( char *p, int i, int j ) {
      int w = p[i];
      p[i] = p[j];
      p[j] = w;
    }
記事No.51602 のレス /過去ログ87より / 関連記事表示
削除チェック/



<< 0 >>

パスワード/

- Child Tree -