这是我的任务:我们可以将这些数据(char,int和float)传递给该函数。在每个组之前,我们必须指定组中的元素数,然后是它们的类型(使用枚举)和数据本身。这些群体可以是任何数量。因此,在整个列表的开头,我们必须指出要处理的组的总数。任务是将数据 ---从 char 转换为 int ,并从 float 转换为 double < /强>
这是我的代码。但是有一个错误。我以前从未见过它:
你能帮助我吗?谢谢!#include "stdafx.h"
#include "iostream"
#include "stdarg.h"
using namespace std;
enum data { Char, Іnt, Float};
int main()
{
float f1, f2, f3, f4;
int i1, i2, i3, i4;
void dіspl(int, int, enum data, ...);
do
{
dіspl(1, 3, Char, 'a', 'b', 'c');
cin >> i1 >> i2 >> i3 >> i4;
dіspl(2, 4, Іnt, i1, i2, i3, i4, 3, Char, 'a', 'b', 'c');
cin >> f1 >> f2 >> f3 >> f4 ;
dіspl(3, 3, Char, 'x', 'z', 't', 3, Іnt, i1, i2, i3, 4, Float, f1, f2, f3, f4);
cout<<"exіt=0?";
cin>>i1;
} while (i1);
return 0;
}
// k - count of groups, i - count of elements in first grour, Турe - their type.
void displ(int k, int i, enum data Type, ...){
va_list arg;
va_start(arg, Type);
while(k--) {
switch(Type)
{
case Char: while(i--)
cout << va_arg(arg, char) << " "; break;
case Іnt: while (i--)
cout << va_arg(arg, int) << " "; break;
case Float: while(i--)
cout << va_arg(arg, double) << " "; break;
default:
cout << "Type=ERROR";
return;
}
cout << endl; i = va_arg(arg, int);
Type = va_arg(arg, enum data);
}
va_end(arg);
}
答案 0 :(得分:0)
移动
void dіspl(int, int, enum data, ...);
以上
int main()
答案 1 :(得分:0)
我的编译器成功编译了它。看起来像编译问题。可能会更好地工作:
void displ(int k, int i, int Type, ...){
va_list arg;
va_start(arg, Type);
while(k--) {
switch(Type)
{
case Char: while(i--)
cout << va_arg(arg, char) << " "; break;
case Іnt: while (i--)
cout << va_arg(arg, int) << " "; break;
case Float: while(i--)
cout << va_arg(arg, double) << " "; break;
default:
cout << "Type=ERROR";
return;
}
cout << endl; i = va_arg(arg, int);
Type = va_arg(arg, enum data);
}
va_end(arg);
}