Array63. Даны два массива A и B размера 5, элементы которых упорядочены по возрастанию. Объединить эти массивы так, чтобы результирующий массив C (размера 10) остался упорядоченным по возрастанию.
>Решение Pascal
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 | program Array63; var a,b:array[1..5] of integer; c:array[1..10] of integer; ka,kb,k:Integer; begin Writeln('A: '); for k:=1 to 5 do begin write(k,' :'); readln(a[k]); end; Writeln('B: '); for k:=1 to 5 do begin write(k,' :'); readln(b[k]); end; ka:=1; kb:=1; for k:=1 to 10 do begin if ka>5 then begin c[k]:=b[kb]; inc(kb); end else if kb>5 then begin c[k]:=a[ka]; inc(ka); end else if a[ka]<b[kb] then begin c[k]:=a[ka]; inc(ka); end else begin c[k]:=b[kb]; inc(kb); end; end; Writeln('C:'); for k:=1 to 10 do writeln(k,' :',c[k]); end. |
>
Решение C
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 | #include <stdio.h> int main(void) { float a[5],b[5],c[10]; int k; for (k=0; k<5; ++k){ printf("a[%i] : ",k+1); scanf("%f",&a[k]); } for (k=0; k<5; ++k){ printf("b[%i] : ",k+1); scanf("%f",&b[k]); } int ka=0,kb=0; for (k=0; k<10; ++k){ if ((ka>=5)||((a[ka]>b[kb])&&(kb<5) )) { c[k]=b[kb]; ++kb; } else { c[k]=a[ka]; ++ka; } } printf("C: \n"); for (k=0; k<10; ++k) printf(" %i: %f\n",k+1,c[k]); return 0; } |
Спасибо за решение, но прокомментировали бы чтоль его…