啊,我真蠢,不需要线程

@快乐鹦鹉 谢谢

我好头疼,因为,我今天干了一件非常蠢的事,它的名字叫:

pthread_create

 什么情况呢?先听我说:

 我是个名副其实的萌新,依据:我的码龄是一天。

我最近在做一个叫“计算器”的c++程序(以下称cpp程序),由于制作需要,我注册了一个csdn博客。

注册后不久(其实一天不到🤣),我在写程序的时候想到了一个馊主意:添加一个计时器!你们肯定会问:cpp程序运行结束后不是会自动计时吗?nonono,我想做的,是一个独立的,和系统兼容性更强的cpp程序,今天我就想增加一个计时器的功能。看不懂就看我现在的代码(已经解决问题了):

/*我在此再次致谢我的第一任C++老师,the book!
没有它,这个程序无从完成。*/
#include<bits/stdc++.h>
#define err !isfinite(c)
using namespace std;
int main(){
	double a, b, c;unsigned Start, End;string i;
	Start = time(NULL);
	printf("计算器欢迎您的光临!");
start:
	printf("\n请选择您要计算的运算方式(如加减乘除)或命令(帮助请输入/help),请输入加减乘除的符号(如 + - * /),否则将运算失败。\n");
	printf("目前支持加减乘除和乘方;开平方\t对应符号+ - * / ^ ^/\n");
	cin >> i;    //困扰我多年的scanf string问题!
	if((i != "+") and (i != "-") and (i != "*") and (i != "/") and (i != "^") and (i != "^/") and (i != "/help") and (i != "/sr") and (i != "/cls") and (i != "/exit")){
		printf("\nError(一定有bug)\n\n");
		system("pause");
		goto start;
	}
	if(i == "^/"){
		if(a == 1){
			printf("\n\nError\n");
			system("pause");
			goto start;
		}
		printf("请输入要开平方的数字:");
		scanf("%lf", &a);
		c = sqrt(a);
		goto stop;
	}
	if(i == "/help"){
		printf("\nError(一定有bug)\n\n");
		system("pause");
		goto start;
	}
	if(i == "/exit"){
		End = time(NULL);
		unsigned Time = (End - Start);
		printf("\nTotal running time:%d\n\n", Time);
		system("pause");
		return 0;
	}
	if(i == "/cls"){
		system("cls");
		printf("计算器欢迎您的光临!");
		goto start;
	}
	if(i == "/sr"){
		ifstream fin;
		fin.open("计算器.cpp", ios::in);
		if(!fin.is_open()){
			printf("\nError\n\n");
			system("pause");
			goto start;
		}
		system("cls");
		printf("源代码:\n");
		char buff[100000];
		while(fin.getline(buff, sizeof(buff))) printf("%s\n", buff);
		system("pause");
		system("cls");
		printf("计算器欢迎您的光临!");
		goto start;
	}
	printf("请输入您要计算的两个数字,两个数字间请加空格(此计算器不支持两个以上数字的运算,但支持重复运算):");
	scanf("%lf %lf", &a, &b);
	if(i == "+") c = a + b;
	else if(i == "-") c = a - b;
	else if(i == "*") c = a * b;
	else if(i == "/"){
		int d = fmod(a, b);
		c = (double) a / b;
		if(err){
			printf("\nError\n\n");
			system("pause");
			goto start;
		}
		printf("\n结果:%.0lf余%d %.3lf\n谢谢惠顾,欢迎下次光临!\n\n", c, d, c);
		system("pause");
		goto start;
	}
	else if(i == "^"){
		if((a == 1) || (b == 1)){
			printf("\nError\n\n");
			system("pause");
			goto start;
		}
		c = pow(a, b);
		if(err){
			printf("\nError\n\n");
			system("pause");
			goto start;
		}
		cout << "\n结果:" << setprecision(30) << fixed << setprecision(3) << c << "\n谢谢惠顾,欢迎下次光临!\n\n";
		system("pause");
		goto start;
	}
stop:
	if(err){
		printf("\nError\n\n");
		system("pause");
		goto start;
	}
	printf("\n结果:%.3lf\n谢谢惠顾,欢迎下次光临!\n\n", c);
	system("pause");
	goto start;
}

我一开始想弄个想scratch一样的多线程的程序,就是一边执行主程序,另一边执行计时器的副程序。

可是,没想到,这一个问题搞得我大半天都头昏昏的,一直去努力解决这问题,详见我的个人空间 > 问答。

直到最后(晚上),我才想起来:可不可以直接在main函数里计时呢?我先试了clock函数,又试了time函数……最终,我选择了time函数。

附:这个程序完结了,我一定会以代码的形式发送给大家的,拜拜! 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值