
Задача № 10
С клавиатуры вводятся по очереди координаты n точек. Определить, сколько из них попадет в заштрихованную область (рис. задачи № 1).
static void Main()
{
int i, n, k = 0;
double x, y, R;
Console.WriteLine(“Введите число точек и радиус круга”);
n = int.Parse(Console.ReadLine());
R = double.Parse(Console.ReadLine());
Console.WriteLine(“ Введите координаты точек”);
for(i = 1; i <= n; i =i +1)
{
x = double.Parse(Console.ReadLine());
y = double.Parse(Console.ReadLine());
if (Math.Abs(x) + Math.Abs(x) >= R) && (x*x + y*y >= R*R) k=k+1;
}
Console.WriteLine(“В заштрихованную область попал, 0:d2} точек“,k);
}
Одномерные и двухмерные массивы.
Пусть
дан вектор
Ввод с помощью клавиатуры
int i, n;
string s;
n = int.Parse(Console.ReadLine());
for(i=0; i<n; i=i+1)
double [] a = new double[n];
{
s = Console.ReadLine();
a[i] = double.Parse(s);
}
Например,
вектор
= {-8, 4, -1, 2, 5, 0.8, -0.9}
На экране монитора после знака необходимо набирать:
7
-8
4
-1
2
5
0.8
-0.9
Вывод на экран дисплея
Console.WriteLine(“Исходный массив”);
for(i=0; i<n; i=i+1)
Consol.Write(“ {0:f2} ”, a[i]);
Console.WriteLine();
На экране элементы предыдущего массива будут выведены:
-8.00 4.00 -1.00 2.00 5.00 0.80 -0.90
Примеры:
Подсчитать число и сумму положительных, число и произведение отрицательных элементов заданного массива a(n).
ввод
n,
a(n)
s = 0 k = 0
p
= 0 l = 0
i
= 1
+
a(i)
≥ 0
?
s
= s + a(i) k
= k + 1
-
p = p*a(i) l
= l + 1
i
= i +1
i
≤ n ?
//////?? &&&&
Печать
s,
k, p, l
static void Main()
{
int i, k, l, n;
string sb;
double s, p;
Console.WriteLine(“Введите число элементов массива”);
n = int.Parse(Console.ReadLine());
double [] a = new double[n];
Console.WriteLine(“Введите элементы массива”);
for(i=0; i<n; i=i+1)
{
sb = Console.ReadLine();
a[i] = double.Parse(sb);
}
k = 0; s = 0; l = 0; p = 1;
for(i=0; i<n; i=i+1)
if(a[i]>=0)
{
k=k+1; s=s+a[i];
}
else
{
l=l+1; p=p*a[i];
}
Console.WriteLine(“Исходный массив”);
for(i=0; i<n; i=i+1)
Consol.Write(“ {0:f2} ”, a[i]);
Console.WriteLine();
Console.WriteLine(“Число и сумма положительных {0:d} {1:f2} ”, k, s);
Console.WriteLine(“Число и произведение отрицательных {0:d} {1: f2}”, l, p);
}
В заданном массиве a(n) вычислить среднее арифметическое и среднее геометрическое значения для положительных элементов массива.
static void Main()
{
int i, k, n;
string sb;
double s, p;
Console.WriteLine(“Введите число элементов массива”);
n = int.Parse(Console.ReadLine());
double [] a = new double[n];
Console.WriteLine(“Введите элементы массива”);
for(i=0; i<n; i=i+1)
{
sb = Console.ReadLine();
a[i] = double.Parse(sb);
}
k = 0; s = 0; p = 1;
for(i=0; i<n; i=i+1)
if(a[i]>=0)
{
k=k+1;
s=s+a[i];
p=p*a[i];
}
Console.WriteLine(“Исходный массив”);
for(i=0; i<n; i=i+1)
Consol.Write(“ {0:f2} ”, a[i]);
Console.WriteLine();
Console.WriteLine(“Среднее арифметическое= {0:f2} ”, s);
Console.WriteLine(“Среднее геометрическое= {0: f2}”, p);
}
Инвертировать массив a(n), т.е. поменять элементы:a1 c an, a2 c an-1,
a3 c an-2, …
ввод
n
Ввод
массива a(n)
a(n)
i
= 1
p = a(i) a(i)
=a(n+1-i) a(n+1-i)
= p
i = i+1
i
≤ n/2 ?
//////?? &&&&
Печать
массива
a(n)
static void Main()
{
int i, n;
string sb;
double p;
Console.WriteLine(“Введите число элементов массива”);
n = int.Parse(Console.ReadLine());
double [] a = new double[n];
Console.WriteLine(“Введите элементы массива”);
for(i=0; i<n; i=i+1)
{
sb = Console.ReadLine();
a[i] = double.Parse(sb);
}
for(i=0; i<n/2; i=i+1)
{
p = a[i];
a[i] = a[n-i];
a[n-i] = p;
}
Console.WriteLine(“Исходный массив”);
for(i=0; i<n; i=i+1)
Consol.Write(“ {0:f2} ”, a[i]);
Console.WriteLine();
}
4) Включить массив b из m элементов в заданный массив a из n элементов, начиная с элемента k.
ввод
n,
m, k
ввод
массива
a(n),
b(m)
i
= n
a(i + m)=a(i)
=
i = i-1
i
>= k ?
//////?? &&&&
i
= 1
a(k
-1
+
i)=b(i)
i = i + 1
i
≤ m ?
//////?? &&&&
Печать
s,
k, p, l
Печать
массива a(n
+ m)
int i, n, m, k;
string s;
n = int.Parse(Console.ReadLine());
m = int.Parse(Console.ReadLine());
k = int.Parse(Console.ReadLine());
double [] a = new double[n+m];
double [] b = new double[m];
for(i=0; i<n; i=i+1)
{
s = Console.ReadLine();
a[i] = double.Parse(s);
}
for(i=0; i<m; i=i+1)
{
s = Console.ReadLine();
b[i] = double.Parse(s);
}
for(i=n; i>k; i=i-1)
{
a[i+m-1] = a[i-1];
}
for(i=0; i<m; i=i+1)
{
a[k-i-1] = b[i];
}
n = n + m;
Console.WriteLine(“Включен массив b в массив a”);
for(i=0; i<n; i=i+1)
Consol.Write(“ {0:f2} ”, a[i]);
Console.WriteLine();
Найти наибольший элемент заданного одномерного массива a(n) и его индекс.
ввод
n,
a(n)
i
= 1
max = a(1) k
= 1
i
= 2
+
a(i) > max ?
max
= a(i)
k
= i
-
i
= i +1
i
≤ n ?
//////?? &&&&
Печать
a[k],
k
p,
l
int i, k, n;
double max;
string s;
n = int.Parse(Console.ReadLine());
double [] a = new double[n];
for(i=0; i<n; i=i+1)
{
s = Console.ReadLine();
a[i] = double.Parse(s);
}
max = a[0]; k = 0;
for(i=0; i<n; i=i+1)
if(a[i]>max)
{
max = a[i];
k = i;
}
Console.WriteLine(“ Максимальный элемент = {0:f2} Его индекс = {1:d}”, a[k], k);
6) Упорядочить элементы одномерного массива b(n) в убывающем порядке.
Алгоритм упорядочения массива заключается в выполнении n-1 проходов:
В первом проходе в массиве b находим максимальный элемент и меняем его с первым элементом массива b,
во втором проходе снова находим максимальный элемент, начиная со второго элемента массива b и меняя его со вторым элементом,
в третьем проходе находим максимальный элемент, начиная с третьего элемента и меняя его с третьим элементом, и т.д. и, наконец,
в n-1 проходе остается два элемента, их и располагаем в возрастающем порядке.
for(i=0; i<n-1; i=i+1)
{
max=b[i]; k = i ;
// Нахождение максимального
for(j=i+1; j<n; j=j+1)
if(b[j]>max)
{
max=b[j]; k=j;
}
// Обмен текущего элемента с максимальным
p = b[i]; b[i] = b[k]; b[k] = p;
}
7) Дан массив a(n). Получить новый b(n) массив, такой, что в нем сначала идут положительные элементы, затем нулевые и потом отрицательные элементы из a(n).
ввод
n,
a(n)
k
= 0 i = 1
a(i)
> 0 ?
k
= k + 1 b(k)=a(i)
i
= i +1
i
≤ n ?
//////?? &&&&
i
= 1
a(i)
= 0 ?
k = k + 1 b(k)=a(i)
i
= i +1
i
≤ n ?
//////?? &&&&
i
= 1
a(i)
< 0 ?
k = k + 1 b(k)=a(i)
i
= i +1
i
≤ n ?
//////?? &&&&
Печать b(n)
static void Main()
{
int i, k, n;
string sb;
Console.WriteLine(“Введите число элементов массива”);
n = int.Parse(Console.ReadLine());
double [] a = new double[n];
double [] b = new double[n];
Console.WriteLine(“Введите элементы массива”);
for(i=0; i<n; i=i+1)
{
sb = Console.ReadLine();
a[i] = double.Parse(sb);
}
k = 0;
for(i=0; i<n; i=i+1)
if(a[i]>0)
{
b[k] = a[i]; k=k+1;
}
for(i=0; i<n; i=i+1)
if(a[i]=0)
{
b[k] = a[i]; k=k+1;
}
for(i=0; i<n; i=i+1)
if(a[i]<0)
{
b[k] = a[i]; k=k+1;
}
Console.WriteLine(“Исходный массив”);
for(i=0; i<n; i=i+1)
Console.Write(“ {0:f2} ”, a[i]);
Console.WriteLine();
Console.Write(“Массив из положительных, нулевых”);
Console.WriteLine(“ и отрицательных элементов”);
for(i=0; i<n; i=i+1)
Consol.Write(“ {0:f2} ”, b[i]);
Console.WriteLine();
}
8) Дан массив a(n). Переслать в массив b(n) положительные элементы из массива a(n).
ввод
n,
a(n)
k
= 0 i = 1
a(i)
> 0 ?
k
= k + 1 b(k)=a(i)
i
= i +1
i
≤ n ?
//////?? &&&&
Печать b(k)
static void Main()
{
int i, k, n;
string sb;
Console.WriteLine(“Введите число элементов массива”);
n = int.Parse(Console.ReadLine());
double [] a = new double[n];
double [] b = new double[n];
Console.WriteLine(“Введите элементы массива”);
for(i=0; i<n; i=i+1)
{
sb = Console.ReadLine();
a[i] = double.Parse(sb);
}
k = 0;
for(i=0; i<n; i=i+1)
if(a[i]>0)
{
b[k] = a[i]; k=k+1;
}
Console.Write(“Массив из положительных элементов”);
for(i=0; i<k; i=i+1)
Consol.Write(“ {0:f2} ”, b[i]);
Console.WriteLine();
}