C ++, как мне написать вывод cout бок о бок? - PullRequest
0 голосов
/ 08 ноября 2018

Как уже упоминалось в заголовке, я не знаю, как отформатировать вывод std::cout так, чтобы внутренний for -петл записывал в "строки", а внешний for -петл создавал столбцы.

Мой код:

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

class LoopTest
{   //Access specifier
    public:
        //Data Members
        int outer_size = 2;
        int inner_size = 3;

    //Memberfunction
    int testing()
    {
    freopen("/home/user/training/exercise/e0/TESTPROGRAM_OUTPUT.dat", "w", stdout); //redirect output to file

        for(int i = 0; i <= outer_size; i++)
        {   
            cout <<  " number: " << i;
            for(int j = 0; j <= inner_size; j++)
            {
                cout << " j*(j*i): " << j*(j*i); 
                cout << "  ";
                cout << "\n";
            }

        }
        fclose(stdout);
        return 0;

    }
};

Приведенный выше код выдает следующий результат:

     number: 0 j*(j*i): 0  
 j*(j*i): 0  
 j*(j*i): 0  
 j*(j*i): 0  
 number: 1 j*(j*i): 0  
 j*(j*i): 1  
 j*(j*i): 4  
 j*(j*i): 9  
 number: 2 j*(j*i): 0  
 j*(j*i): 2  
 j*(j*i): 8  
 j*(j*i): 18  

Как уже упоминалось, идеальный результат будет:

 number: 0 j*(j*i): 0   number: 1 j*(j*i): 0   number: 2 j*(j*i): 0
 j*(j*i): 0             j*(j*i): 1             j*(j*i): 2
 j*(j*i): 0             j*(j*i): 4             j*(j*i): 8
 j*(j*i): 0             j*(j*i): 9             j*(j*i): 18

Ответы [ 2 ]

0 голосов
/ 08 ноября 2018

Изменить порядок для циклов.

Вы можете сделать что-то вроде этого:

#include<iostream>
#include<cmath>
using namespace std;
int main (int argc, char* argv[])
{
   int outer_size=2, inner_size=3;
   int j=0;
   for(int i = 0; i <= outer_size; i++)
   {   
        cout <<  " number: " << i;
    cout << " j*(j*i): " << j*(j*i)<<"\t";
   }
   std::cout<<endl;

   for( j = 1; j <= inner_size; j++)
   {

        for (int i=0; i<=outer_size; i++)
        {   
        cout << " j*(j*i): " << j*(j*i)<<"\t\t";
        }
       std::cout<<endl;
   } 

    return 0;
}

Создание этого вывода на терминале:

 number: 0 j*(j*i): 0    number: 1 j*(j*i): 0    number: 2 j*(j*i): 0   
 j*(j*i): 0              j*(j*i): 1              j*(j*i): 2     
 j*(j*i): 0              j*(j*i): 4              j*(j*i): 8     
 j*(j*i): 0              j*(j*i): 9              j*(j*i): 18
0 голосов
/ 08 ноября 2018

Вы должны чередовать свои выходы, сначала выводя всю вашу первую строку, а вторую ...

   for(int i = 0; i <= outer_size; i++)
   {   
        cout <<  " number: " << i << "\t"; // Add the tabs necessary
   }
   for(int j = 0; j <= inner_size; j++)
   {
       for(int i = 0; i <= outer_size; i++)
       {   
            // The the first result line
       }
    }
...