溶液模拟器
发布时间
阅读量:
阅读量
写代码ing
O(∩_∩)O哈哈~
这题很烧脑 啊啊啊啊
解题步骤已在代码的注释里面——······
//输入——(如下)
//1行原始溶液 浓度
//3行往原始溶液中加入了 x溶剂 浓度的溶液
//z 表示撤销为上一步
//输出——(如下)
//1.原V+现在的V , (原V*浓度+浓度)/ 现在的体积+原来的体积
#include<cstdio>
#include<iostream>
#include<cstring>
using namespace std;
#define N 10010 //题目:第二行一个整数n,表示操作数,n≤10000;
//创造“栈 ”
struct node{
int v;//体积
double c;//容积
}a[N];//内容,容量,全局
int main(void)
{
int v,c,n,top=1;//体积,浓度,操作数, 栈顶(要赋初始值)
cin>>v>>c>>n;//获取,要按顺序
a[top].v=v;//原始溶液的体积
a[top].c=c;//原始溶液的浓度
while(n--){//n--,n减到0,while结束
char ch;//char 获取的是P和Z
cin>>ch;
//改变栈顶位置 , 回退(相当于出栈)
if(ch=='Z'&&top>1){//top等于1,再减等于0,不可以
top--;
}
//进栈(压栈)
if(ch=='P'){//注意有两个等号
cin>>v>>c;//变成新的v和c
top++;//开始压(入)栈
a[top].v=a[top-1].v+v; //获取(“酒”)当前体积 //a[top-1].v是上一个(原来的)栈顶的v,加上现在的v
a[top].c=(a[top-1].v*a[top-1].c+v*c)/(double)a[top].v;//v*c是新获取的v和c,doule强制类型转换
}
printf("%d %.5lf\n",a[top].v,a[top].c);//每一次不管是压栈还是出栈都输出,输出要加换行符
}
return 0;
}
请各位大佬多多指教哦!!!
Thanks♪(・ω・)ノ
最后赞一个 吧!!!
全部评论 (0)
还没有任何评论哟~
