📄 deletenumber.cpp
字号:
#include<fstream.h>
#include<stdlib.h>
#define INPUT_FILE "input.txt" // 输入目标文件名
#define OUTPUT_FILE "output.txt" // 输出目标文件名
#define MAX 50 // 正整数的最大位数
fstream from; // 文件流
fstream to; // 文件流
void deleteNumber(int [], int &, int);
void main()
{
char input_char[MAX]; // 存放从文件中第一行读来的字符串
char input_k[2]; // 存放从文件中第二行读来的字符串
char get_char[1]; // 存放input_char中的各个字符
int input_int[MAX]; // 存放经过转换后的数字
int k; // 删除数字的个数
int n = -1; // 正整数的位数
// 初始化input_char
for(int i = 0; i < MAX; i++)
{
input_char[i] = 'a';
}
// 创建读文件
from.open(INPUT_FILE, ios::in);
// 读文件的第一行
from.getline(input_char, MAX, '\n');
// 把从文件中读来的字符逐个转换成数字
for(i = 0; i < MAX; i++)
{
if(input_char[i] == 'a')
break;
get_char[0] = input_char[i];
input_int[i] = atoi(get_char);
n++;
}
// 读文件的第二行
from.getline(input_k, 3, '\n');
// 把从文件中读来的字符串转换成数字
k = atoi(input_k);
cout<<"\t\t删数问题"<<endl<<endl;
cout<<"删数前的正整数 a:\t";
for(i = 0; i < n; i++)
cout<<input_int[i];
cout<<endl<<endl<<"删除数字的个数 k:\t"<<k<<endl<<endl;
cout<<"新数:\t";
// 删数
deleteNumber(input_int, n, k);
//创建写文件
to.open(OUTPUT_FILE, ios::out);
for(i = 0; i < n; i++)
{
to<<input_int[i]; // 把新数写到文件中
cout<<input_int[i];
}
cout<<endl<<endl;
from.close();
to.close();
}
void deleteNumber(int input[], int & n, int k)
{
for(int i = 1; i <= k; i++)
{
for(int j = 0; j < n; j++)
{
// 如果已遍厉的序列不是非递减,则删除递增序列中的最后一个数字
if(input[j] > input[j+1])
{
for(int t = j; t < n - 1; t++)
input[t] = input[t+1];
n--;
break;
}
// 如果整个序列非递减,则删除递增序列中的最后一个数字
if(j == (n - 1))
n--;
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -