2016-11-20 48 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; –