⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 deletenumber.cpp

📁 对于给定的正整数a
💻 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 + -