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;
}
相关推荐
软行1 小时前
LeetCode 每日一题 3876. 构造奇偶一致的数组 II
c++·算法·leetcode
繁星蓝雨1 小时前
C++设计原理———重载(extern “C“的由来、顺序依赖、语义依赖、overload、名称修饰符、对象操作、运算符重载、新增运算符、枚举和布尔类型)
c语言·c++·extern c·overload·重载·语义依赖·顺序依赖
handler011 小时前
【Linux】虚拟地址空间解析
linux·运维·c++·线程·进程·虚拟地址空间·虚拟地址
(Charon)1 小时前
【C++】网络缓冲区设计(二):Ring Buffer环形缓冲区、head/tail与跨界读写
开发语言·c++
码匠许师傅2 小时前
【设计模式精讲】24.观察者模式(Observer)
c++·观察者模式·设计模式·uml
imgsq2 小时前
S-57 数据解剖:把一个 ENC 文件拆给你看
c++·数据可视化
迷茫、Peanut2 小时前
中断的时钟
c++
2402_882893862 小时前
用哈希表封装 unordered_map 和 unordered_set —— 手撕 C++ 哈希容器
c++·哈希桶·unordered_map·unordered_set
熊猫钓鱼>_>3 小时前
用 OHAudioSuite 空间渲染节点搭一座「3D 有声博物馆」——从三种模式到 FreeBuds 头追的实战记录
c++·3d·ai·harmonyos·arkts·audio·ohaudiosuite
_约书亚_3 小时前
chapter 9 高级线程管理 — 归纳总结
c++