Вертикальный вывод

Рейтинг: 0Ответов: 1Опубликовано: 25.05.2011

Допустим мне нужно вывести таблицу 500 на 500 клеток, размер одной клетки 2х1, пишем функцию вывода(упрощенно):

void mapPrint() {
    int column, row;
    for (column = -1; column < MAPSIZE; ++column) {
        if (column == -1) {
            write("   ");
            for (int t = column + 1; t < MAPSIZE; t++)
                writef("%02d", t + 1);
            writeln();
            ++column;
        }
        for (row = -1; row < MAPSIZE; ++row) {

            if (row == -1) {
                writef("%03d", column);
                ++row;
            }
            if      (worldMap[column][row].localityType == "desert")
                    write(COLORDESERT,'D',' ',DEFAULT);
            else if (worldMap[column][row].localityType == "bank")
                    write(COLORBANK,'B',' ',DEFAULT);
            else (worldMap[column][row].localityType == "shoal")
                    write(COLORSHOAL,'S',' ',DEFAULT);
            }
            writeln();
    }
    write(DEFAULT);
}

Выводит:

   01020304050607080910
000D D S S W W W W W W 
001D D S S W W W W W W 
002D B S S S W W W W S 
003P B S S S W W W S S 
004P B B S S S W W S S 
005P P B B S S S S S S 
006P P P B B S S S S S 
007P P F B B B B B B B 
008M F F F F F F B B B 
009M M F F F F F F B B

Надо:

   0 0 0 0 0 0 0 0 0 0   и
   0 0 0 0 0 0 0 0 0 1   т.
   1 2 3 4 5 6 7 8 9 0   д.
000D D S S W W W W W W 
001D D S S W W W W W W 
002D B S S S W W W W S 
003P B S S S W W W S S 
004P B B S S S W W S S 
005P P B B S S S S S S 
006P P P B B S S S S S 
007P P F B B B B B B B 
008M F F F F F F B B B 
009M M F F F F F F B B

Все нормально, пока количество колонок таблицы меньше 101, но когда x становится больше 100, цифры, указывающие на номер столбца, съезжают =\

Помогите, как выводить вертикально? По разрядам?

Кусок текста написан на Ди, примеры на Си принимаются.

Отлично, вот вся функция, если кому надо...

void mapPrint() {

    int column, row;

    for (column = -1; column < MAPSIZE; ++column) {
        if (column == -1) {

            write("   ");
            for (int t = column + 1; t < MAPSIZE; t++)
                writef("%d ", ((t%1000)/100));
            writeln();

            write("   ");
            for (int t = column + 1; t < MAPSIZE; t++)
                writef("%d ", ((t%100)/10));
            writeln();

            write("   ");
            for (int t = column + 1; t < MAPSIZE; t++)
                writef("%d ", (t%10));
            writeln();

            ++column;
        }

        for (row = -1; row < MAPSIZE; ++row) {

            if (row == -1) {
                writef("%03d", column);
                ++row;
            }

            if      (worldMap[column][row].localityType == "desert")
                    write(COLORDESERT,'D',' ',DEFAULT);
            else if (worldMap[column][row].localityType == "bank")
                    write(COLORBANK,'B',' ',DEFAULT);
            else if (worldMap[column][row].localityType == "forest")
                    write(COLORFOREST,'F',' ',DEFAULT);
            else if (worldMap[column][row].localityType == "mountains")
                    write(COLORMOUNTAINS,'M',' ',DEFAULT);
            else if (worldMap[column][row].localityType == "plain")
                    write(COLORPLAIN,'P',' ',DEFAULT);
            else if (worldMap[column][row].localityType == "water")
                    write(COLORWATER,'W',' ',DEFAULT);
            else if (worldMap[column][row].localityType == "shoal")
                    write(COLORSHOAL,'S',' ',DEFAULT);
        }
        writeln();
    }
    write(DEFAULT);
}

Выводит такое:

   0 0 0 0 0 0 0 0 0 0 
   0 1 2 3 4 5 6 7 8 9 
000D D S S W W W W W W 
001D D S S W W W W W W 
002D B S S S W W W W S 
003P B S S S W W W S S 
004P B B S S S W W S S 
005P P B B S S S S S S 
006P P P B B S S S S S 
007P P F B B B B B B B 
008M F F F F F F B B B 
009M M F F F F F F B B

Спасибо!

c# d

Ответы

Ответов пока нет.