2016-11-20 80 views
-1

我有一個大問題。函數調用[表]不工作

的任務是:

C++編寫一個函數,它整數tab,陣列尺寸n,而且數量k的陣列。如果表tab中的每個數字(至少爲k位數字)返回true,否則返回false。檢查從基本功能內部調用的附加輔助功能中應包含多少個數字。您還應該編寫讀取數據的主函數,調用基數並輸出其結果。

對於呼叫(記錄[]是一個數組): f ([123,4425,2224,222,55553], 5, 3)

該函數應返回真。由於每個數字123,4425,2224,222,55553至少三個數字的

呼籲: f ([123,4425,2,222,5], 5, 2)

該函數應返回假

因爲有許多,例如2,其是數字1和小於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。據我所知,你必須檢查數組的所有元素滿足條件。

該函數可以寫成下面的方式

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; 
} 

至於這種說法

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

然後它有一個不正確的語法。

您必須傳遞變量tab作爲函數調用的第一個參數。應將這些值444,856,671,321分配給由指針tab指向的數組元素。

這樣寫

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

@DawidIrzyk有在我的功能一個錯字。必須有int i = 0; –