C++ 列中每个元素的数字总和

C++ sum of digits of each element in a column

我是 C++ 的新手,试图将日期导入程序,将日、月、年的数字相加并写回 txt。

输入数据

  sl.no   name  day month year
   1       Rob   15  05   2019
   2       Tim   12  06   2002  

需要以txt格式输出数据

  sl.no   name     day      month   year
   1       Rob       6         5      3
   2       Tim       3         6      4

我已经能够从一个 txt 文件中导入数据,并且还可以在天中添加数字,但它不会向前重复。我做错了什么?

示例代码

    #include <iostream>
    #include <fstream>
    using namespace std;

    int main()
    {
    ifstream theFile("data.txt");
    int id,day,month,year,daysum=0,monthsum=0, yearsum=0;
    string name;

    while (theFile >> id >> name >> day >> month >> year)
    {
    cout << id << ", "<< name <<", "<< day<<", "<<month <<", "<< year<<","<< endl;
    }

    while (day > 0)
    {
    daysum = daysum + (day % 10);
    day = day / 10;
    cout << daysum << endl;
    }

你读取的文件和数据有误, 您需要丢弃 header (sl.no name day month year)

然后在逐行逐行读取文件的同时累加天数,直到结束...

我不是专家。但几个月前就在你的位置..将问题分解成更小的步骤..

我的方法..

伪代码:

  1. 放弃 header
  2. 创建一个用于添加数字的函数
  3. 从文件中读取数据
  4. 使用循环 运行 遍历每列的每个元素并使用创建的函数
  5. 将结果存储在变量中
  6. 将变量输出到新的文本文件

评论是否有您卡住的特定区域..

试试这个将它减少到个位数..编织到代码的其他部分..


   #include <iostream>
  
   using namespace std;
   
   int main()
   {
       
       long long num;
   
       cout << "Enter a number: ";
   
       cin >> num;
   
       int sum = 0;
   
       while (1)
       {
           sum += (num % 10);
   
           num /= 10;
   
           
           if (0 == num)
           {
                
               if (sum > 9)
               {
                   num = sum;
   
                   sum = 0;
               }
               else
               {
                   cout << "Answer: ";
   
                   cout << sum << endl;
   
                   return 0;
               }
           }
       };
   
       return 0;
   }