0

ASCII 文字を使用してテーブルを作成するのに 3 時間ほど費やしましたが、最後に正しく作成しました...しかし、問題は本当に奇妙です...テーブルコードをコピーして同じ場所に再度貼り付けると異なる形式でプログラムしてください!なぜこのようなことをしているのですか?

私はこれを行うのに本当に多くの時間を費やしてきましたが、文字通り私を狂わせています! それはまったく同じコードです...助けが必要です

http://i.stack.imgur.com/MB3MO.png

コードは次のとおりです

  #include <iostream>   // Cout e cin
  #include <cstdlib>   // System Pause
  #include <iomanip>

  using namespace std;

  int main ()
  {

    cout<<char(218)<<setfill(char(196))<<setw(12)<<char(194)<<setfill(char(196))<<setw(20)<<char(194)<<setfill(char(196))<<setw(20)<<char(194)<<setfill(char(196))<<setw(20)<<char(191)<<endl;

    cout<<char(179)<<left<<setfill(' ')<<setw(11)<<"Algoritmo"<<char(179)<<left<<setfill(' ')<<setw(19)<<"Numero confronti"<<char(179)<<left<<setfill(' ')<<setw(19)<<"Numero copie"<<char(179)<<left<<setfill(' ')<<setw(19)<<"Tempo di esecuzione"<<char(179)<<endl;
    cout<<char(195)<<setfill(char(196))<<setw(11)<<char(196)<<setfill(char(196))<<setw(20)<<char(197)<<setfill(char(196))<<setw(20)<<char(197)<<setfill(char(196))<<setw(20)<<char(197)<<char(180)<<endl;
    cout<<char(192)<<setfill(char(196))<<setw(11)<<char(196)<<setfill(char(196))<<setw(20)<<char(193)<<setfill(char(196))<<setw(20)<<char(193)<<setfill(char(196))<<setw(20)<<char(193)<<char(217);

    cout<<endl;

    cout<<char(218)<<setfill(char(196))<<setw(12)<<char(194)<<setfill(char(196))<<setw(20)<<char(194)<<setfill(char(196))<<setw(20)<<char(194)<<setfill(char(196))<<setw(20)<<char(191)<<endl;

    cout<<char(179)<<left<<setfill(' ')<<setw(11)<<"Algoritmo"<<char(179)<<left<<setfill(' ')<<setw(19)<<"Numero confronti"<<char(179)<<left<<setfill(' ')<<setw(19)<<"Numero copie"<<char(179)<<left<<setfill(' ')<<setw(19)<<"Tempo di esecuzione"<<char(179)<<endl;
    cout<<char(195)<<setfill(char(196))<<setw(11)<<char(196)<<setfill(char(196))<<setw(20)<<char(197)<<setfill(char(196))<<setw(20)<<char(197)<<setfill(char(196))<<setw(20)<<char(197)<<char(180)<<endl;
    cout<<char(192)<<setfill(char(196))<<setw(11)<<char(196)<<setfill(char(196))<<setw(20)<<char(193)<<setfill(char(196))<<setw(20)<<char(193)<<setfill(char(196))<<setw(20) <<char(193)<<char(217);



    cout<<endl;
    system ("PAUSE");
    return 0;

}
4

1 に答える 1

2

それはあなたのテキストの正当化と関係があります。テーブルを初めて印刷するときは、 を使用leftしてジャスティフィケーションを設定します。cout << right2 番目のテーブルを印刷する前に使用する必要があります。

各ストリームには、フォーマット フラグのセットがあります。プログラムの開始時に、標準ストリーム (たとえば、cout) は にadjustfield設定されていrightます。これが、テーブルを初めて印刷するときにすべてが機能する理由です。テーブル コードの最初の行は、右寄せのテキストを正しく想定しています。位置合わせを 2 行目に設定すると、left変更するまでそのままになります。leftしたがって、テーブル コードの 2 行目にある他の s を実際に削除できます。最初の s で十分だからです。

2 番目のテーブル コードが正しく機能するためには、右揃えに戻す必要があります。したがって、2 つのテーブルの間の空行の直後に、 を挿入する必要がありますcout << right;

于 2014-05-09T18:26:09.117 に答える