【问题标题】:Completing a Birthday Problem using a 2-D String Array使用二维字符串数组完成生日问题
【发布时间】:2022-11-12 02:13:39
【问题描述】:

我对 C++ 真的很陌生,所以如果我的代码很糟糕,我提前道歉。我有一个生日问题,我需要创建一个程序,询问总共 5 个朋友的姓名和他们相应的生日,并将这些值存储在二维数组中,然后在最后打印出来。我不知道如何做到这一点,但这是我迄今为止完成的最好的尝试。任何建议和反馈表示赞赏!


// Import libraries 
#include <iostream>
#include <string>
#include <iomanip>
using namespace std; 

// Main function 
int main() {

  // Declare variables 
  const char NAME = 5, 
         BIRTHDAY = 5; 

  // Define array 
  char birthSimulator [NAME][BIRTHDAY];

  // Output header
  cout << "\n\t\t\tWelcome to the Birth simulator 0_o";

  // Print string stored in array 
  for (int i = 0; i < NAME; i++){
    cout << "\nThe name of the " << birthSimulator[NAME] << " friend is: ";
    getline(cin, birthSimulator[NAME][BIRTHDAY]);
  }
   for (int i = 0; i < BIRTHDAY; i++){
    cout << "\nThe name of the " << birthSimulator[BIRTHDAY] << " friend is: ";
    getline(cin, birthSimulator[NAME][BIRTHDAY]);
  }

  for (int i = 0; i < NAME; i++){
    cout << birthSimulator[NAME] << "'s birthday is on: " << birthSimulator[BIRTHDAY];
  }
    


  return 0; 
}

【问题讨论】:

  • 出色地。 birthSimulator 是您要将所有数据填充到其中的数组的名称。在第一个循环中,您在对 cout 的调用中从中提取数据,但其中还没有任何内容。类似的事情发生在第二个循环中。接下来要考虑的是,您正在创建一个包含 25 个元素的数组,但您只需要存储 10 条数据。你有一个 5x5 数组,实际上,你想要一个 5x2 数组。接下来要考虑的是 birthSimulator[someInteger] 引用数据中的行或列,您需要 birthSimulator[someInteger][someOtherInteger] 引用单个项目。
  • 虽然您的背景故事对某些人来说肯定很有趣,但如果从问题开始,您的问题会更好。 (另见How to Ask。)如果你真的相信你的故事为问题增加了价值,那么问题的结尾是一个更好的地方。
  • “感谢任何建议和反馈!”-- 这不是本网站的工作方式。目的是你把你的任务分解成单独的步骤,选择您遇到问题的步骤,并询问您的问题。从长远来看,更抽象的问题往往比专注于特定任务的问题更有用。
  • 目前尚不清楚,但您想在二维数组中保存 5 个人的姓名和生日?
  • @JaMiT 我前言说我不知道​​自己在做什么是有原因的,哈哈。我不知道你为什么要给我讲课而不是提供任何有价值的反馈。我来这里是为了更好地理解,不要被技术势利的人讲课。 :P

标签: c++ arrays string multidimensional-array char


【解决方案1】:

做这个项目,你可以从STL图书馆,这使工作更容易。 你可以使用标准::向量或者标准::数组, 也可以代替 char 数组标准::字符串.

但是如果你想使用 C 风格的数组,那么你的数组将如下所示:

std::string birthSimulator[5][2];

您创建一个由 5 个字符串组成的数组,它们是两部分。

姓名 1 生日 1 名字 2 生日 2 name3 生日 3 名字 4 生日 4 姓名 5 生日 5

然后你初始化它们:

for(short i = 0 ; i < 5; i++){
   for(short j = 0 ; j  <2; j++){
       std::getline(std::cin , birthSimulator[i][j]);
   }//end for 'j'
}// end for 'i'

然后你输入名字和生日。

对于打印数组,您也可以这样做:

for(short i = 0 ; i < 5; i++){
   for(short j = 0 ; j  <2; j++){
       std::cout << birthSimulator[i][j] << ' ';
   }//end for 'j'
   std::cout << '
';
}// end for 'i'

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-06
    • 2021-06-12
    • 2019-01-23
    • 1970-01-01
    • 2023-04-02
    相关资源
    最近更新 更多