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


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


DECLARE FUNCTION NToStr$(NUM&,R%)

CLS

INPUT "Введите натуральное число : ",N&

PRINT "Его представление в разных системах счисления таково : "

FOR J%=2 TO 16

PRINT "по основанию ";

J%,N&;"= ";NToStr$(N&,J%) NEXT J% END

FUNCTION NToStr$(NUM&,R%) A$="": MS=NUM& DO

CIF=M& MOD R% : ' Выделение очередной цифры

IF CIF<10 THEN

A$=CHR$(ASC("0")+CIF)+A$ : ' Замена цифры кодом ASCII ELSE

A$=CHR$(ASC("A")+CIF-10)+A$ END IF

М&=(М&-CIF)/R% : ' Исключение обработанной цифры

LOOP UNTIL M&=0 NToStr$=A$ END FUNCTION

Программа 2_04.с

/* Перевод числа в систему с основанием r */

#include <stdio.h>

# include <conio.h>

char *num_to_str (long num, char r) ;

void main (void) {

long N;

char j ;

printf ("\n Введите натуральное число ");

scanf ("%ld",&N);

printf ("Его представление в разных системах счисления таково :\n")

for(j=2; j<17; j++)

printf ("\n по основанию %2d = %s", j ,num_to_str (N, j ) ) ;

getch ( ) ;

}

char *num_to_str(long num, char r) {

static char a[33];

char cif, k, count=0; do {

cif=num % r;

/* Выделение очередной цифры */

if(cif<10) a[count++]='0'+cif;

/* Замена цифры кодом ASCII, если цифра меньше 10 */

else a[count++]='A'+cif-10;

/* Замена цифры кодом ASCII, если цифра больше 9 */

num=num/r;

/* Исключение обработанной цифры */ }

/* Цикл изменения порядка цифр в массиве а */

while (num != 0);

a[count--]=0х0;

for(k=0; k<=count/2; k++)

{ cif=a[count-k]; a[count-k]=a[k]; a[k]=cif; } return a; }

Программа 2_04.pas

program num to pos;

{ Перевод числа в систему с основанием г }

var

N:longint;

j:byte;

function num_to_str(num: longint;r:byte):string; var

a:string[33];

cif,k:byte; begin

a:='';

repeat

cif:=num mod r; { Выделение очередной цифры }

if (cif<10) then a:=chr(48+cif)+a

{ Замена цифры кодом ASCII, если цифра меньше 10 }




- Начало -  - Назад -  - Вперед -