0

私は、これまでに正しく実行している 3 つの機能を使用する必要がある割り当てのほとんどを既に完了しています。問題は、ファイルに出力するそれぞれのコードを追加すると、最後の関数が値を返さず、ファイルに出力したい値がファイルに書き込まれないことです。また、プロセスは return -1 で終了します。以下のコードを見て、私が間違っていることを教えてください。

#include <iostream>
#include <fstream>
#include <vector>

using namespace std;

string* returnGreetings() {

    int const SIZE = 50000;
    string message;
    string* greetings = new string[SIZE];

    for (int i = 0; i < SIZE; i++)
    {

    if (i < 12500)
        {
            message = "Hi";
            greetings[i] = message;
        }
    else if (i >= 12500 && i < 25000)
        {
            message = "Hey";
            greetings[i] = message;
        }
    else if (i >= 25000 && i < 37500)
        {
            message = "Hello";
            greetings[i] = message;
        }
    else if (i >= 37500)
        {
            message = "What's up";
            greetings[i] = message;
        }
    }
    return greetings;
}

vector<string> returnVectorGreetings()
{
    string message;
    vector <string> greetings;

    for (int i = 0; i < 50000; i++)
    {

    if (i < 12500)
        {
            message = "Hi";
            greetings.push_back(message);
        }
    else if (i >= 12500 && i < 25000)
        {
            message = "Hey";
            greetings.push_back(message);
        }
    else if (i >= 25000 && i < 37500)
        {
            message = "Hello";
            greetings.push_back(message);
        }
    else if (i >= 37500)
        {
            message = "What's up";
            greetings.push_back(message);
        }
    }


    return greetings;
}

int addTen(int *numberAddress)
{
    return *numberAddress + 10;
}

int main()
{

    int *numberAddress;

    string* address = returnGreetings();

    cout << address;

    string *a = returnGreetings();

    for (int i = 0; i < 50000; i++) cout << a[i] << endl;

    vector<string> m = returnVectorGreetings();

    for (int i = 0; i < 50000; i++) cout << m[i] << endl;

    cout << "Please enter a number: ";

    cin >> *numberAddress;

    cout << "The number plus 10 is: " << addTen(numberAddress) << endl;

    ofstream outfile;
    outfile.open("output.txt");
    outfile << address;
    outfile.close();

    return 0;
}
4

2 に答える 2

0

問題はnumberAddress. 初期化されていません。

これを cin で使用して に渡そうとするとaddTen()、プログラムが無効なメモリにアクセスしてクラッシュしている可能性があります。

次のように、int 変数を指すように初期化してみてください。

int naValue;
int *numberAddress = &naValue; // initialize numberAddress
于 2013-11-11T03:30:21.360 に答える