C++内存小练习

使用数据文件中的一组地震检波器测量值确定可能的地震事件的位置

程序的输入是名为map.txt的数据文件和用于计算短时间能量和长时间能量的 取样值的数目。输出是给出关于潜在的地震事件次数的报告

复制代码
#include <iostream>
#include <fstream>

using namespace std;

//定义一个指标用来判断是否发生了地震
#define INDEX 1.5
double power(double arr[11], int n, int window){
	double xsqure = 0;
	for (int i = 0; i < window; i++){
		xsqure = pow(arr[n - i], 2);//这个pow函数是取次方的意思
	}
	return xsqure / window;
}
int main(void) {
	string filename;
	int num = 0;
	double senior = 0, long_power = 0, short_power = 0, finall = 0;
	int long_window = 0;
	int short_window = 0;
	double *senior_num = NULL;
	cout << "请输入文件名:" << endl;
	cin >> filename;

	ifstream file;
	file.open(filename);
	if (file.fail()) {
		cerr << "输入文件名错误:"<<strerror(errno) << endl;
	}
	file >> num >> senior;
	cout << num <<" " << senior << endl;
	if (num>0){
		senior_num = new double[num];//按需分配空间
		for (int i = 0; i < num; i++){
			file >> senior_num[i];
		}
	}

	cout << "请输入长期判断的数据:" << endl;
	cin >> long_window;
	cout << "请输入短期判断的数据:" << endl;
	cin >> short_window;

	for (int i = long_window-1; i < num; i++){
		long_power = power(senior_num, i, long_window);
		short_power = power(senior_num, i, short_window);
		cout << long_power << endl;
		cout << short_power << endl;
		finall = short_power / long_power;
		cout << finall << endl;
		if (finall > INDEX) {
			cout << "地震可能发生在:" << senior * i << " " << endl;
		}
	}
	delete[] senior_num;//释放空间
	
}

编写一个程序,使用 cin 从标准输入输入 3 段文字,保存到一段动态分配的 内存中,每一段文字输入后,必须要即时保存到动态内存中

复制代码
#include <iostream>
#include <fstream>

using namespace std;
/*
编写一个程序,使用 cin 从标准输入输入 3 段文字,保存到一段动态分配的
内存中,每一段文字输入后,必须要即时保存到动态内存中
*/

int main(void) {
	string* p = NULL;
	string str;
	int i = 0;
	p = new string[3];
	while (i<3){
		str.clear();//每次循环将字符串清空
		cout << "请输入"<< i+1 <<"第个字符串:" << endl;
		cin >> str;

		*(p + i) = str;
		cout << "此时动态内存中p的值为:" << endl;
		for (int k = 0; k <= i; k++){
			cout << *(p+k) <<"";
		}
		cout << endl;
		i++;
	}
	delete[] p;//释放内存
}

编写一个程序,链接两个字符串字面常量,将结果保存在一个动态分配的 char 数组中。重写这个程序,连接两个标准 string 对象

复制代码
#include <iostream>
#include <fstream>

using namespace std;
/*
编写一个程序,链接两个字符串字面常量,将结果保存在一个动态分配的 char
数组中。重写这个程序,连接两个标准 string 对象
*/

int main(void) {
	string str1 = "name";
	string str2 = "我的";
	string str3 = str1 + str2;

	string* str = new string[2];
	for (int i = 0; i < str3.length(); i++){
		*(str + i) = str3[i];
	}
	for (int i = 0; i < str3.length(); i++) {
		cout << *(str + i);
	}
	delete[] str;//释放内存
}

根据输入的二维数组的行数和列数,动态地为该数 组分配存储空间;其次,向二维数组中 输入数据;最后输出该数组中的所有元素。

复制代码
#include<iostream>
#include <stdlib.h>
using namespace std;
int main(void) {
	int* p = NULL;
	int row, col;
	int i, j, k = 1;
	cout << "Input number of row : \n";
	cin >> row;
	cout << "Input number of column\n";
	cin >> col;
	p = new int[row * col];
	if ((row * col)==0) {
		cout << "Not allocate memory!\n";
		exit(1);
	}
	for (i = 0; i < row; i++) {
		for (j = 0; j < col; j++) p[i*col+j] = k++;//根据行列下标,计算下标值
	}
	for (i = 0; i < row; i++) {
		for (j = 0; j < col; j++)
			cout << p[i * col + j] << '\t';//根据行列下标,计算下表值
		cout << endl;
	}
	delete[] p;
	return 0;
}
相关推荐
luj_176813 分钟前
桥牌思维启示:系统设计的模块化架构
c语言·开发语言·c++·经验分享·算法
会周易的程序员1 小时前
aiDgePLC iec61131 虚拟机 完整使用文档
c++·物联网·架构·st·iec61131
小小龙学IT1 小时前
Boost.Beast 深度实战:基于 Asio 的开源 C++ HTTP/WebSocket 协议库
c++·websocket·http
不可求~2 小时前
C++ std::string_view 不是字符串:从悬空引用到安全用法
java·开发语言·c++
小小龙学IT3 小时前
C++ 正则表达式完全指南:从 std::regex 实战到 RE2 引擎原理(NFA/DFA/回溯陷阱)
c++·正则表达式
码匠许师傅6 小时前
【C++ 面试真题】聊聊 C++ 的序列容器
java·c++·面试
C++ 老炮儿的技术栈7 小时前
Qt5.9.1 Windows 完整开发环境搭建流程
开发语言·c++·windows·qt·编辑器·代码化
欧特克_Glodon7 小时前
OpenCV计算机视觉开发入门与实践<十一>:矩阵的复制和矩形类Rect
c++·opencv·计算机视觉·矩阵
键盘会跳舞7 小时前
C++:std::tuple 源码级深度拆解——变参模板、SFINAE与模板元编程核心技巧
开发语言·c++·sfinae·变参模板
bkspiderx8 小时前
从零开始:VS Code搭建C/C++开发环境全指南(Windows/macOS/Linux)
c语言·c++·windows·vs code·c/c++开发环境