3.01. ASCII
ASCII ,
866- .
. 3.1.
1 ()
21 ,
21. 21 ,
(32 ).
, 3- (3 = 32 - 29).
( 32 255)
"-"
, ,
.
.
3.1. ASCII
3_01.bas
R
ASCII
CLS : PRINT
TAB(31); " ASCII"
FOR I=32 TO
52: LOCATE I-29,1
FOR J=I TO 255
STEP 21
PRINT USING
"! ### ";CHR$(J);J;
NEXT J
NEXT I
3_01.
/* ASCII */
#include <stdio.h>
main() {
int i,j;
clrscr ();
gotoxy(31,1);
printf("
ASCII");
for (i=32; i<=52;
i++) {
gotoxy(1,i 2 9) ;
for (j=i; j<=255; j+=21)
printf("%c %3d ",j,j);
} getch();
}
3_01.pas
program ASCII;
{ ASCII} uses Crt; var
i,j:word; begin clrscr;
gotoxy(31,1);
write(' ASCII');
for i:=32 to 52 do
begin
gotoxy(l,i-29);
j:=i;
repeat
write(chr(j) :l,j:4, ' ');
j:=j+21;
until j>255;
end;
readln;
end.
3.02.
() up (s), s
ASCII.
1 ()
ASCII, , ,
:
,
, , 32, 32, 80
1 .
2 (QBasic)
j-o s
() MID$(S,J, 1). ,
, SELECT CASE
END SELECT. , ASC CHR$ , ,
ASCII
.
UP UP$.
,
j.
3 ()
, , up,
unsigned char, char. , (
) [0,255].
4 ()
, b, .
. ( var a:string), .
, ,
.
3_02.bas
REM
DECLARE SUB
UP (A$)
PRINT "
, "
INPUT "",A$
UP A$
PRINT A$ END
SUB UP(A$)
FOR j=l TO LEN(A$)
SELECT CASE
MID$(A$,j,l)
CASE "a"
TO "z": MID$(A$,j,1)=CHR$(ASC(MID$(A$, j , 1) )-32)
CASE "a"
TO "n": MID$(A$,j,l)=CHR$(ASC(MID$(A$,j,l))-32)
CASE "p"
TO "": MID$(A$,j,1)=CHR$(ASC(MID$(A$,j,1))-90)
CASE "e": MID$(A$,j,l)="E"
END SELECT
NEXT j
END SUB
3_02a.bas
R
DECLARE FUNCTION
UP$(A$)
PRINT "
, "
INPUT "",A$
B$=UP$(A$)
PRINT A$
PRINT B$
END
FUNCTION UP$(A$)
'
$,
DIM AS STRING
=$
FOR J=l TO LEN(A$)
SELECT CASE
MID$(,J,1)
CASE "a" TO "z": MID$ (B, J, 1) =CHR$ (ASC (MID$ (B, J, 1) )-32)
CASE "a" TO "n": MID$ (B, J, 1)=CHR$ (ASC (MID$ (B, J, 1) ) -32)
CASE "p" TO "": MID$(B,J,1)=CHR$(ASC(MID$(B,J,1))-80)
CASE "e": MID$(B,J,1)="E"
END SELECT
NEXT J
UP$=B
END FUNCTION
3_02.
/* */
# include <stdio.h>
#include <conio.h>
#include <string.h>
char *up(char
*a);
void main()
{
char a[80],*b;
printf("\n
, \n");
gets(a);
b=up();
printf("\na=%s",a);
printf("\nb=%s",b);
getch (); }
char *up(char
*a) {
unsigned char
b[80]; int j ;
strcpy(b,a);
for(j=0; j<strlen(a);
j++) {
if ( 97<=b[j] && b[j]<=122) b[j]-=32;
if (160<=b[j] && b[j]<=175) b[j]-=32;
if (224<=b[j] && b[j]<=239) b[j]-=80;
if (241==b[j])
b[j] ; }
return b; }
3_02.pas
program UperCase;
{
}
var
a,b>:string[80]
; function up(a:string):string; var
j:integer;
begin
for j:=1 to
length(a) do
case a[j] of
'a1..'z':
a[j] :=chr (ord (a [ j ] )-32) ;
'a'.,'n'; a[j]:=chr(ord(a[j])-32);
''.'': a[j]:=chr(ord(a[j])-80);
'': a[j]:='';
end;
up:=a; end;
begin
writeln('
, ');
readln(a);
b:=u();
writeln(a);
writeln(b);
readln;
end.
3.03. -
, 10 ,
. ,
.
.
, ,
:
,
. . , , ,
. -
(, , ) ASCII
.
1 ()
: , .
2 (QBasic)
, ,
LOCATE row, col (row , col ).
3 ()
3_03. ,
.
, , , . ,
Norton Commander'a
, , , ,
. ,
.
- .
3_03. ,
"" char
(. malloc). ,
, 4- .
gotoxy (col,
row),
QBasic.
3_03b! .
, .
3_03.bas
R
DIM NAMES(10)
N=10
CLS
FOR J=l TO 10
INPUT "
- ", NAMES(J)
NEXT J CLS
PRINT "
: " FOR J=l TO N
LOCATE J+2,1:
PRINT NAMES(J)
NEXT J
FOR J=l TO N-l
FOR K=J+1 TO
N
IF NAME$(J)>NAME$(K) THEN
TMP$=NAME$(J)
NAME$(J)=NAME$(K)
NAMES(K)=TMP$
END IF
NEXT
NEXT J
LOCATE 1,40
PRINT " :"
FOR J=l TO N
LOCATE J+2,40: PRINT NAME$(J)
NEXT J
END
3_03.
/* */
#include <stdio.h>
#include <alloc.h>
#include <conio.h>
#include <string.h>
main()
{
#define n_max
10
#define len_max
20
int j,k;
char tmp[len_max],
*names[n_max], *p;
clrscr();
for(j=0; j<
n_max; j++) {
printf("\n - ");
scanf("%s",tmp);
names[j]=(char
*)malloc(len_max);
strcpy(names[j],tmp);
}
clrscr () ;
printf(" :");
for(j=0; j<n_max;
j++) {
gotoxyd, j+2) ;
printf("%s",names[j]);
}
for(j=0; j<n_max-l; j++)
for(k=j+l; k<n_max;
k++) {
if (strcmp(names[j],names[k])
> 0} {
p=names[j];
names[j]=names[k] ;
names[k]=p;
} }
gotoxy(40,1);
printf(" :");
for(j=0; j<n_max;
j++) {
gotoxy(40,j+2);
printf("%s",names[j])
; }
getch(); }
3_03b.c
/* */
#include <stdio.h>
#include <conio.h>
#include <string.h>
#define N 10
main () {
cnar a[N][20],tmp[20];
int i,j; Clrscr
() ;
puts(" 10 ");
for(i=0; i<N;
i++)
gets(&a[i][0]);
for(1=0; i<N-l; 1++)
for(j=i+l; j<N;
j++)
if(strcmp(&a[i]
[0], &a[j] [0])>0) {
strcpy(tmp,&a[i][0]);
strcpy(&a[i][0],&a[j][0]);
strcpy(&a[j][0],tmp);
}
puts(" ");
for (1=0; i<N;
i++)
puts(&a[i][0]);
getch(); }
3_03.pas
program sort;
{
}
uses crt;
const
n=10; var
j,k:integer;
tmp:string[20];
name:array [l..n] of string[20];
begin cirscr;
for j:=1 to
n do begin
writeln(' ');
readln(name[j]);
end;
clrscr;
writeln(' :');
for j :=1 to n do
begin
gotoxy(1,j+2);
write(name[j]);
end;
for j:=1 to n-1
do
{
for k:=j+l to n do
begin
if name[j]>name[k] then
begin
tmp:=name [j];
name[j]:=name[k];
name[k]:=tmp;
end
end;
gotoxy(40,l);
writeln(' :');
for j:=1 to n do
begin
gotoxy (40,j+2);
write(name[j]);
end;
readln;
end.
3.04.
,
80- "",
, .
,
, ,
, .
1 ()
, 0, ,
0.
, , .
,
-
, .
1. space
1 true,
. ,
.
3_04.bas
R
CLS
SPACE=1: WORDS=0
PRINT "
"
INPUT "",S$
LENS=LEN(S$)
IF LENS=0 THEN
GOTO RET
IF LEFT$(S$,1)<>"
" THEN SPACE=0:
WORDS=1
FOR J=2 TO LENS
IF SPACE=1 AND
MID$(S$,J,1)<>" " THEN SPACE=0: WORDS=WORDS+1
IF SPACE=0 AND MID$(S$,J,1)=" " THEN SPACE=1
NEXT J
RET:
PRINT " = "; WORDS
END
3_04.
/* */
#include <stdio.h>
#include <conio.h>
#include <string.h>
main() {
char s[81],
space=l, words=0, i,len;
clrscr ();
puts("
");
gets (s) ;
len=strlen(s);
if (len=0) goto
ret;
if (s[0]!='
') {
space=0;
words=l; }
for(i=l; i<len;
i++) (
if (space==l
&&, s[i]! = ' ') {
space=0; words++;
}
if (space==0
&& s[i]==' ')space=l; } ret:
printf("\n = %d",words);
getch () ; }
3_04.pas
program num_words;
{
}
label ret;
var
s:string[81];
space:boolean;
words:byte;
i,len:byte;
begin
writeln('
');
readln(s);
len:=length(s);
if len=0 then
goto ret;
space:=(s[1]='
');
if not space
then words:=1;
for i:=2 to
len do
begin
if (not space)and(s[i]='
') then space:=true;
if (space)and(s[i]<>'
') then
Degin
space;=false; inc(words);
end;
end;
ret:
writeln(' = ',words);
readln;
end.
3.05.
, .
<Esc> (
27).
1 ()
,
<Esc>. , <Enter>
.
13
(, ), -
(QBasic).
2 (QBasic)
( )
INKEY$. , INKEY$ ,
ASC.
INKEY$ , ,
.
3 ()
( ) (
) getch.
4 ()
( ) (
) readkey.
3_05.bas
R
CLS
GETKEY: A$=INKEY$: IF A$="" THEN GOTO GETKEY
IF ASC(A$)=27 THEN STOP
IF LEN(A$)=1
THEN
IF ASC(A$)=13
THEN
PRINT "
Enter = 13": GOTO GETKEY
END IF
PRINT "
' "; A$; " ' ="; ASC(A$)
ELSE
PRINT " ";ASC(RIGHT$(A$,1))
END IF
GOTO GETKEY
3_05.
/*
*/ #include <stdio.h>
main() { unsigned
char ch;
clrscr(); getkey:
ch=getch();
if(ch==27) exit(0);
if(ch==13) {
printf("\n Enter = 13");
goto getkey;
}
if(ch==0) {
ch=getch();
printf("\n
= %d",ch); }
else printf("\n % =%d",ch,ch);
goto getkey;
}
3_05.pas
program keyboard;
(
}
uses Crt;
label getkey;
var
ch:char;
begin
clrscr; getkey:
ch:=readkey;
if ord(ch)=27 then exit;
if ord(ch)=13 then
begin
writeln(' Enter = 13');
goto getkey;
end;
if ord(ch)=0 then
begin
ch:=readkey;
writeln(' = ',ord(ch));
end else
writeln(' "',ch,'" =',ord(ch));
goto getkey;
end.
3_05a.pas
program keyboard;
{
}
uses Crt;
var
ch:char; begin
clrscr; repeat
ch:=readkey;
if ord(ch)=13
then
writeln('
Enter =13') else
if ord(ch)=0
then
begin
ch:=readkey;
writeln { '
= ' ,ord(ch) } ;
end else
writeln(' "',ch,'" = ',ord(ch});
until ord(ch)=27;
end.
3.06.
" , "
, ,
, , , , . ,
, , ,
. ,
, .
"" , , .
1 ()
, ,
, , .
3_06.bas
REM
DATA "","","",""
DATA "","",""
DIM $ (7) ,
$ (3)
FOR I=0 6:
READ A$(I): NEXT I
PRINT "
3 "
FOR I=0 2:
INPUT B$ (I): NEXT I
PRINT "
:"
FOR J=0 TO 6:
FOR I=0 TO 2
IF A$(J)=B$(I)
THEN PRINT A$(J)
NEXT I: NEXT
J
END
3_06.c
/*
*/
#include <stdio.h>
#include <conio.h>
#include <string.h>
main()
{
char a[7][11]={"","",
"","","","",""};
char b[3][11];
int i,j;
printf("\n 3 \n");
for (i=0; ;
i++) gets (&b[i] [0] ) ;
printf("\nB :\n");
for(j=0; j<7;
j++) for(i=0; i<3; i++)
if(strcmp(&a[j][0],&b[i][0])==0)
puts(&a[j][0]);
getch(); }
3_06.pas
program raduga;
{
}
const
a:array [1..7]
of string[10]=('','',
' ', ' ', ' ', ' ', ' ') ;
var
b:array [1..3]
of string[10];
i,j:byte; begin
writeln('
3 ');
for i:=l to
3 do readln(b[i]);
writeln('
:');
for j:=1 to 7 do
for i:=l to 3
do
if a[j]=b[i] then writeln(a[j]);
readln;
end.
3.07. ,
, , 20-
, , 10- 50-
.
,
.
1 (QBasic)
TAB, LOCATE.
2 (, )
gotoxy, ,
wherey,
.
3_07.bas
CLS
PRINT "
, 20 "
FOR I = 1
8: PRINT "1234567890"; : NEXT I
INPUT "",
A$
PRINT ",
10- :"
FOR I = 1
8: PRINT "1234567890"; : NEXT I
PRINT TAB(10);
A$
PRINT "
10- 50- :"
FOR I = 1
8: PRINT "1234567890"; : NEXT I
PRINT TAB(10
+ (50 - 10) / 2 - LEN(A$) / 2); A$
PRINT "
50- :"
FOR I = 1
8: PRINT "1234567890"; : NEXT I
PRINT TAB(51
- LEN(A$)); A$
END
3_07.
#include <stdio.h>
#include <conio.h>
#include <string.
h>
main()
{
char str[20], rule [] ="1234567890";
int i;
clrscr () ;
puts(" , 20 ");
for(i=0; i<8; i++)
printf("%s",rule);
gets (str) ;
puts(", 10- :");
for(i=0; i<8; i++) printf("%s",rule);
gotoxy(10,wherey());
puts (str) ;
puts(" 10- 50- :");
for(i=0; i<8;
i++) printf("%s",rule);
gotoxy(10+(50-10)/2-strlen(str)/2,wherey());
puts(str);
puts(" 50- :");
for (i=0; i<8; i++) printf("%s", rule);
gotoxy(51-strlen(str),wherey());
puts(str);
getch(); }
3_07.pas
program text_justify;
uses Crt;
const
rule:string='1234567890';
var
s:string[20];
i:integer; begin
clrscr;
writeln('
, 20 ');
for i:=0 to
7 do write(rule);
readln(s);
writeln(',
10- :');
for i:=0 to
7 do write(rule);
gotoxy(10,wherey);
writeln(s);
writeln('
10- 50- :');
for i:=0 to
7 do write(rule);
#include <string.h>
main() {
char str[20],
rule[]="1234567890";
int i ;
clrscr();
puts(" , 20 ");
for(i=0; i<8; i++)
printf("%s",rule);
gets (str) ;
puts(", 10- :");
for(i=0; i<8; i++) printf("%s",rule);
gotoxy(10,wherey());
puts (str) ;
puts(" 10- 50- :");
for (i=0; i<8;
i++) printf("%s",rule);
gotoxy(10+(50-10)/2-strlen(str)/2,wherey());
puts(str); puts(" 50- :");
for (i=0; i<8; i++)
printf("%s",rule);
gotoxy(51-strlen(str),wherey());
puts(str);
getch(); }
3_07.pas
program text
justify;
uses Crt;
const
rule:string='1234567890';
var
s:string[20];
i:integer; begin
clrscr;
writeln('
, 20 ');
for i:=0 to
7 do write(rule);
readln(s);
writeln(',
10- :');
for i:=0 to
7 do write(rule);
gotoxy(10,wherey);
writeln(s);
writeln('
10- 50- :');
for i:=0 to
7 do write(rule);
gotoxy(10+(50-10) div 2 - length(s) div 2,wherey);
writeln(s); writeln{' 50- :');
for i:=0 to 7 do write(rule);
gotoxy(51-length(s),wherey);
writeln(s);
readln; end.
3.08.
- compare, ,
,
. : 1,
"" ; -1, "" ;
, .
1 ()
,
, .
up (str) .
3_02.
3_08.bas
REM
DECLARE SUB
UP(A$)
DECLARE FUNCTION
COMPARE(B$, C$)
PRINT "
"
INPUT "",A1$
PRINT "
"
INPUT "",
A2$
K=COMPARE(A1$,A2$)
IF K=l THEN
PRINT " ''"
IF K=-l THEN
PRINT " ''"
IF K=G THEN
PRINT " "
END
FUNCTION COMPARE(B$,C$)
DIM B1$,C1$
UP B$: UP C$
FOR J=l TO LEN(B$)
IF MID$ (B$,
J, 1)<>" " THEN B1$=B1$+MID$ (B$,J, 1 )
NEXT J
FOR J=l TO LEN(C$)
IF MID$(C$,J,1)<>"
" THEN C1$=C1$+MID$(C$,J,1) NEXT J
IF B1$>C1$ THEN COMPARE=1 IF B1$=C1$ THEN COMPARE=0
IF B1$<C1$
THEN COMPARE=-1 END FUNCTION
SUB UP(A$)
FOR J=l TO LEN(A$)
SELECT CASE
MID$(A$,J,1)
CASE "a" TO "z": MID$ (A$, J, 1) =CHR$ (ASC (MID$ (A$, J, 1) )-32)
CASE "a" TO "n": MID$(A$,J,1)=CHR$(ASC(MID$(A$,J,1))-32)
CASE "p" TO "": MID$(A$,J,1)=CHR$(ASC(MID$(A$,J,1))-80)
CASE "":
MID$(A$,J,1)="" END SELECT
NEXT J
END SUB
3_08.
/*
*/
#include <stdio.h>
#include <conio.h>
#include <string.h>
char *up(char
*a);
int compare(char
*s1, char *s2);
void main()
{
char s1[80],s2[80];
puts("
");
gets (s1);
puts("
");
gets(s2);
switch(compare(s1,s2))
{
case 1: puts("
''");break;
case -1: puts("
''");break;
case 0: puts("
");
}
getch(); }
char *up(char
*a)
{
/* */
static unsigned
char b[80]; int j ;
strcpy (b, a)
;
for(j=0; j<strlen(a);
j++) {
if(97<=b[j] && b[j]<=122) b[j]-=32;
if(160<=b[j] && b[j]<=175) b[j]-=32;
if (224<=b[j] && b[j]<=239) b[j]-=80;
if (241==b[j])
b[j]; }
return b; }
int compare(char
*s1,char *s2) {
char ssl[80],ss2[80];
char j,k;
strcpy(s1,up(s1)};
/*
*/
strcpy (s2*, up (s2) );
/* */
for(j=0,k=0;
j<strlen(sl); j++)
if (sl[j] != ' ') ssl[k++]=sl[j];
/* */
ssl[k]=0x0;
/* */
for(j=0,k=0;
j<strlen(s2);
j++)
if(s2[j]!='
') ss2[k++]=s2[j];
ss2[k]=0x0;
k=atrcmp(ss1.ss2)
/* C */
if(k>0)return
1;
if(k<0)return
1;
return 0;
}
3_08.pas
program comp_string;
{
}
var
s1,s2:string;
function up
(a:string):string; var
j:integer; begin
for j:=l to length(a) do
case a[j] of
'a'..'z': a[j] :=chr(ord(a[j])-32) ;
'a'..'n': a[j]:= chr(ord(a[j])-32} ;
''..'': a[j]:= chr(ord(a[j])-80} ;
'': a[j]:='E';
end; up:=a; end;
function compare(s1,s2:string):integer;
var
ssl,ss2:string; j:byte;
begin
sl:=up(s1);
s2:=up(s2);
ssl:=' ';
for j:=l to
length(s1) do
if sl[j]<>' ' then ssl:=ssl+sl[j];
ss2:=' ';
for j:=l to
length(s2) do
if s2[j]<>' ' then ss2:=ss2+s2[j];
compare:=0;
if ssl>ss2 then compare:=1;
if ssl<ss2 then compare:=-!;
end;
begin
writeln(' ');
readln(s1);
writeln('
');
readln(s2);
case compare(s1,s2)
of
1: writeln(' ""');
-1: writeln('
""');
0: writeln('06e ');
end;
readln;
end.
3.09.
, , .
1 ()
. -, ,
. ,
.
"" 16 ,
. -, ,
, .
.
3_09.bas
R $ = ""
CLS
'
FOR CF=0 TO 7
FOR CS=0 TO 15
COLOR CS,CF LOCATE CF+1,2*CF+CS+1
PRINT MID$(A$,CS+1,1)
NEXT CS
NEXT CF
'
FOR CF=0 TO 7
FOR CS=0 TO 15
COLOR CS+16,CF
LOCATE CF+1,2*CF+CS+41
PRINT MID$(A$,CS+1,1)
NEXT CS
NEXT CF
3_09.
/*
*/
#include <conio.h>
main() {
int i ;
textbackground(0);
clrscr () ;
for(i=0; i<24;
i++) {
gotoxy(2*i+l,i+l);
textcolor(128+i);
textbackground(i+2);
cprintf("
"); }
getch(); }
3_09.
/* */
#include <conio.h>
main() {
int i;
textbackground(0) ;
clrscr();
for(i=0; i<24;
i++) {
gotoxy(2*i+l,i+1);
textattr(128+i
+ ((i+1) « 4));
cprintf("
");
}
getch (); }
3_09.pas
program colorl;
{
}
uses crt;
var
i:integer; begin
textbackground(0);
clrscr;
for i:=0 to 23 do
begin
gotoxy(2*i+l,i+l);
textcolor(128+i);
textbackground(i+l);
writeln(' ');
end;
readln;
end.
3.10.
() ,
m (m < n < 100)
, .
. :
m=3 n=5
- "0.6"
m=1 n=6
- "0.1(6)"
1 ()
,
100, . .
( 0 -1).
, 0, , .
, .
2 ()
, , string.h,
.
.
.
3_10.bas
R
DECLARE FUNCTION
FRAC2STR$(M%, N%)
CLS : DEFINT
A-Z
INPUT "
: ",M,N
PRINT M;"/";N;"=
";FRAC2STR$(M,N)
END
DEFSNG A-Z
FUNCTION FRAC2STR$(M
AS INTEGER,N AS INTEGER)
DIM S AS STRING,
REST(100) AS INTEGER
DEFINT A-Z
I=3: S="0."
DO
Q=M*10\N : P=M*10 MOD N: REST(I)=P
IF P=0 THEN
FRAC2STR=S+CHR$(Q+48) EXIT FUNCTION
END IF
FOR J=3 TO 1-1
IF REST(J)=P
THEN
FRAC2STR=LEFT$(S,
J-l}+"("+RIGHT$(S,LEN(S)-J+l)+")"
EXIT FUNCTION
END IF
NEXT J
S=S+CHR$(Q+48): I=1+1: M=P LOOP UNTIL P=0
END FUNCTION
3_10.
/* */
#include <stdio.h>
#include <conio.h>
char *frac_to_str(char
m,char n);
main() {
char m,n;
printf("\n
: ");
scanf("%d
%d",sm,&n) ;
printf("\n%d/%d=%s",m,n,frac_to_str(m,n));
getch();
}
/ *-----------------------------------------------*
/
char *frac_to_str(char
m,char n) {
int i=2,j,p,q;
char rest[100];
static char s [100]="0.";
do {
q=m*10/n; p=m*10%n;
rest[i]=p;
if(p==0) { s[i]=q+48;
s[i+l]=0x0;
return s; }
for(j=2; j<i; j++)
if(rest[j]==p)
{
for(p=i; p>=j;
p--)
s[p+l]=s[p];
s[j]='(';
s[i+l]=')';
s [i+2]=0x0 ;
return s ; }
s[i]=q+48;
i++;
m=p; }
while (p!=0);
}
3_10.pas
program drobi;
{
}
var
m, n:byte;
function frac_to_str(m,n:byte):string;
var
i,j,p,q:word;
s:string;
rest:array [1..100] of byte;
begin
s:='0.';
i:=l;
repeat
q:=m*10 div n;
p:=m*10 mod n;
rest[i]:=p;
if p=0 then
begin
frac_to_str:==s+chr (q+48) ;
exit;
end;
for j:=l to i-1
do
if p=rest[j] then
begin insert(' (',s,j+2); frac_to_str:=s+')';
exit;
end;
inc(i);
s:=s+chr(q+48);
m:=p;
until p=0;
end;
begin
writeln(' :');
readln(m,n);
writeln(m,'/',n, ' = ', frac_to_str(m,n));
readln; end.
3.11.
() ,
[1, 3999].
. ,
M(1000), O (500), C(100), L
(50), X(10), V(5) I(1). "" "",
(: IV == V-I = 4, IX= X- I= 9, XL = L - X- 40).
"" , (:
VI = = V+ I= , XI = X+ I= I I, LX = L + X = 60). ""
I I= I + I = 2,
I I I = I + I+ I= 3,
XXX = X + X + X = 30,
== C+ C+ C= 300,
MMM = M+ M+ M
+ 3000.
1 ()
""
.
(. 3.1).
3.1.
|
|
|
||
0 |
M |
1000 |
||
1 |
CM |
900 |
||
2 |
D |
500 |
||
3 |
CD |
400 |
||
4 |
|
100 |
||
5 |
|
90 |
||
6 |
L |
50 |
||
7 |
XL |
40 |
||
8 |
X |
10 |
||
9 |
IX |
9 |
||
10 |
V |
5 |
||
11 |
IV |
4 |
||
12 |
I |
1 |
||
, .
, ,
.
. , 3999,
.
3_11.bas
R
DECLARE FUNCTION
torome$ (M%)
DEFINT A-Z
COMMON SHARED
ND()
COMMON SHARED
SD$()
DATA 1,4,5,9,10,40,50.,
90,100,400,500,900,1000
DIM ND(13)
FOR J=0 TO 12:
READ ND(J): NEXT J
DATA I, IV,
V, IX, X, XL, L, XC, C, CD, D, CM, M
DIM SD$(13)
FOR J=0 TO 12:
READ SD$(J): NEXT J
INPUT "
1 3999 : ", N
IF N<1 OR N>3999 THEN PRINT " ":
END
PRINT "
"; N;" = ";torome$(N)
END
FUNCTION torome$
(M)
SHARED ND(),
SD$()
S$=""
FOR K=12 TO
0 STEP -1
WHILE ND(K)<=M
M=M-ND(K): S$=S$+SD$(K)
IF M=0 THEN
EXIT FOR
WEND
NEXT
torome$=S$
END FUNCTION
3_11.
/* */
#include <stdio.h>.
#include <conio.h>
#include <string.h>
char *to_rome(int
n) ;
main() {
int N;
printf("\n 1 3999 : ");
scanf("%d",&N);
if (N<0 | | N>3999) {
printf("\n ");
getch();
exit(0); }
printf("\n B %d = %s",N,to_rome(N));
getch();
}
/*-------------------------------*/
char *to_rome(int
n) {
int k;
static char
s[20]="";
int nd[13]={l,4,5,9,10,40,50,90,100,400,_500,900,1000};
char *sd[13]={"I","IV","V","IX","X","XL",
"L","XC","C","CD","D","CM","M"};
for(k=12; k>=0; k) {
while(nd[k]<=n)
{
n=n-nd[k]; strcat(s,sd[k]);
if(n==0) break;
} }
return s; }
3_11.pas
program in_rome;
{
}
var
N:1..3999;
function to_rome(n:integer): string;
const
nd:array [1..13]
of integer=
(1,4,5,9,10,40,50,90,100,400,500,900,1000) ;
sd:array [1..13] of string=
( 'I', 'IV, 'V,
'I', 'X', 'XL',
'L', 'XC', 'C','CD','D','CM', 'M');
var
k:integer;
s:string;
begin s : =
" ;
for k:=13 downto 1 do
while nd[k]<=n do begin
n:=n-nd[k];
s:=s+sd[k];
if n=0 then break;
end;
to_rome:=s;
end; begin
write ('
1 3999 : ' ).; readln(N);
writeln('B ',N, ' = ', to_rome (N) ) ;
readln;
end.
3.12.
.
3_12.bas
REM
DEFINT A-Z
DATA 1,4,5,9,10,40,50,90,100,400,500,900,1000
DIM ND(13)
FOR J=0 TO 12:
READ ND(J): NEXT J
DATA I,IV,V,IX,X,XL,L,XC,C,CD,D,CM,M
DIM SD$(13)
FOR J=0 TO 12:
READ SD$(J): NEXT J
INPUT "
: ", R$
J=l: M=0
100 :
FOR =12
0 STEP -1
N=LEN(SD$())
IF MID$(R$,J,N)=SD$()
THEN M=M+ND(K): J=J+N: GOTO 100
END IF
IF J>LEN(R$) THEN EXIT FOR
NEXT
PRINT " ";R$;" = ";M
END
3_12a.bas
REM
DATA 1000,900,500,400,100,90,50,40,10,9,5,4,1
DIM ND(13):
FOR J=0 TO 12: READ ND(J): NEXT J
DATA M,CM,D,CD,C,XC,L,XL,X,IX,V,IV,I
DIM SD$(13): FOR J=0 TO 12: READ SD$(J): NEXT J
INPUT " : ",R$
FOR J=l TO LEN(R$)
FOR K=0 TO 12
N=LEN(SD$(K))
IF MID$(R$,J,N)=SD$()
THEN M=M+ND(K): J=J+1: K=K-1
END IF NEXT
NEXT J
PRINT " ";R$;" = ";M
END
3_12.
/* */
#include <stdio.h>
#include <conio.h>
#include <string.h>
main() {
int nd[13]={1000,900,500,400,100,90,50,40,10,9,5,4,1};
char *sd[13]={"M","CM","D","CD","C","XC","L","XL","X",
"IX","V","IV","I"};
char r[20],s[3]; int j,k,n,m=0;
printf(" : ");
scanf("%s", r);
for(j=0; j<strlen(r); j++)
for(k=0; k<13;
k++) {
n=strlen(sd[k]);
strncpyfs, &r.[j] ,n) ;
s[n]=0;
if(strcmp(s,sd[k])==0)
{ m += nd[k];
j++; k; } }
printf("\nB %s = %d",r,m);
getch(); }
3_12.pas
{
}
program from
rome;
const
nd:array [1..13]
of integer=(1000,900,500,400,100,
90,50,40,10,9,5,4,1);
sd:array [1..13]
of string=('M','CM','D','CD','C',
'XC' , 'L',
'XL', 'X', 'IX1, 'V, 'IV, 'I' ) ; var
r,s:string;
j,k,n,m: integer;
begin
m:=0;
write('
: ');
readln(r);
J:=l;
while j<=length(r)
do begin k:=l;
while k<=13
do begin
n:=length(sd[k]);
s:=copy(r,j,n);
if s=sd[k] then
begin
inc(m,nd[k]); inc(j);
dec(k);
end;
inc(k);
end;
inc(j);
end;
writeln('B ',r,' = ',m);
readln;
end.
3.13.
S2
S1 ,
S1 S2.
, S2 S1 .
S2 1, 2, 3
S1.
,
S1="ABCBEEC" S2="ABC" (
) ( 1, 2 3 si)
2 ( 1, 4 7 S1).
, :
S2 S1.
1 ()
. h S1,
, S2. h=l,
h=2 . . ,
S1[I], S2.
. , si
S2.
S1
S2, .
. ( 2000 .),
. ,
, (h=l) (L2>1). L2
.
3_13.bas
R
S2 S1
CLS
INPUT "
S1: ", Sl$: L1=LEN(S1$)
INPUT "
S2: ", 32$: L2=LEN(S2$)
FOR H=l TO L1
IF (H=l) OR (L2>1) THEN
FOR I=1 TO Ll-(L2-l)*H
IF MID$(S1$,I,1)=MID$(S2$,l,l) THEN
FOR J=2 TO L2,
IF MID$(S1$,I+(J-1)*H,1)<>MID$(32$,J,1) THEN GOTO ml
NEXT J
PRINT ":
";-1,": ";I;
FOR = 1 TO L2 - 1: PRINT "-"; I + * H; : NEXT K: PRINT
= 1 ml:
END IF
NEXT I
END IF
NEXT H
IF = 0 THEN PRINT " S2 S1"
END
3_13.
/*
S2 S1 */
#include <stdio.h>
#include <conio.h>
#include <string.h>
main{)
{
char s1 [80],s2[80];
int i,j,k=0,h,Ll,L2;
clrscr();
printf(" S1: ");
scanf("%s",s1);
Ll=strlen(s1);
printf(" S2: ");
scanf("%s",s2);
L2=strlen(s2);
for(h=l; h<=Ll; h++)
{
if(h==l || L2>1
}
{
for(i=0; i<Ll-(L2-l)*h; i++)
{
if (sl[i]=s2[0])
{
for(j=l; j<L2;
j++)
if(si[i+j*h]!=s2[j]) goto ml;
printf("\n : %2d : %d",h-l,i+1);
for(k=l; k<L2; k++)
printf("-%d",i+i+k*h);
ml:;
}
} } }
if(k==0) printf(" S2 S1");
getch () ; }
3_13.pas
program red_str;
(
S2 S1 }
uses crt;
var
s1,s2:string;
i,j,k,h,L1,L2:integer;
label 1;
begin
clrscr;
write(' S1: ');
readln (si);
Ll:=length(sl);
write(' S2: ');
readln (s2);
L2:=length(s2);
k:=0;
for h:=l to
L1 do
if (h=l)or(L2>1)
then
for i:=l to L1-(L2-1)*h do
if s1[i]=s2[l]
then begin
for j:=2 to
L2 do
if s1[i+(j-l)*h]os2[j] then goto 1;
write (': ',h-l:2,' : ',i);
for k:=l to L2-1 do
write('-',i+k*h);
writeln;
k:=l;
1:
end;
if k=0 then writeln(' 32 S1');
readln;
end.
10.11.2021 - 12:37: - Personalias -> WHO IS WHO - - _. 10.11.2021 - 12:36: - Conscience -> . ? - _. 10.11.2021 - 12:36: , , - Upbringing, Inlightening, Education -> ... - _. 10.11.2021 - 12:35: - Ecology -> - _. 10.11.2021 - 12:34: , - War, Politics and Science -> - _. 10.11.2021 - 12:34: , - War, Politics and Science -> . - _. 10.11.2021 - 12:34: , , - Upbringing, Inlightening, Education -> , - _. 10.11.2021 - 09:18: - New Technologies -> , 5G- - _. 10.11.2021 - 09:18: - Ecology -> - _. 10.11.2021 - 09:16: - Ecology -> - _. 10.11.2021 - 09:15: , , - Upbringing, Inlightening, Education -> - _. 10.11.2021 - 09:13: , , - Upbringing, Inlightening, Education -> - _. |