Array49. Дан целочисленный массив размера N. Если он является перестановкой, то есть содержит все числа от 1 до N, то вывести 0; в противном случае вывести номер первого недопустимого элемента.
>Решение 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 | program Array49; var a:array[1..10] of integer; N,i,i2:Integer; check: Boolean; begin Write('N: '); Readln(N); for i:=1 to N do begin write(i,' :'); readln(a[i]); end; for i:=1 to N do begin check:=False; for i2:=1 to N do if i=a[i2] then check:=True; if not(check) then begin Writeln (i); break; end; end; if check then Writeln(0); 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 33 34 35 36 37 | #include int main(void) { int a[10]; int n; printf("N: "); scanf("%i",&n); int i; for (i=0; i<n; ++i){ printf("a[%i] : ",i+1); scanf("%i",&a[i]); } int i2; for (i=1; i<=n;++i){ for (i2=0; i2<n;++i2){ if (a[i2]==i){ i2=n+100; break; } } if (i2!=n+100){ printf("%i \n",i); break; } } if (i==n+1){ printf("%i \n",0); } return 0; } |
C#
К сожалению, задача не верно решена… Я ввожу последовательность 2,4,1,8,3,5,6,2. Ответ должен быть 8, а выдает 7. И это не единственный пример.
а можно с++?