void swap (int *a, int *b) { int temp = *a; *a = *b; *b = temp; }
void printArray (int arr[], int n) { int i; for (i = 0; i < n; i++) printf("%3d ", arr[i]); printf("\n"); }
void randomize ( int arr[], int n ) { long long x; asm("rdtsc" : "=A"(x)); srand(x); int i; for (i = n - 1; i > 0; i--) { int j = rand() % (i+1); swap(&arr[i], &arr[j]); } }
int main() { setlocale(LC_ALL, "Rus"); int A[10] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}; int B[10] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}; int C[10];
*** этот файл мы должны назвать nekkit20.pas *** *** после его компиляции будет создан модуль ***
unit nekkit20;
type tra=(string,integer);
function RomeToArab(s:string):integer; // Перевод римских чисел (не больших MMMCMXCIX) в арабские begin var ar:='IVXLCDM'; var aa:=Arr(1,5,10,50,100,500,1000); var n:=0; Result:=0; foreach var c in s do begin var c1:=n; n:=aa[Pos(c,ar)-1]; Result+=n+(n>c1?-2*c1:0) end; end;
function Equal(r:array of string; a:array of integer):sequence of tra; // Возвращает последовательность кортежей // из массива римских чисел (массив r), // для которых есть соответствие в массиве арабских чисел (массив a) begin foreach var q in r do begin var n:=RomeToArab(q); if a.IndexOf(n)>-1 then yield((q,n)) end end;
end.
*** а это другой файл с любым именем, кроме nekkit20 *** *** он обращается к молулю nekkit20 ***
uses nekkit20;
begin var sr:=Arr('DXVIII','LXIII','MII','XIV','LXXXVIII','CXCVI'); var ar:=Arr(14,98,196,1002,518,64,87); var R:=Equal(sr,ar); if R.Count=-1 then Writeln('Нет совпадений') else foreach var t in R do Writeln(t[0],' = ',t[1]) end.
#include <stdlib.h>
#include <time.h>
#include <locale.h>
void swap (int *a, int *b)
{
int temp = *a;
*a = *b;
*b = temp;
}
void printArray (int arr[], int n)
{
int i;
for (i = 0; i < n; i++) printf("%3d ", arr[i]);
printf("\n");
}
void randomize ( int arr[], int n )
{
long long x;
asm("rdtsc" : "=A"(x));
srand(x);
int i;
for (i = n - 1; i > 0; i--)
{
int j = rand() % (i+1);
swap(&arr[i], &arr[j]);
}
}
int main()
{
setlocale(LC_ALL, "Rus");
int A[10] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9};
int B[10] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9};
int C[10];
randomize (A, 10);
printf("Первый массив:\n");
printArray(A, 10);
randomize (B, 10);
printf("Второй массив:\n");
printArray(B, 10);
int i = 0, j = 0;
for (i = 0; i < 10; i++)
for (j = 0; j < 10; j++)
if (A[i] == B[j])
{
C[i] = i + j;
break;
}
printf("Третий массив:\n");
printArray(C, 10);
return 0;
}