当前位置:网站首页>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;
}边栏推荐
- 25.(arcgis api for js篇)arcgis api for js线修改线编辑(SketchViewModel)
- Sorting operation partition, argpartition, sort, argsort in numpy
- 自适应非欧表征广告检索系统AMCAD
- What is Ba? How about Ba? What is the relationship between Ba and Bi?
- QT 项目 表格新建列名称设置 需求练习(找数组消失的数字、最大值)
- Jerry's transmitter crashed after the receiver shut down [chapter]
- 本机mysql
- 23.(arcgis api for js篇)arcgis api for js椭圆采集(SketchViewModel)
- 【安全攻防】序列化與反序列,你了解多少?
- Basic concepts of Huffman tree
猜你喜欢

变量、流程控制与游标(MySQL)

Huawei and Xiaomi "copy each other"

Flutter3.0, the applet is not only run across mobile applications

函数重入、函数重载、函数重写自己理解

Kalman filter-1

R data analysis: how to predict Cox model and reproduce high score articles

CVPR 2022 best paper candidate | pip: six inertial sensors realize whole body dynamic capture and force estimation

QT thread and other 01 concepts

Decoration design enterprise website management system source code (including mobile source code)

My brave way to line -- elaborate on what happens when the browser enters the URL
随机推荐
哈夫曼树基本概念
[dream database] add the task of automatically collecting statistical information
亚像素级角点检测Opencv-cornerSubPix
VHDL实现单周期CPU设计
PIP download only, not install
Sorting operation partition, argpartition, sort, argsort in numpy
Tencent cloud native database tdsql-c was selected into the cloud native product catalog of the Academy of communications and communications
[C language] question set of IX
GPT-3当一作自己研究自己,已投稿,在线蹲一个同行评议
First understand the principle of network
Calculation of time and space complexity (notes of runners)
Docker部署Mysql8的实现步骤
Leetcode-02 (linked list question)
函数重入、函数重载、函数重写自己理解
[leetcode] 450 and 98 (deletion and verification of binary search tree)
20.(arcgis api for js篇)arcgis api for js面采集(SketchViewModel)
About Confidence Intervals
数学归纳与递归
Do you know the five most prominent advantages of E-bidding?
How to customize the shortcut key for latex to stop running