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;
}
相关推荐
会周易的程序员几秒前
使用 pybind11 封装 C++ 日志库 microLog 为 Python 模块
java·c++·python·物联网·架构·日志·aiot
WZF-Sang8 分钟前
网络基础——2
服务器·网络·c++·学习·网络编程·php
-西门吹雪2 小时前
现代C++ 并发编程-学习指南
java·jvm·c++
aaPIXa6223 小时前
C++ TensorRT Edge-LLM 边缘推理框架:从原理到实战
开发语言·c++·edge
nianniannnn5 小时前
c++复习自存--标准模板库STL
开发语言·c++·windows
努力努力再努力wz5 小时前
【高性能网络库与HTTP Server系列】:基于主从 Reactor 模型实现高性能 C++ 网络库与 HTTP Server
开发语言·网络·数据结构·数据库·c++·网络协议·http
Robot_Nav6 小时前
C++ 面试常问问题汇总:基础语法、面向对象、STL、多线程与设计模式
c++·设计模式·面试
一拳一个呆瓜6 小时前
【STL】iostream 编程:使用插入运算符并控制格式
c++·stl
盐焗鹌鹑蛋6 小时前
【C++】二叉搜索树
c++
哎呦,帅小伙哦6 小时前
C++工程实战: 预处理宏、宏重定义避坑、LOG_TAG业务实践与__COUNTER__深度解析
c++