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


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


"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).

Составить программу, которая:

  • запрашивает и вводит анализируемые строки S1 и S2;

  • определяет, входит ли строка S2 в S1, выдает шаг разрядки и номера соответствующих позиций в строке si.

Задача программы — определить все возможные варианты вхождения S2 в S1.




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



Книжный магазин