2017-10-27 3 views
-2

配列が回文型かどうかを出力するように関数を呼び出そうとしています。私が間違っていることを教えてください。私は引数を正しく渡していないようです。私がその投稿に間違いを犯した場合は、教えてください。私はかなり新しいです。別の関数を使って回文を比較する

これは、出力が見えるようになっている方法です。

これは私の出力は次のようになります。

これは私のコードです:

#include <stdio.h> 

void createReverseArray(); 
void printArray(); 
void compareArray(); 

int main() 
{ 
    int MyArray1[] = {1, 2, 3, 2, 1}; 
    int MyArray2[] = {1, 2, 3, 4, 1}; 
    int MyArray3[] = {1, 2, 3, 3, 2, 1}; 
    int MyArray4[] = {1, 2, 3, 4, 2, 1}; 

    int n = 5, i, j, n, temp; 

    createReverseArray(MyArray1[5]); 
    createReverseArray(MyArray2[5]); 
    createReverseArray(MyArray3[5]); 
    createReverseArray(MyArray4[5]); 

    compareArray(MyArray1[5]); 
    compareArray(MyArray2[5]); 
    compareArray(MyArray3[5]); 
    compareArray(MyArray4[5]); 

    printArray(MyArray1[5]); 
    printArray(MyArray2[5]); 
    printArray(MyArray3[5]); 
    printArray(MyArray4[5]); 
} 

int createReverseArray(int &a[], int n) 
{ 
    i = 0; 
    j = n - 1; 

    while(i<j) { 
     temp = a[i]; 
     a[i] = a[j]; 
     a[j] = temp; 
     i++; 
     j--; 
    } 

    return reverse = a[]; 
} 

int compareArray(int &a[], int reverse) 
{ 
    if(a[] == reverse) { 
     printf("The array is a palindrome") 
    } 
    else { 
     return 0; 
    } 

} 


void printArray(&a[]) 
{ 
    printf("Array elements are:%d", a[]); 
    compareArray(a[]); 
} 
+0

_ "これは出力が" _ And? "のように表示される方法です。 **本当に**どのように見えるのですか?それはなぜ悪いのですか?予想される出力と実際の出力を含める必要があります。 _ "私が間違っていることを教えてください" _は問題の説明ではありません。問題が何であるのかを特定していないので、何が間違っていると思われるのかはわかりません。 –

+0

あなたのcompareArray関数が完了していません。 – mnistic

+0

'createReverseArray()'の 'reverse'は何ですか? – Adalcar

答えて

2

私はそうではありません私が提供されているコードを持っているが、あなたの目的は、配列が回文であるかどうかを検出するだけであれば、それは非常に簡単で、単一の関数で行うことができる不確実性の量に起因するURE:

bool isPalindrome(int[] list, int size) 
{ 
    for(int k = 0; k < size/2 - 1; k++) 
     if(list[k] != list[size - k - 1]) 
      return false; 
    return true; 
} 

この配列の半分を反復し、それを後半と比較し、即時の値を出るとそのミラーと等しくなりません。あなたのコードの間違いについては、私は今後の参考のために、より明白なもののいくつかを指摘することができるかもしれません

  1. 引数の数が間違って機能を呼び出します。例:createReverseArray(MyArray1[5])
  2. 配列の代わりに整数を渡すことを引数として呼び出します。例: MyArray[5]は、の6番目の整数です。
  3. スコープを無視し、変数を宣言せずに変数を使用します。例:iおよびjmainは、createReverseArrayで使用されています。これは動作しません。
  4. 整数を配列ポインタと比較する。例:if(a[] == reverse)。あなたが達成しようとしていたものであっても、これはあなたに有益な結果を与えることはありません。
  5. フォワード宣言と実装で異なる機能を宣言します。例:void createReverseArray();およびint createReverseArray(int &a[], int n)。同じ引数と戻り値を宣言する必要があります。そうしないと、コンパイラは同じことを理解できません。
+0

!私は配列と関数をもう少し読み上げて、もう一度やり直してみようと思います! – Alex

+0

@Alex私はあなたにいくつかの基本的な間違いを避けるのに役立つかもしれないいくつかの(わずかに無頓着だが多分役に立つかもしれない)アドバイスを追加しました – Adalcar

+0

あなたに感謝します!将来の参照のためにメモしておきます – Alex

関連する問題