2009-07-15 16 views
5

逆++、私が必要:ユーザ入力から文字列で読むC C++の配列

  • と[完了] char配列
  • に置きそして関数にその配列を渡す[完了]
  • 関数は、文字の順序を逆にすることになっている[問題!]
  • その後、バックmain()で、新たに反転した文字とその元の配列を表示します。

私はいくつかの制限があるため、実際に反転ん機能作成のトラブルを抱えている:

  • 私は任意のローカル配列 変数を持つことはできませんが。
  • ないポインタのいずれか

My機能はIEだけ元の配列に渡している。

void reverse(char word[]) 

EDIT:をここに私のコードベースは、これまでです:

void reverse(char word[]); 

void main() 
{ 
    char word[MAX_SIZE]; 

    cout << endl << "Enter a word : "; 
    cin >> word; 
    cout << "You entered the word " << word << endl; 

    reverse(word); 

    cout << "The word in reverse order is " << word << endl; 
} 

void reverse(char myword[]) 
{ 
    int i, temp; 
    j--; 

    for(i=0;i<(j/2);i++) 
    { 
    temp  = myword[i]; 
    myword[i] = myword[j]; 
    myword[j] = temp; 

    j--; 
    } 
} 
+0

で最大値と最小数を見つけるために役立ちますが、この宿題ですか?これらの制限は現実の世界にとってはかなり恣意的です。 –

+0

グレッグ、はい - それは確かに宿題で、私は同じように感じます! –

答えて

-1

我々場合C-ストリングを話しているなら、あなたの機能は

でなければなりません同じ質問(これは Reverse a sentence in C?からだまされやすい人です)

これは、あなたが探しているものを行うが、あなたはかなり近づいていないから

void reverse(char word[],size_t wordlen) 

最初の答え!

int ReverseString(char *rev) 
     { 
      if(*rev!='\0') 
      { 
       ReverseString(rev + 1); 
       putchar(*rev);//change this. 
      } 

      return 1; 
     } 

@devinbへのクレジット。これにもかかわらず

+0

申し訳ありませんが、それは言及するのを忘れた別の制限です - ポインタを使用することも想定されていません。 –

+0

これは、質問によって要求されたように、逆の配列を返しません。 –

+0

@Greg逆配列を返さなければならないとは、どこから言いますか? – Tom

8

はかなりhomeworky見て、私が提案してもよい:

いっそ
void reverse(char word[]) 
{ 
    int len=strlen(word); 
    char temp; 
    for (int i=0;i<len/2;i++) 
    { 
      temp=word[i]; 
      word[i]=word[len-i-1]; 
      word[len-i-1]=temp; 
    } 
} 

または、古典的なXORの実装:これは宿題ですので

void reverse(char word[]) 
{ 
    int len=strlen(word); 
    for (int i=0;i<len/2;i++) 
    { 
     word[i]^=word[len-i-1]; 
     word[len-i-1]^=word[i]; 
     word[i]^=word[len-i-1]; 
    } 
} 
+0

ありがとうございました。これは本当に役立ちます。 –

+1

@dazedandconfused:確信しています。何を学びましたか? –

+1

@dazedandconfused:私はこの質問をC++関連の面接で見ました。私はグレッグに同意する。彼のソリューションの仕組みを理解することが重要です。関連するノートでは、実際の世界では、配列の文字の順序を逆にする標準の逆アルゴリズム、つまりstd :: reverse(word、word + strlen(word))を単純に使うことができます。私はあなたの先生にその簡単な解決策を与えませんでした。 :) – Void

2

を、私はに向かってあなたを指します解決策を提供するだけでは解決できません。

あなたreverse機能が渡されwordを変更することができます。あなたが知っておく必要があります一つは、単語が(あなたが逆にどのように多くの文字を知っているだろう)でどのくらいの時間、あなたはstrlen()からこれを取得することができますです関数。ポインタを使用できない場合は、ローカルのintインデックス変数を使用できます。

+0

したがって、strlen()関数を使用するためにchar配列を文字列に変換する必要がありますか? –

+0

文字列は文字配列とまったく同じです。 strlen(word)を呼び出すことができます。 –

+0

グレッグありがとう、私はそれが私に与えている "警告"によって捨てられていた。それはうまく構築していた。 –

-1

//このプログラムは、配列

#include<iostream.h> 
#include<conio.h> 
int main() 
{int max; 

    int a[5]={12,1,0,4,5}; 
int min=a[0]; 
    int i=1; 
    max=a[0]; 

    while(i<=4) 
    { 
       if (max < a[i]) 
       max=a[i]; 
       if (min > a[i]) 
       min=a[i]; 
       i++; 

    } 
       cout << min <<"\n"; 
       cout << max; 
       getch(); 
       return 0; 
}    
+1

これは本当にこの質問の著者が求めていたものではありません - 彼らは配列を逆にしたがっていました。 – Zyerah