Array49. Дан целочисленный массив размера $$N$$. Если он является перестановкой, то есть содержит все числа от $$1$$ до $$N$$, то вывести $$0$$; в противном случае вывести номер первого недопустимого элемента.
Решение:
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 <stdio.h> 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; } |
Другие задачи из раздела Array можно посмотреть здесь.
#include
#include
int main()
{
setlocale(LC_CTYPE, «Russian»);
int arr[100];
int n, sum;
printf(«Введите размер массива: «);
scanf_s(«%d», &n);
int i;
for (i = 0; i < n; ++i)
{
printf("arr[%d]: ", i + 1);
scanf_s("%d", &arr[i]);
}
for (i = 0; i n || arr[i] < 0)
{
printf_s("\n%d", i + 1);
return 0;
}
}
printf_s("\n");
int q;
for(i = 0; i < n; ++i)
{
for (int t = 0; t < n — 1; ++t)
{
q = i + 1;
}
for (int j = 0; j < n; ++j)
{
if (arr[j] == arr[j-q])
{
printf_s("%d", j+1);
return 0;
}
}
}
sum = 0;
for (i = 0; i < n; i++)
{
sum += arr[i];
}
int max, min;
max = arr[0];
for (i = 1; i max)
{
max = arr[i];
}
min = arr[0];
for (i = 1; i < n; i++)
if (arr[i] < min)
{
min = arr[i];
}
int k;
k = (min + max) * (max — min + 1) / 2;
if (sum == k)
{
printf_s("\n%d", 0);
}
return 0;
}