/ / Tlač viacrozmerného poľa s ďalšími riadkami a stĺpcami - c, polia, multidimenzionálne pole

Tlač multidimenzionálneho poľa s ďalšími riadkami a stĺpcami - c, polia, multidimenzionálne pole

Mám multidimenzionálne pole, ktoré ukladá niektorédát, a chcem ho vytlačiť vo forme matice (zatiaľ žiadny prolem), vec je, že chcem pridať niekoľko stĺpcov a riadkov, aby bolo čitateľné. Niečo také:

3 |

2 |

1 |
_  _  _
1  2  3

("vnútorný štvorec" je moje skutočné 2d pole)

Moja otázka znie, aký je najlepší spôsob, ako to urobiť?

Môj aktuálny kód vyzerá takto:

void printBoard(char board[N][N]) {
for (int i = N-1; i >= 0; i--) {
printf("%d %c ", i, BAR);
for (int j = 0; j < N; j++) {
printf("%c ", board[i][j]);
}
printf("n");
}
for (int l = 0; l < 2; l++) {
for(int k = -4; k < N; k++) {
if(k < 0) {
printf("%c", SPACE);
}
else {
if(l == 0) {
printf("%c ", EMDASH);
}
else {
printf("%d ", k);
}
}
}
printf("n");
}
}

Funguje to dobre, ale cíti sa trochu chaoticky. Tiež, ak zmením veľkosť môjho poľa na viac ako 10 riadkov / stĺpcov, čísla sa nezmestia správne. Existuje spôsob, ako to správne naformátovať bez zmeny pôvodného poľa (ktoré prechádza do funkcie)?

Vďaka!

odpovede:

0 pre odpoveď č. 1

použitie špecifikátorov formátu a únikové sekvencie umiestniť text tam, kde ho potrebujete. Napríklad tento kód: (z tutoriálu o printf a formátovaní)

#include<stdio.h>

main()
{
int a,b;
float c,d;

a = 15;
b = a / 2;
printf("%dn",b);
printf("%3dn",b);
printf("%03dn",b);

c = 15.3;
d = c / 3;
printf("%3.2fn",d);
}

Vyrába tento výstup:

7
7
007
5.10

Osobitného záujmu pre vás, ako používate celé čísla, si všimnite modifikátory, ktoré môžu byť použité s "% d" špecifikátor nižšie v časti Špecifikátory formátu:

Únikové sekvencie:

n (newline)
t (tab)
v (vertical tab)
f (new page)
b (backspace)
r (carriage return)
n (newline)

Špecifikátory formátov príkladov:

%d (print as a decimal integer)
%6d (print as a decimal integer with a width of at least 6 wide)
%06d (same as previous, but buffered with zeros) (added)
%f (print as a floating point)
%4f (print as a floating point with a width of at least 4 wide)
%.4f (print as a floating point with a precision of four characters after the decimal point)
%3.2f (print as a floating point at least 3 wide and a precision of 2)

Je tu viac


2 pre odpoveď č. 2

Šírku štítkov môžete ovládať (číslona pravej a spodnej strane grafu zadaním špecifikátora šírky na reťazcoch formátu printf. Týmto spôsobom všetky štítky pochádzajú z rovnakej veľkosti. Môžete tiež zadať reťazec ako "--------------" (aby bol dostatočne dlhý na vytlačenie najdlhšieho pruhu) a stačí vytlačiť číslo obmedzené špecifikátorom šírky.

Príklad:

printf("%*s ", length, "----------------------------------------");