UVA - 537 - Artificial Intelligence

http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=96&page=show_problem&problem=478


题意:

  输入一道数学题,有一定格式,**U=200V**I=4.5A**

  抽出U和I,求P。也可能是求U或I


解题:

  用string + istringstream 分离数字和字符串,简单好多。


  istringsream是个好东西,可以分离字符串,也可以用来做类型转换。从int到string,从char*到str之类的。

  中间使用了整形指针。。。突然觉得有些东西(如整型指针)学了,用时才不会恨学得少;学习知识就是潜在应用。


  有时又要求最后一行不能加回车,有时不加又WA。真奇葩。。。。


#include <iostream>
#include <sstream>
#include <string>
#include <iomanip>
#include <stdio.h>
using namespace std;


int main()
{
	int nCase;
	cin >>nCase;
	cin.ignore();

	string s1, s2, s3;

	for ( int index=1; index <= nCase; index++ )
	{
		getline(cin, s1, '=');
		getline(cin, s2, '=');
		getline(cin, s3);

		// get d2 of section s2
		istringstream strStream(s2);
		double d2;
		string s2Remain;
		strStream >>d2;
		strStream >>s2Remain;

		// get d3 of section s3
		strStream.str(s3);
		double d3;
		string s3Remain;
		strStream >>d3;
		strStream >>s3Remain;

		double numP = 0.0;
		double numU = 0.0;
		double numI = 0.0;
		double *pNum;

		switch ( s1[s1.length()-1] )
		{
		case 'P':
			pNum = &numP;
			break;
		case 'U':
			pNum = &numU;
			break;
		case 'I':
			pNum = &numI;
			break;
		}
		*pNum = d2;
		switch ( s2Remain[0] )
		{
		case 'm':
			*pNum /= 1000;
			break;
		case 'k':
			*pNum *= 1000;
			break;
		case 'M':
			*pNum *= 1000000;
			break;
		}

		switch ( s2[s2.length()-1] )
		{
		case 'P':
			pNum = &numP;
			break;
		case 'U':
			pNum = &numU;
			break;
		case 'I':
			pNum = &numI;
			break;
		}
		*pNum = d3;
		switch ( s3Remain[0] )
		{
		case 'm':
			*pNum /= 1000;
			break;
		case 'k':
			*pNum *= 1000;
			break;
		case 'M':
			*pNum *= 1000000;
			break;
		}

		cout <<"Problem #" <<index <<'\n';
		if ( numP == 0 )
		{
			cout <<"P=";
			cout <<fixed <<setprecision(2) <<numU*numI <<"W\n";
		} // end if
		else
		{
			if ( numU == 0 )
			{
				cout <<"U=";
				cout <<fixed <<setprecision(2) <<numP/numI <<"V\n";
			} // end if
			else
			{
				cout <<"I=";
				cout <<fixed <<setprecision(2) <<numP/numU <<"A\n";
			} // end else
		} // end else

		cout <<'\n';

	} // end for

	return 0;
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
“实践型人工智能在网络安全中的应用”是指人工智能技术在网络安全领域的实际应用。随着网络攻击日益复杂和普遍,传统的网络安全措施已经无法满足对抗威胁的需求。而人工智能的出现,为网络安全提供了新的解决方案。 实践型人工智能在网络安全中的应用可以分为几个方面。首先是入侵检测和预防。人工智能技术可以通过对网络流量和系统日志的分析,识别出潜在的入侵行为,并及时采取相应的措施进行预防。其次是威胁情报和分析。通过对大数据的分析和挖掘,人工智能可以帮助企业获得有关网络威胁的实时情报,从而更好地了解和应对各种威胁。此外,人工智能还可以应用于恶意代码检测、虚拟专用网络安全、恶意活动预测等方面,从而提升网络安全的整体水平。 实践型人工智能在网络安全中的应用具有许多优势。首先,它可以通过大数据处理和机器学习算法实现对大量数据的实时分析,提高威胁检测和预测的准确性和效率。其次,人工智能可以从历史数据和实时数据中学习并更新自己的模型,以应对不断变化的威胁。此外,人工智能还可以通过自动化处理和响应系统来减少人为错误和延迟,提高网络安全的响应速度。 然而,实践型人工智能在网络安全中也面临一些挑战。首先,人工智能技术的应用需要大量的计算资源和数据训练,这对于一些中小型企业来说可能是一个挑战。其次,人工智能面临着隐私和伦理问题,如如何保护个人隐私和防止滥用人工智能的问题。此外,人工智能还需要不断与新的威胁和攻击方式保持同步,才能保持其有效性。 综上所述,“实践型人工智能在网络安全中的应用”是一个应对不断增长的网络威胁的新兴领域。通过将人工智能技术应用于网络安全,我们可以提高网络安全的效率和准确性,加强对网络威胁的防范和应对能力。尽管面临一些挑战,但实践型人工智能在网络安全中的应用具有广阔的前景和潜力。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值