我有很大的问题。
任务是:
在C ++中编写一个函数,该函数采用整数tab
,数组大小n
和数字k
的数组。如果表true
中的每个数字(至少k位长)和tab
,则函数返回false
。检查数字的位数应包含在从基本功能内部调用的附加辅助功能中。您还应该编写读取数据的主函数,调用基数并输出结果。
对于调用(record []是一个数组):
f ([123,4425,2224,222,55553], 5, 3)
该函数应返回true。由于每个数字123,4425,2224,222,55553至少有三个数字
呼吁:
f ([123,4425,2,222,5], 5, 2)
该函数应返回false
因为有一个数字,例如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 :(得分: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 );