void Process::createSim()//构建相似度表 { cout << "开始构建相似度表....." << endl; cout << "user_item的大小:" << user_item.size() << endl; for (int i = 0;i <100;i++) { array<float, UserSize> arr; arr.fill(0); for (int j = 0;j < user_item.size();j++) { if (i == j) { arr[j] = 1; } else { float tem = calSim(user_item[i], user_item[j],i,j); arr[j] = tem / (user_item_len[i] * user_item_len[j]); } } user_sim.push_back(arr); } cout << "相似度表构建完成....." << endl;
时间: 2024-04-18 10:31:54 浏览: 17
这段代码是用来构建相似度表的。首先打印一条开始构建相似度表的消息,并输出user_item的大小。然后使用两个嵌套的循环来计算每个用户项之间的相似度。如果i和j相等,就将相似度设为1,否则调用calSim函数计算用户项i和j之间的相似度,并将结果除以user_item_len[i]和user_item_len[j]的乘积。最后将每个用户项的相似度数组添加到user_sim中。最后打印一条相似度表构建完成的消息。
相关问题
#include <iostream> using namespace std; int main() { int x; //输入时跳过前面的空白符(skipws),这也是默认的设置 cin.flags(cin.flags()|ios::skipws); //上个语句改为:cin.flags(cin.flags()&~ios::skipws);看看输入: 23434会怎么样? cin>>x; cout<<x<<endl; ios::fmtflags defaultFlags=cout.flags(); //保存原有的设置 cout.flags(defaultFlags|ios::showpos); //显示符号 cout<<x<<endl; //十六进制形式输出(hex),要求输出基数0x(showbase),要求输出大写(uppercase) cout.flags(defaultFlags&~ios::dec&~ios::oct|ios::hex|ios::uppercase|ios::showbase); cout<<x<<endl; char oldFillChar=cout.fill('*'); //填充字符设置为* cout.width(10); //输出宽度为10 cout.flags(cout.flags()|ios::right); //输出右对齐 cout<<x<<endl; cout.fill(oldFillChar); cout.width(10); cout<<x<<endl; cout.flags(defaultFlags); //恢复原有的设置 cout<<x<<endl; return 0; } 改写
以下是改写后的代码:
```c++
#include <iostream>
using namespace std;
int main() {
int x;
// 输入时跳过前面的空白符(skipws),这也是默认的设置
cin >> std::skipws >> x;
cout << x << endl;
ios::fmtflags defaultFlags = cout.flags(); // 保存原有的设置
cout.flags(defaultFlags | ios::showpos); // 显示符号
cout << x << endl;
// 十六进制形式输出(hex),要求输出基数0x(showbase),要求输出大写(uppercase)
cout.flags(defaultFlags & ~ios::dec & ~ios::oct | ios::hex | ios::uppercase | ios::showbase);
cout << x << endl;
char oldFillChar = cout.fill('*'); // 填充字符设置为*
cout.width(10); // 输出宽度为10
cout.flags(cout.flags() | ios::right); // 输出右对齐
cout << x << endl;
cout.fill(oldFillChar);
cout.width(10);
cout << x << endl;
// 恢复原有的设置
cout.flags(defaultFlags);
cout << x << endl;
return 0;
}
```
改写之后的代码与原代码的功能相同,只是更改了一些语法细节,使得代码更加规范和易读。
void Process::readData()//构建User-Item表 { ifstream infile; infile.open("data.txt"); if (!infile.is_open()) { cout << "data.txt打开失败....." << endl;
这段代码是一个名为 `readData` 的函数,用于读取名为 "data.txt" 的文件。它首先创建一个 `ifstream` 对象 `infile`,然后调用 `open` 函数打开文件。
如果文件成功打开,它会执行接下来的代码。如果文件打开失败,它会输出一条错误消息 "data.txt打开失败....."。
这段代码的目的是检查并打开名为 "data.txt" 的文件。如果文件成功打开,可能会有后续的代码来处理读取文件的操作。如果文件打开失败,则输出错误消息并终止程序执行。
相关推荐
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)