类方法不起作用
Class method not working
class automat
{
int stari[50], sf[50], n, nsf, si;
char m[50][50];
public:
automat(int a, int b) { setn(a); setstari(); setnsf(b); intitsf(); initm(); }
void setn(int a) { n = a; } //init. nr de stari
void setstari() { for (int i = 0; i < n; i++) stari[i] = i; } // init. starile
void setnsf(int a) { nsf = a; } // init. nr de stari finale
void intitsf() { for (int i = 0; i < nsf; i++) sf[i] = 0; } //init stari finale cu 0 la inceput
void initm() { for (int i = 0; i < n; i++) for (int j = 0; j < n; j++) m[i][j] = NULL; } // init muchii cu 0 la inceput
void setsf(int a) { sf[a] = 1; } // seteaza o stare finala
void addm(int a, int b, char c) { m[a][b] = c; } // adauga muchie
void setsi(int a) { si = a; } // seteaza starea initiala
void afismuchii()
{
for (int i = 0; i < n; i++)
for (int j = 0; j < n; j++)
if (m[i][j] != 0)
cout << i << " se duce in " << j << " cu " << m[i][j] << endl;
}
};
int main()
{
ifstream f("file.txt");
int n, m, F;
f >> n; f >> m; f >> F;
automat a(n, F);
int x, y; char c;
f >> x;
a.setsi(x); //init. stare initiala
while (F) // init. stari finale
{
f >> x;
a.setsf(x);
F--;
}
while (m) // init. muchii
{
f >> x; f >> c; f >> y;
a.addm(x, y, c);
m--;
}
a.afismuchii();
}
请原谅我的评论和函数名称。
在程序结束时,当我运行" a.afismuchii((; "时,我应该得到:
0 变为 1,带有0 与 b 一起变为 1
但相反,矩阵为 NULL,我只得到:
0 变为 10 变为 1
所以addm((方法可能无法正常工作,但我不明白为什么。
你必须将 (m[i][j]( 转换为 static_cast (m[i][j](
在automat
中,m
是一个类型为 char
的二维数组。 afismuchii
方法是将此数组的 char 作为字符而不是数字输出到标准输出,这就是您想要的样子。 要获得一个数字,您需要先投掷它。
这是因为当您将char
输出到ostream
时,您将获得 char 输出,而不是数值。 cout << 'A';
将输出一个A
,而不是65
这是持有A
字符的char
通常具有的数值。 所以afismuchii
中的行真的应该是:
cout << i << " se duce in " << j << " cu " << static_cast<int>(m[i][j]) << endl;
我想它正在工作,因为它cout
一些东西。如果 NULL 定义为 0,则不会像那样cout
。
但相反,矩阵为 NULL,我只得到:
0 变为1,0 变为 1
其次因为m[][]
是char
,与0比较是不合适的。
if(m[i][j]!=0)
可能是
if(m[i][j]!=NULL)
最后我建议您在调用addm
之前验证输入因为整数小于 50(且不小于 0(,并且字符有意义(可读?
相关文章:
- C++映射:具有自定义类的运算符[]不起作用(总是返回0)
- 在其他文件中创建类时在 c++ 项目中不起作用
- 通过 get-Method 访问变量在类外不起作用
- G++ C++17 类模板参数推导在非常特殊的情况下不起作用
- 仅包含可移动 std::map 的类的移动构造函数不起作用
- C++ assigment std::list:<typename>:itrator 在 main 中工作,但在方法中它不起作用
- 类和构造函数中的函数根本不起作用,并且不返回任何错误
- 类中的虚拟布尔函数参数不起作用
- 正向打包在模板类中不起作用
- 在 C++ 中通过引用传递类成员时,Const 不起作用
- 转发声明在命名空间中不起作用的替代方法
- 基本加密和解密方法不起作用 C++ 11.
- 从类中的另一个文件请求函数不起作用
- 结构/方法不起作用
- 指向类中函数方法的指针不起作用
- 类方法不起作用
- 使用虚拟重写基类方法不起作用
- 模板类模板方法参数中的模板别名不起作用
- 派生类的继承方法不起作用
- 向量::擦除在类方法中不起作用,但在 main 中工作;没有编译器错误,只有意外的结果