2016-11-20 22 views
-1

大きな問題があります。関数呼び出し[テーブル]が動作しません

タスクがある:

はint値tab、アレイサイズn、及び数kのアレイを取るC++関数を書きます。テーブルtabの各数値、少なくともk桁の数字、それ以外の場合はfalseが返されると、関数はtrueを返します。基本機能の内部から呼び出される追加の補助機能に番号を含める必要がある桁数を確認します。また、データを読み込み、ベースを呼び出して結果を出力するメイン関数を記述する必要があります。コールについて

(レコードは[]配列である): f ([123,4425,2224,222,55553], 5, 3)

関数trueを返すべきです。 123,4425,2224,222,55553少なくとも3つのデジタル数の各ので

コールの場合:数があるので f ([123,4425,2,222,5], 5, 2)

機能は、例えば2ため、偽

を返すべきデジタル一つであり、1未満のK = 2

マイコードである:

#include <iostream> 

int ile_cyfr(int a) 
{ 
    int temp=0; 
    do 
    { 
     a = a/10; 
     temp++; 

    } while(a>0); 

    return temp; 
} 

bool funkcja(int *tab, int n, int k) 
{ 
    bool stan = false; 

    for (int i=0; i<n; i++) 
    { 
     if (ile_cyfr(tab[i])<k) 
     { 
      stan = false; 
      if (stan == false) 
      { 
       return stan; 
       return 0; 
      } 
     } 
     else 
     { 
      stan = true; 
      return stan; 
     } 
    } 
} 

int main() { 
    using namespace std; 

    int n=0, k=0; 

    int *tab = new int[n]; 

    cout << "Podaj ilosc liczb: " << endl; 
    cin >> n; 

    cout << "\nPodaj liczby: " << endl; 

    for (int i=0; i<n; i++) { 
     cin >> tab[i]; 
    } 

    cout << "\nPodaj minimalna ilosc liczb: " << endl; 
    cin >> k; 

    cout << funkcja([444,856,671,321], n, k); 

    return 0; 
} 

問題があること

cout << funkcja([444,856,671,321], n, k); 

答えて

0

はじめに、機能funkcjaは無効です。配列の最初の要素がk以上の桁数を持つ場合にtrueを返します。私が理解しているように、配列のすべての要素が条件を満たすことを確認する必要があります。

機能は

cout << funkcja([444,856,671,321], n, k); 

この文のよう

bool funkcja(const int *tab, int n, int k) 
{ 
    int i = 0; 

    while (i < n && !(ile_cyfr(tab[i]) < k)) i++; 

    return n != 0 && i = n; 
} 

次のような方法は、それは間違った構文を持って書くことができます。

変数tabを関数呼び出しの最初の引数として渡す必要があります。これらの値444,856,671,321は、ポインタtabによって指された配列の要素に割り当てられるべきです。

このように私の機能にタイプミスがありました@DawidIrzyk

cout << funkcja(tab, n, k); 
+0

を書きます。 int i = 0でなければなりません。 –

関連する問題