求助!!!
  • 板块学术版
  • 楼主Channel_Choo
  • 当前回复2
  • 已保存回复2
  • 发布时间2023/3/27 10:02
  • 上次更新2023/10/23 20:20:54
查看原帖
求助!!!
787888
Channel_Choo楼主2023/3/27 10:02
#include <iostream>
#include <cctype>
#include <stack>
using namespace std;
stack<int> sum;
int len;
struct Hua
{
    string s;
    int m;
}hua[1000005];
int find(string name)
{
    for (int i = 1;i <= len;i++)
    {
        if (hua[i].s == name)
        {
            return hua[i].m;
        }
    }
    return -1;
}
unsigned long long ans;
int main()
{
    string s1, s2 = "";
    int num = 0, n = 0;
    while (cin >> s1)
    {
        if (s1 == "END_OF_FIRST_PART")
        {
            break;
        }
        len++;
        for (int i = 0;i < s1.length();i++)
        {
            if (isalpha(s1[i]))
            {
                s2 += s1[i];
            }
        }
		hua[len].s = s2;
        for (int i = 0;i < s1.length();i++)
        {
        	if (isdigit(s1[i]))
            {
                num = num * 10 + s1[i] - '0';
            }
		}
        hua[len].m = num;
        s2 = "";
    	num = 0;
    }
    string huaxue;
    for (int i = 1;i <= len;i++)
    {
    	cout << hua[i].s << " " << hua[i].m << endl;
	}
	return 0;
    while (cin >> huaxue)
    {
        if (huaxue == "0")
        {
            break;
        }
        int zuo = 0;
        string h = "";
        for (int i = 0;i < huaxue.length() - 1;i++)
        {
            if (huaxue[i] == '(')
            {
            	ans += sum.top();
            	sum.pop();
                zuo++;
            }
            else if (huaxue[i] == ')')
            {
                zuo--;
            }
            if (isdigit(huaxue[i]))
            {
            	int ansa = sum.top() * 2;
            	sum.pop();
            	sum.push(ansa);
			}
            if (isupper(huaxue[i]))
            {
                h += huaxue[i];
                for (int j = i + 1;j < huaxue.length() - 1;j++)
                {
                    if (islower(huaxue[j]))
                    {
                        h += huaxue[j];
                    }
                    else
                    {
                        break;
                    }
                }
            }
            int mm = find(h);
            if (mm == -1)
            {
                cout << "UNKNOWN" << endl;
                continue;
            }
            else
            {
                if (!zuo)
                {
                    ans += mm;
                }
                else
                {
                	if (sum.empty())
                	{
                		sum.push(mm);
					}
                	else
                	{
                		int ansb = sum.top() + mm;
                		sum.pop();
                		sum.push(ansb);
					}
				}
            }
        }
        cout << ans << endl;
        ans = 0;
    }
    return 0;
}

为什么我的结构体输出很怪??? 输入:

H 1
He 4
C 12
O 16
F 19
Ne 20
Cu 64
Cc 333
END_OF_FIRST_PART

正常输出:

H 1
He 4
C 12
O 16
F 19
Ne 20
Cu 64
Cc 333

实际输出:

H 0
 1
He 0
 4
C 0
 12
O 0
 16
F 0
 19
Ne 0
 20
Cu 0
 64
Cc 0
 333

有没有大佬能说明一下原因

2023/3/27 10:02
加载中...