Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
лекцииС#срп.doc
Скачиваний:
0
Добавлен:
01.03.2025
Размер:
390.66 Кб
Скачать

Задача № 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

Примеры:

  1. Подсчитать число и сумму положительных, число и произведение отрицательных элементов заданного массива 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);

}

  1. В заданном массиве 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);

}

  1. Инвертировать массив 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();

  1. Найти наибольший элемент заданного одномерного массива 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();

}