c++ - 在动态数组中搜索

标签 c++ arrays list dynamic

当我在动态数组中搜索整数时,搜索功能无法正常工作,因为无论数据是否实际存在,它总是显示其位置为 1。

我实际上想做的是使用动态数据结构,我正在添加数据。删除、搜索并保存到txt文件。并将其加载回来。但问题是搜索。我使用了 switch case,搜索位于 Case 4。

#include<iostream>
#include<string>
#include<fstream> //to save file in text

using namespace std;

int main()
{
    int *p1;
    int size = 0;
    int counter = 0;
    p1 = new int[size];


    int userchoice;
    int i;
    int position;


    while (1)
    {
        cout << "Please enter your choice " << endl;
        cout << endl;
        cout << "To insert Press '1'" << endl;
        cout << "To Delete press '2'" << endl;
        cout << "To View press '3'" << endl;
        cout << "To Search press '4'" << endl;
        cout << "To Save Press '5'" << endl;
        cout << "To Load Previously saved Data press '6'" << endl;
        cout << "To Exit press '7'" << endl;
        cout << endl;
        cout << "Enter your choice: ";
        cin >> userchoice;


        switch (userchoice)  // User's selection from the menu
        {
        case 1: //Insert Number
            cout << "Enter a Number:  ";
            cin >> p1[size];
            counter++;
            size++; //Add's memory space
            break;

        case 2: //Delete Number

            int udelete;

            cout << "Enter a number to delete:  ";
            cin >> udelete; //User enters Number to be deleted

                            //Checking if the number is in an array.
            for (position = 0; position<size; position++)
            {
                if (p1[position] == udelete)
                    break;
            }
            if (position>size)
            {
                cout << "The number is not in the memory:  ";
                cout << endl;
                break;
            }
            for (i = position; i<size; i++) {
                p1[i] = p1[i + 1];
            }
            size--;
            cout << "Successfully Deleted!!! ";
            cout << endl;
            break;
        case 3: // View


            for (i = 0; i<size; i++)
            {
                cout << "Your data" << " " << i << " " << "-->" << p1[i] << endl;
            }
            break;

        case 4:
        {
            int usearch;

            cout << "Please enter the figure you would like to search ";
            cout << "->";
            cin >> usearch;

            for (i = 0; i>size; i++)
            {
                if (p1[size] == usearch)
                    break;
            }
            if (usearch == size)
            {
                cout << "not found. ";
            }
            cout << "Position at: " << i + 1 << endl;
            break;

        }



        case 5: // Save

        {
            ofstream save;
            save.open("Dynamicdata.txt", ofstream::out | ofstream::app);

            for (i = 0; i<size; i++)
            {
                save << p1[i] << endl;
            }

            save.close();
            cout << "File Saved " << endl;

            break;
        }

        case 6: //Read from File
        {


            string read;

            ifstream file_("Dynamicdata.txt");

            if (file_.is_open())
            {
                while (getline(file_, read))
                {
                    cout << read << "\n";
                }
                file_.close();
            }
            else
                cout << "File Not open" << endl;
            cin.get();
            break;

        }

        case 7:
        {
            return 0;
        }

        }
    }
}

最佳答案

您的问题是数组的大小为 0。这里您将 size 设置为 0,然后将 size 设置为 p1 的大小

int size=0;
int counter=0;
p1 = new int[size];

您将需要增大大小,以便实际上可以将元素存储在 p1 中,或者不使用数组和动态内存分配,而是使用 std::vector并让它为您处理。

关于c++ - 在动态数组中搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34993755/

相关文章:

c# - 在严格的 O(n) 时间内对整数数组进行排序

Python 列表到列表列表

c++ - 与服务器的连接已终止 - C++

c++ - 在 C++、OPENGL 中将我的结构作为数组返回

c++ - arduino,函数返回字符数组

Python 数组函数

python - 列表元素的公平划分

python - 列表到数组转换以使用 ravel() 函数

c++ - 循环遍历 C++ 类的对象

c++ - 实现 Boost 范围适配器 reversed_if