当前位置:网站首页>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;
}
边栏推荐
- 21. (article ArcGIS API for JS) ArcGIS API for JS rectangular acquisition (sketchviewmodel)
- 25.(arcgis api for js篇)arcgis api for js线修改线编辑(SketchViewModel)
- 复杂因子计算优化案例:深度不平衡、买卖压力指标、波动率计算
- Set static IP for raspberry pie
- Docker部署Mysql8的实现步骤
- Jerry's RTC clock development [chapter]
- 亚像素级角点检测Opencv-cornerSubPix
- qt-线程等01概念
- 【安全攻防】序列化与反序列,你了解多少?
- Set WiFi automatic connection for raspberry pie
猜你喜欢
卡尔曼滤波-1
My brave way to line -- elaborate on what happens when the browser enters the URL
RestClould ETL 社区版六月精选问答
Leetcode-02 (linked list question)
VHDL implementation of arbitrary size matrix multiplication
Graphical tools package yolov5 and generate executable files exe
线性表的查找
Open3d mesh filtering
Probability formula
About Tolerance Intervals
随机推荐
Graphical tools package yolov5 and generate executable files exe
C# Task拓展方法
QT 打开文件 使用 QFileDialog 获取文件名称、内容等
华为小米互“抄作业”
Cryptography series: detailed explanation of online certificate status protocol OCSP
What is Ba? How about Ba? What is the relationship between Ba and Bi?
First understand the principle of network
ubuntu20安装redisjson记录
How to customize the shortcut key for latex to stop running
QT thread and other 01 concepts
[security attack and Defense] how much do you know about serialization and deserialization?
密码学系列之:在线证书状态协议OCSP详解
24. (ArcGIS API for JS) ArcGIS API for JS point modification point editing (sketchviewmodel)
21.(arcgis api for js篇)arcgis api for js矩形采集(SketchViewModel)
Restcloud ETL Community Edition June featured Q & A
Shell programming basics
.net中 接口可以有默认实现了
小程序能运行在自有App中,且实现直播和连麦?
Principle of attention mechanism
大白话高并发(二)