大学作业我没有逻辑

时间:2016-12-02 23:27:11

标签: c++ multidimensional-array

我已经尝试了一切,但代码不起作用,因为我是这个领域的新手,所以我没有逻辑

Here's the assignment description

这里是代码:

#include <iostream>
#include <string>

int main()
{
   char* Array2D[3][2] = {{"Bushra","0000-555555"},{"Ahad","0000-555544"},{"Mehwish","042-5558585"}};

   char* name;
   std::cout << "Enter name to find number in the directory"; 
   std::cout << "\n" << "\n";
   std::cin >> name;

   for(int i = 0; i < 3; ++i)
    {
        for(int j = 0; j < 2; ++j)
        {
            std::cout<< "Array[" << i << "][" << j << "] = " << Array2D[i][j] << "\n";
            std::cout<< "\n";

         if(name == Array2D[i])
{
        std::cout << Array2D[j];
}
else
{
std::cout << "NO RECORD";
}

        }
    }

}

2 个答案:

答案 0 :(得分:0)

您无法将operator==与C-Style字符串一起使用 您必须使用strcmp()

如果您使用std::string,则可以使用operator==

编辑1
问题是==运算符正在比较指针而不是指针指向的

答案 1 :(得分:0)

Source in IDEOne

现在已修改为使用二维数组。
这就是我在C ++中使用现代编译器的方法 你的任务可能会有所不同。

#include <stdio.h>
#include <iostream>
#include <vector>
#include <algorithm>
#include <string>

using std::string;
using std::vector;
using std::cout;
using std::cin;

int main(void) {

  string phoneBook[3][2] = { { "Jenni", "867-5309"  },
                             { "Police", "911-911"  },
                             { "Operator", "123456" } };

   string searchName;

   cout << "Enter Name to find a number" << std::endl;
   cin >> searchName;

   auto t = std::find_if(phoneBook, phoneBook+3, [&](auto& r){return r[0] == searchName;} );
   cout << ((t == phoneBook+3)? "No Such Name Found" : (*t)[1]);

    return 0;
}