Практика программирования (Бейсик, Си, Паскаль)



     Yeezy релизы на сайте http://yeezysales.ru. |     

Задачи, советы и ответы - часть 5


Совет 2 (QBasic)

Для вывода числа, прижатого к правой границе поля фиксированной ширины, целесообразно использовать оператор PRINT USING. Так как ширина поля в нашем случае — величина переменная, то шаблон вывода придется сформировать в виде значения строки, содержащей w символов "I".

Совет 3 (Си)

Так же, как и в Бейсике, здесь придется сформировать символьную строку вида "%wd". Чтобы вписать в нее символьное представление ширины поля w, можно воспользоваться суммой вида w+48, где добавка 48 соответствует коду символа "0".

Совет 4 (Паскаль)

Оператор write позволяет задавать ширину поля вывода не только в виде конкретного числа, но и как значение арифметического выражения (в данном случае простейшего — w).

Программа 4_05.bas

DECLARE SUB PRINTA (ROW%, COL%, W%, C% (-) , N%, M%)

DEFINT A-Z

CLS

DIM A(2, 3) , B(3, 3)

FOR J = 0 ТО 2: FOR К = 0 TO 3

A(J, K) = J + К * К NEXT К: NEXT J PRINTA 5, 5, 3, A() , 3, 4

FOR J = 0 TO 3: FOR К = 0 ТО 3

B(J, K) = J * 10 + К * 25 NEXT K: NEXT J PRINTA 5, 40, 5, B() , 4, 4

END

SUB PRINTA (ROW%, COL%, W%, C%(), N%, M%) DEFINT A-Z

F$ = LEFT$("##########", W)

FOR J = 0 TO N - 1: FOR К = 0 TO M - 1

LOCATE ROW + J, COL + K*W

PRINT USING F$; C(J, K) NEXT K: NEXT J

END SUB

Программа 4_05.с

#include <stdio.h>

#include <conio.h>

void printa(int row,int col,int w,int *c,int n,int m) ;

void main(void) {

int a[3] [4] = {{!,2,3,4),{10,20,30,40},{100,200, 300, 400}};

int b[4][4]={{l,2,3,4},{5,6,7,8},{9,10,ll,12},{13,14,15,16}};

clrscr();

printa (5,5,4, (int *)a,3,4);

printa(5,40,5,(int *)b,4,4);

getch(); }

void printa(int row,int col,int w,int *c,int n,int m) {

int j,k;

char f[4]="%0d";

f[1] += w;

for(j=0; j<n; j++)

for(k=0; k<m; k++)

{

gotoxy(col+k*w,row+j);

printf(f,c[k+j*m]); }

}

Программа 4_05.pas

program mat_print;

uses crt;

const

a:array [1..3,1..4] of integer = ((1,2,3,4), (10,20,30,40), (100,200,300,400));




Содержание  Назад  Вперед