这周主要学习了有关机器学习的知识和c++代码的练习。
机器学习的知识主要包括单变量线性回归和多变量线性回归以及一些基本的定义与术语。下面是学习时做的笔记:
在学习的过程中,遇到的较大的问题既是关于线性方程的理解,因为是第一次将较复杂的数学知识运用到代码中,所以理解上遇到了一些困难,最后经过思考后得到的感悟已经写在笔记里了,在这里就不重复了。
其次就是一些代码的练习:具体源代码如下:
1000以内的数字对于求解(3n+1)问题所需的步骤:
#include<iostream>
using namespace std;
int num = 0;
int main()
{
int a, b;
cin>>a;
if(a!=1)
for (int i = 0;i >= 0;num++)
{
b = a % 2;
if (b == 0)
a = (a / 2);
if (b == 1)
a = (3 * a + 1) / 2;
if (a == 1)
i = -2;
}
cout << num;
return 0;
}
对于输入的数字每一数字进行求和后将和以汉字的形式输出:
#include<iostream>
#include<cmath>
using namespace std;
int main()
{
int sum = 0;
int d, e, end=1 , c = 0;
char a[100] = {'0'};
int m[100] = {0};
cin >> a;
for (int i = 0;i<100;i++)
{
switch (a[i])
{
case '1':
m[i] = 1;
break;
case '2':
m[i] = 2;
break;
case '3':
m[i] = 3;
break;
case '4':
m[i] = 4;
break;
case '5':
m[i] = 5;
break;
case '6':
m[i] = 6;
break;
case '7':
m[i] = 7;
break;
case '8':
m[i] = 8;
break;
case '9':
m[i] = 9;
break;
case '0':
m[i] = 0;
break;
}
}
for (int i = 0;i<100;i++)
sum += m[i];
int n[100] = { 0 }, i;
for (i = 0;end >= 0;i++, c++)
{
d = pow(10, c);
e = sum / d;
end = e % 10;
if (end != 0)
n[i] = end;
else
{
n[i] = e;
end = -1;
}
}
i -= 2;
for (;i >= 0;i--)
{
switch (n[i])
{
case 1:
cout << "yi";
break;
case 2:
cout << "er";
break;
case 3:
cout << "san";
break;
case 4:
cout << "si";
break;
case 5:
cout << "wu";
break;
case 6:
cout << "liu";
break;
case 7:
cout << "qi";
break;
case 8:
cout << "ba";
break;
case 9:
cout << "jiu";
break;
case 10:
cout << "shi";
break;
}
if (i != 0)
cout << " ";
}
return 0;
}
ps:在敲的过程中遇到的一个问题就是无法实现对于“大数”的计算,原因是因为开始采用的数据类型为int型,后来经过一番修改才改成了字符串输入。
输入学生信息,排序输出最高与最低成绩:
#include<iostream>
#include<string>
using namespace std;
class stu
{
public:
string name, num;
int date;
};
int main()
{
int i;
cin >> i;
stu a[100];
for (int n = 0;n < i;n++)
{
cin >> a[n].name >> a[n].num >> a[n].date;
}
int max =0, min = 0;
for (int n = 1;n < i;n++)
{
if (a[max].date < a[n].date)
max = n;
if (a[min].date > a[n].date)
min = n;
}
cout << a[max].name << " " << a[max].num << endl;
cout << a[min].name << " " << a[min].num << endl;
return 0;
}
将数字用字母的方式来表示:
#include<iostream>
using namespace std;
int main()
{
int a, b, c, d;
cin >> a;
b = a / 100;
c = (a - b * 100) / 10;
d = a % 10;
for (int i = 0;i < b;i++)
cout << "B";
for (int i=0;i < c;i++)
cout << "S";
for (int i = 1;i <= d;i++)
cout << i;
return 0;
}
由于篇幅问题,在这里就不一一将运行截图展示出来了。在敲代码过程中遇到的问题主要包含两大类。
第一是对代码在整体构造上的不熟练:将问题转化成代码进行输出时,对于代码的思路问题和具体化时的细节问题。
第二是代码在解决问题时的不完善性,在实际测试中会有部分的特殊情况导致运行结果出现偏差。
对于这两个问题的解决,目前并没有一个快捷有效的方法,只能是通过日积月累来提升。
下周要做的还是继续进行代码的练习,机器学习打算尽量完结,如果可以顺路完结的话,将进行数据集与程序的对接练习。