当前位置:网站首页>QT item table new column name setting requirement exercise (find the number and maximum value of the array disappear)
QT item table new column name setting requirement exercise (find the number and maximum value of the array disappear)
2022-07-07 03:41:00 【Program yuan ZCC】
QT Project practice needs :
Insert the program column forward and backward or set the name of the new column : If it has been deleted before, first find the missing column in the middle add to , Otherwise, find the maximum , The name can also be modified at any time 、 repeatable , Various situations of project analysis are as follows :
For example, next : Find the maximum , A new column is created The name is show 5
For example, next : Find the minimum value missing in the middle , A new column is created The name is show 2
For example, next : A new column is created The name is show 1 ( show 1ss Do not conform to the show ”+ Numbers )
Main code :
QVector<ProgramCol*> programColList;// Store column array
class ProgramCol{
int programId = 0;// show id
int m_col = 0;// Column
string m_name =" show ";// Program name
}
// Insert 、 New column col Pass the new position
int ProgramManagement::insertProgramCol(int col)
{
int len = programColList.size();
int index = 0;
for (int n = 0; n < len; n++) {
if(programColList[n]->m_col == col ){
programColList[n]->m_col+=1;
index = n;
}else if(programColList[n]->m_col > col){
programColList[n]->m_col+=1;
}
}
int id = getMaxProgramColId();
id ++;
int nameIndex = findColNameIndex();
ProgramBaseAttr* info = new ProgramBaseAttr();
info->programId = id;
info->m_col = col;
info->m_name = " show " + to_string(nameIndex);
programColList.insert(index,info);
qDebug()<< "programColList col== " << col<<nameIndex;
return nameIndex;
}
bool ProgramManagement::isNum(string str)
{
stringstream sin(str);
double d;
char c;
if(!(sin >> d))
{
/* explain :
sin>>t Express the sin convert to double The variable of ( In fact, for int and float Type will receive ),
If the conversion is successful , Then the value is non 0, If the conversion is unsuccessful, it returns 0
*/
return false;
}
if (sin >> c)
{
/* explain :
This part is used to detect wrong input , The input form of numbers plus strings ( for example :34.f), In the upper part (sin>>t)
The digital part of the input has been received and converted , stay stringstream The corresponding part will also be removed ,
What I'm receiving at this time is .f This part , So the condition holds , return false
*/
return false;
}
return true;
}
// Find the missing number in the array
vector<int> ProgramManagement::findDisappearedNumbers(vector<int>& num)
{
vector<int>res;
if(num.size() == 0) return res;
sort(num.begin(),num.end());
num.erase(unique(num.begin(), num.end()), num.end()); //unique The return value is the starting position of the repeating element
vector<int>::iterator it;
for(int j=1;j<=num[num.size()-1];j++)
{
it=find(num.begin(),num.end(),j);
if(it==num.end())
{
res.push_back(j);
}
}
for(int i=0;i<res.size();i++)
{
cout<<res[i]<<endl;
}
return res;
}
// The program line is inserted forward and backward 、 New column : If it has been deleted before, first find the missing column in the middle add to , Otherwise, find the maximum ( Can't take Find the missing value assigned to id, If you change your name before, it will repeat , show id Still looking id Maximum +1)
int ProgramManagement::findColNameIndex()
{
vector<int> nums = {};
for(int i = 0;i<programColList.size();i++) {
string name1 = programColList[i]->m_name.substr(0, 6);// Intercept the beginning " show "
qDebug() << "name1==== " << QString::fromStdString(name1);
if(name1 == " show ") {
string name2 = programColList[i]->m_name.substr(6);// Intercept " show " after
qDebug() << "name2==== " << QString::fromStdString(name2);
if(isNum(name2) && (name2.substr(0, 1) != "0"))// Judge as a number and Don't to 0 start
{
int numA = atoi(name2.c_str());//string Turn into int
qDebug() << " The string is converted to int Greater than 0 also Does not start with 0 Add array === =" << numA;
if(numA > 0) {
nums.push_back(numA);
}
}
}
}
qDebug() << "nums size == " << nums.size();
int nameIndex = 1;
if(nums.size() > 0) { // I haven't changed my name accord with “ show ”+ Numbers The array is greater than 0 Find missing . =0 Have been changed, do not meet the name nameIndex It's directly equal to 1
vector<int> l = findDisappearedNumbers(nums);
qDebug() << "l size == " << l.size();
if(l.size() > 0) {
// Find the missing number nameIndex Equal to the first term
nameIndex = l[0];
} else {
// No missing found Just look for Name array Maximum +1 ,( Program name 、 The order can be changed , look for col forbid )
vector<int>::iterator itMax = max_element(nums.begin(), nums.end());
nameIndex = *itMax + 1;
}
}
qDebug() << "nameIndex== " << nameIndex;
return nameIndex;
}
int ProgramManagement::getMaxProgramColId() {
int maxid = 0;
foreach(auto scr, programColList)
{
if(scr->programId > maxid)
{
maxid = scr->programId;
}
}
return maxid;
}
边栏推荐
- 卡尔曼滤波-1
- QT thread and other 01 concepts
- 如何自定义Latex停止运行的快捷键
- Code quality management
- Shell programming basics
- 海思3559万能平台搭建:RTSP实时播放的支持
- [safe office and productivity application] Shanghai daoning provides you with onlyoffice download, trial and tutorial
- 树莓派设置wifi自动连接
- 【colmap】已知相机位姿情况下进行三维重建
- QT 项目 表格新建列名称设置 需求练习(找数组消失的数字、最大值)
猜你喜欢
枚举通用接口&枚举使用规范
Calculation of time and space complexity (notes of runners)
About Tolerance Intervals
线性表的查找
Depth analysis of compilation constants, classloader classes, and system class loaders
概率论公式
哈夫曼树基本概念
[security attack and Defense] how much do you know about serialization and deserialization?
VHDL实现单周期CPU设计
23. (ArcGIS API for JS) ArcGIS API for JS ellipse collection (sketchviewmodel)
随机推荐
我的勇敢对线之路--详细阐述,浏览器输入URL发生了什么
About Estimation Statistics
sshd[12282]: fatal: matching cipher is not supported: aes256- [email protected] [preauth]
预处理——插值
Hisilicon 3559 universal platform construction: RTSP real-time playback support
[untitled]
如何自定义Latex停止运行的快捷键
SSL证书部署
Basic concepts of Huffman tree
Significance and measures of source code confidentiality
24. (ArcGIS API for JS) ArcGIS API for JS point modification point editing (sketchviewmodel)
变量、流程控制与游标(MySQL)
概率论公式
About Tolerance Intervals
浅谈网络安全之文件上传
API data interface of A-share index component data
23.(arcgis api for js篇)arcgis api for js椭圆采集(SketchViewModel)
My brave way to line -- elaborate on what happens when the browser enters the URL
QT 打开文件 使用 QFileDialog 获取文件名称、内容等
PIP download only, not install