Dawid Irzyk - 7 months ago 35
C++ Question

# Function call [table] not working

I have big problem.

Write a function in C ++ that takes a array of ints

`tab`
, array size
`n`
, and the number
`k`
. The function returns returns
`true`
if each of the numbers in the table
`tab`
, at least k digits long, and
`false`
otherwise. Checking how many digits has the number should be included in the additional auxiliary functions that call from inside a basic function. You should also write the main function that reads the data, calls the base and outputs its result.

For calls (record [] is an array):
`f ([123,4425,2224,222,55553], 5, 3)`

The function should return true. Since each of the numbers 123,4425,2224,222,55553 at least three digital

Calls for:
`f ([123,4425,2,222,5], 5, 2)`

The function should return false

Because there are a number, for example 2 which is a digital one and is less than 1 k = 2

My code :

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

The problem is that the line:

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

For starters the function `funkcja` is invalid. It returns true in case when the first element of the array has the number of digits greater than or equal to k. As I have understood you have to check that all elements of the array satisfy the condition.

The function can be written the following way

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

As for this statement

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

then it has an incorrect syntax.

You have to pass the variable `tab` as the first argument of the function call. These values 444,856,671,321 should be assigned to elements of the array pointed to by the pointer `tab`.

Thus write

``````cout << funkcja( tab, n, k );
``````
Source (Stackoverflow)