当前位置:网站首页>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;
}
边栏推荐
- [C language] question set of IX
- [Dameng database] after backup and recovery, two SQL statements should be executed
- [colmap] 3D reconstruction with known camera pose
- PIP download only, not install
- Jerry's phonebook acquisition [chapter]
- 存储过程与函数(MySQL)
- [safe office and productivity application] Shanghai daoning provides you with onlyoffice download, trial and tutorial
- 我的勇敢对线之路--详细阐述,浏览器输入URL发生了什么
- 自适应非欧表征广告检索系统AMCAD
- Can the applet run in its own app and realize live broadcast and connection?
猜你喜欢
U.S. Air Force Research Laboratory, "exploring the vulnerability and robustness of deep learning systems", the latest 85 page technical report in 2022
24.(arcgis api for js篇)arcgis api for js点修改点编辑(SketchViewModel)
R data analysis: how to predict Cox model and reproduce high score articles
Set WiFi automatic connection for raspberry pie
树莓派设置wifi自动连接
QT thread and other 01 concepts
ubuntu20安裝redisjson記錄
海思万能平台搭建:颜色空间转换YUV2RGB
Sub pixel corner detection opencv cornersubpix
2022年上半年HIT行业TOP50
随机推荐
23.(arcgis api for js篇)arcgis api for js椭圆采集(SketchViewModel)
体会设计细节
R data analysis: how to predict Cox model and reproduce high score articles
Delete data in SQL
Basic concepts of Huffman tree
注意力机制原理
22.(arcgis api for js篇)arcgis api for js圆采集(SketchViewModel)
[leetcode] 700 and 701 (search and insert of binary search tree)
Ubuntu 20 installation des enregistrements redisjson
HMS Core 机器学习服务打造同传翻译新“声”态,AI让国际交流更顺畅
Vernacular high concurrency (2)
Numpy中排序操作partition,argpartition,sort,argsort
自适应非欧表征广告检索系统AMCAD
函数重入、函数重载、函数重写自己理解
Lab1 configuration script
图形化工具打包YOLOv5,生成可执行文件EXE
2022.6.28
Variables, process control and cursors (MySQL)
Kalman filter-1
Under the tide of "going from virtual to real", Baidu AI Cloud is born from real