有人能帮我调试这个程序吗

Can someone help me debug this program

本文关键字:程序 调试      更新时间:2023-10-16

这是我迄今为止的代码,我认为它做得很好,我认为问题出在我的数组上。

#include <iostream>
#include <cctype>
#include <fstream>
using namespace std;
const char FileName[] = "text.txt";
int main()
{
    string line;
    ifstream inMyStream(FileName);
    int c;
    int upperCaseCount[26] = { 0 };
    int lowerCaseCount[26] = { 0 };
    char oneLetter;
    if (inMyStream.is_open())
        {
            while (getline(inMyStream, line))
            {
                c += line.length();
            }
            for (unsigned n = 0; n < line.length(); ++n)
            {
                oneLetter = char(line[n]);
                if (oneLetter >= 'A' && oneLetter <= 'Z') 
                {
                    upperCaseCount[int(oneLetter) - 'A']++;
                }
                else if (oneLetter >= 'a' && oneLetter <= 'z')
                {
                    lowerCaseCount[int(oneLetter) - 'a']++;
                }
            }
        }
        inMyStream.close();
        cout << "Uppercase Characters: " << upperCaseCount << endl;
        cout << "Lowercase Characters: " << lowerCaseCount <<endl;
        cout << "Digits: " << c << endl;
    return 0;
}

这是我得到的输出--->

C: \Users\House\Desktop\Lab11>测试

大写字符:0x28fcf4

小写字符:0x28fd5c

数字:1959532772

C: \用户\房屋\桌面\实验室11>

我看到两个问题(还有另一个大问题需要您调试)。

您需要将变量c初始化为某个有用的起始值(可能为0)。

您需要迭代数组以打印它们的内容。当前得到的奇怪输出是地址,而不是数组内容。

下面是一个计算大写病例小写病例和数字的工作示例

#include <iostream>
#include <cctype>
#include <fstream>
using namespace std;
const char FileName[] = "text.txt";
int main()
{
    string line;
    ifstream inMyStream(FileName);
    int c=0;//counts digits
    int upperCount=0;//counts uppercases
    int lowerCount=0;//counts lowercases
    char oneLetter;
    if (inMyStream.is_open())
        {
            while (getline(inMyStream, line))
            {
                for (unsigned n = 0; n < line.length(); ++n)
                {
                    oneLetter = line[n];
                    if (oneLetter >= 'A' && oneLetter <= 'Z') 
                    {
                        upperCount++;
                    }
                    else if (oneLetter >= 'a' && oneLetter <= 'z')
                    {
                        lowerCount++;
                    }
                    else if (oneLetter >= '0' && oneLetter <= '9'){
                        c++;
                    }
                }
            }
        }
        inMyStream.close();
        cout << "Uppercase Characters: " << upperCount << endl;
        cout << "Lowercase Characters: " << lowerCount <<endl;
        cout << "Digits: " << c << endl;
    return 0;
}

希望它有所帮助;)