Добавил:
ivanov666
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:Программирование на языке высокого уровня. Методические указания и варианты заданий для студентов 1-го курса направления подготовки 09.03.01 Информати
.pdf
ВАРИАНТЫ ЗАДАНИЯ № 2
1. Даны массивы A(m) и B(m), m12. Сформировать массив C по
правилу:
C1=Bm+A
C2=B
..............
Cm=B1+Am
Найти сумму S элементов массива C. Вывести на печать массивы
A, B, C и полученную сумму S.
2. Дан массив C(m), m15. Вывести на печать номера тех элемен-
тов массива, которые меньше последнего, и их число, а также вывести
на печать элементы массива C.
3. Дан массив A(m), m15. Переписать элементы массива в обрат-
ном порядке и найти их сумму. Вывести на печать старый массив, новый массив и полученную сумму.
4. Дан массив C(m), m12. Найти сумму и количество положитель-
ных элементов (>0), количество элементов, равных нулю, а также произведение и количество отрицательных элементов (<0). Вывести на печать полученные величины и массив C.
5. Дан массив A(m), m20. Вывести на печать сумму элементов
массива, если она превосходит число 50, в противном случае вывести
на печать исходный массив.
6. Дан массив D(m), m25. Из массива D переписать в массив T
элементы с нечетными номерами. Вывести на печать элементы массива
D, массива T, сумму и количество элементов массива T.
7. Дан массив A(m), m12. Вывести на печать исходный массив, а
также величину и номер его минимального положительного элемента.
8. Дан массив A(m), m20. Вывести на печать исходный массив, а
также величину и номер его максимального отрицательного элемента.
9. Дан массив B(m), m15. Все элементы с четными номерами
удвоить, а с нечетными — заменить нулями. Вывести на печать исходный и переформированный массив.
1
m-1+A2
11

10. Дан массив C(m), m17. Найти произведение всех элементов,
предшествующих первой нулевой компоненте, и сумму последующих.
Вывести на печать исходный массив и полученные произведение и
сумму.
11. Дан массив B(m), m20. Все отрицательные элементы заменить
нулями. Вывести на печать исходный массив, переформированный
массив, а также сумму его элементов.
12. Дан массив P(m), m18. Вычислить величину K, равную коли-
честву отрицательных элементов, заменяя эти элементы нулями. Вывести на печать исходный массив, преобразованный массив, а также величину K.
13. Дан массив A(m), m20. Найти сумму S его положительных
элементов. Все отрицательные элементы удвоить. Вывести на печать
исходный массив, переформированный массив и число S.
14. Даны массивы A(m) и Y(m), m16. Найти сумму S:
S=A1Ym+A2Y
+...+AmY1. Если S<24, вывести ее на печать, в про-
m-1
тивном случае — вывести на печать оба исходных массива.
15. Дан массив C(m), m17. Вычислить сумму S элементов с не-
четными номерами, удовлетворяющих условию Ci<1. Вывести на
печать исходный массив и полученную сумму S.
16. Дан массив A(m), m16. Найти сумму S элементов, удовлетво-
ряющих условию Ai>12, и их количество K. Вывести на печать исходный массив и величины S и K.
17. Даны массивы A(m) и B(m), m12. Сформировать массив C по
правилу: C1=A1, C2=B1, C3=A2, C4=B2 и т.д. Вывести на печать исходные
массивы A и B и сформированный массив C.
18. Дан массив P(m), m20. Определить количество положитель-
ных элементов K и квадрат их суммы S2. Вывести на печать исходный
массив и величины K и S2.
19. Даны массивы A(m) и B(m), m10. Сформировать массив C по
правилу: C1=A1-B1, C2=A2+B2, C3=A3-B3 и т.д. Вывести на печать исходные массивы A и B и сформированный массив C.
20. Дан массив P(m), m16. Определить количество положитель-
ных элементов KP, количество отрицательных элементов KM, количество нулевых элементов KZ. Вывести на печать исходный массив и величины KP, KM и KZ.
12

21. Дан массив A(m), m10. Определить номер NM первого отри-
цательного элемента и номер NZ первого нулевого элемента. Вывести
на печать исходный массив и величины NM и NZ.
22. Дан массив P(m), m13. Составить массив Q из его неотрица-
тельных элементов, вычислить сумму S и количество K элементов массива Q. Вывести на печать исходный массив P, новый массив Q и величины S и K.
23. Дан массив P(m), m17. Найти количество K всех элементов,
предшествующих первой отрицательной компоненте, и их сумму S.
Вывести на печать исходный массив и величины K и S.
24. Дан массив C(m), m20. Найти произведение P всех отрица-
тельных элементов массива и их количество K. Вывести на печать исходный массив и величины P и K.
25. Дан массив C(m), m25. Сложить отдельно элементы с четны-
ми и нечетными номерами. Большую сумму и исходный массив вывести на печать.
26. Дан массив C(m), m30. Расположить его элементы так, чтобы
вначале шли положительные, а потом все остальные. Исходный и переформированный массивы вывести на печать.
27. Даны массивы A(m) и B(m), m10. Сформировать массив K по
правилу: Ki=-1, если AiBi0 и Ki=1, если AiBi0. Вывести на печать массивы A, B и K.
28. Дан массив A(m), m15. Заменить нулем каждый третий эле-
мент массива и вычислить сумму S оставшихся элементов. Вывести на
печать исходный массив, переформированный и величину S.
29. Дан массив A(m), m10. Вывести на печать номера тех элемен-
тов, которые меньше числа X=13. Заменить эти элементы числом X.
Вывести на печать исходный и переформированный массивы.
30. Даны массивы A(m) и B(m), m15. Сформировать массив K по
правилу: Ki=1, если AiBi и Ki=0, если AiBi. Вывести на печать массивы A, B и K.
31. Даны массивы A(m) и B(m), m10. Сформировать массив T по
правилу: Ti=Ai/Bi, если Bi>0 и Ti=AiBi, Bi0. Вывести на печать массивы
A, B и T.
13

32. Дан массив A(m), m15. Заменить нулем каждый отрицатель-
ный элемент массива и вычислить сумму S и количество K оставшихся
положительных элементов. Вывести на печать исходный и преобразованный массивы, а также величины S и K.
33. Даны массивы A(m) и B(m), m15. Сформировать массив С по
правилу: Сi=Ai, если Ai>Bi и Сi=Bi, если AiBi. Вывести на печать массивы A, B и С.
34. Дан массив Q(m), m14. Найти количество K всех элементов,
предшествующих первой компоненте, меньшей 10, и их сумму S. Вывести на печать исходный массив и величины K и S.
35. Даны массивы A(m) и B(m), m15. Сформировать массив C по
правилу: C1=A1, C2=-B1, C3=A2, C4=-B2 и т.д. Вывести на печать исходные массивы A и B и сформированный массив C.
ПРИМЕРЫ ВЫПОЛНЕНИЯ ЗАДАНИЯ
Пример 1: Найти среднее значение положительных элементов массива
X[n].
#include <stdio.h>
#include <conio.h>
#include <alloc.h> /* <malloc.h> для C++ */
main()
{
int i,n,k,*x;
float s;
FILE *in;
if((in=fopen("myarray.dat ","r"))==NULL)
{
printf("\nФайл myarray.dat не открыт !");
getch(); exit(1);
}
printf(”Введите n:”); scanf(”%d”,&n);
x=(int*)malloc(n*sizeof(int));
printf(”\nВведите элементы массива:”);
for(i=0;i<n;i++)
fscanf(in,”%d”,&x[i]);
14

fclose(in);
printf(”\nИсходный массив:\n”);
for(i=0;i<n;i++)
printf(”%d ”,x[i]);
s=0; k=0;
for(i=0; i<n; i++)
if(x[i]>0){k++; s+=x[i];}
if(k)s/=k; /* if(k>0)s=s/k; */
printf(”\ns=%f”,s);
getch();
}
Пример 2: Найти минимальное значение среди положительных эле-
ментов массива X[n] (фрагмент программы).
k=-1; r=MAXINT; /*требуется #include <values.h>*/
for(i=0; i<n; i++)
{
if(x[i]<=0) continue;
if(x[i]<r){r=x[i]; k=i;}
}
if(k==-1)
printf(”\nПоложительных элементов нет”);
else
printf(”\nx[%d]=%d”,k,r);
getch();
15

ВАРИАНТЫ ЗАДАНИЯ № 3
1. Найти наибольший элемент вектора C, где C=AB(A— матрица,
B — вектор).
2. Найти след матрицы C (сумму элементов главной диагонали),
где C=AB (A,B — заданные квадратные матрицы).
3. Даны координаты нескольких точек на плоскости. Найти точки,
наиболее (наименее) удаленные друг от друга.
4. Даны координаты нескольких точек на плоскости и уравнение
прямой. Упорядочить по возрастанию (убыванию) расстояния от этих
точек до заданной прямой.
5. Найти наибольший (наименьший) из повторяющихся элементов
данного массива.
6. Создать массив, в котором на первом месте записан индекс
наименьшего (наибольшего) элемента данного массива, на втором —
индекс следующего по величине и т.д.
7. Подсчитать количество перемен знака в данном массиве.
8. Исключить из данного массива заданный элемент или выяснить,
что такого элемента нет.
9. Исключить из данного массива повторяющиеся элементы.
10. Подсчитать, сколько элементов встречается в данном массиве
более одного раза.
11. Найти, какое значение встречается в данном массиве наиболь-
шее число раз.
12. Подсчитать, сколько раз встречается в данном массиве каждое
значение.
13. За один просмотр массива найти его наибольший и наимень-
ший элементы.
14. Найти два наибольших (наименьших) элемента данного масси-
ва за один просмотр.
15. Найти три наибольших (наименьших) элемента данного масси-
ва за один просмотр.
16

16. Вместо данного массива создать два, в первом из которых за-
( , ,..., )a a a
n1 2
11
132
21
nn
n
aaa
aaa
aaa
писаны значения ненулевых элементов данного массива, а во втором —
индексы этих элементов.
17. В данном массиве найти самую длинную группу из записанных
подряд элементов одного знака.
18. В данном массиве найти самую длинную группу из записанных
подряд одинаковых элементов.
19. Даны два массива. Найти самую длинную общую часть этих
массивов.
20. Назовем «сокращенной формой» вектора задание его в виде
двух массивов, в первом из которых записаны значения ненулевых координат этого вектора, а во втором — индексы этих координат. Найти
скалярное произведение двух векторов, заданных в «сокращенной
форме».
21. Два вектора заданы в «сокращенной форме» (см. № 20). Найти
их сумму.
22. Даны два упорядоченных массива. Слить их в один массив той
же упорядоченности.
23. Дан одномерный массив, в котором записаны элементы верхнего треугольника квадратной матрицы, прочитанные по строкам. Составить массив из этих же элементов, но прочитанных по столбцам (не
восстанавливая матрицы).
24. Дан одномерный массив, в котором записаны элементы верхнего треугольника квадратной матрицы, прочитанные по столбцам. Составить массив из этих же элементов, но прочитанных по строкам (не
восстанавливая матрицы).
25. Составить массив из всех делителей данного натурального числа.
26. Дан массив
. Составить квадратную матрицу
.
17

27. Дан массив
( , ,... , )a a a
n1 2
n
n
nn
n
n
aaa
aaa
aaa
21
22
2
2
1
21
. Составить квадратную матрицу
.
28. Дана матрица A. Составить три одномерных массива, в первом
из которых записаны значения ненулевых элементов матрицы A, во
втором — номера строк, в третьем — номера столбцов, содержащих
эти элементы.
29. Даны два одномерных массива, в первом из которых записаны
значения ненулевых элементов матрицы A, во втором — приведенные
индексы этих элементов (порядковый номер каждого элемента при чтении матрицы по строкам; номер начального элемента — 0). Указано
число столбцов матрицы. Составить матрицу.
30. Даны три одномерных массива, в первом из которых записаны
значения ненулевых элементов матрицыA, во втором — номера строк, в
третьем — номера столбцов, содержащих эти элементы. Составить
матрицу A.
31. Проверить, является ли данная квадратная матрица симметричной.
32. Даны две квадратные матрицы A и B. Проверить, выполняется
ли для них условие AB=BA.
Пример 1: Упорядочить данный массив.
#include <stdio.h>
#include <conio.h>
#include <alloc.h> /* <malloc.h> для C++ */
void sort(int*, int);
ПРИМЕРЫ ВЫПОЛНЕНИЯ ЗАДАНИЯ
18

main( )
{
int *mas,i,n;
FILE *in;
if((in=fopen("myarray.dat ","r"))==NULL)
{
printf("\nФайл myarray.dat не открыт
!");
getch(); exit(1);
}
printf("\n Укажите количество чисел n=");
scanf("%d",&n);
/* заказ памяти для чисел массива: */
mas=(int *)malloc(n*sizeof(int));
for(i=0; i<n; i++) fscanf(in,"%d",&mas[i]);
fclose(in);
printf("\n Исходный массив:\n");
for(i=0; i<n; i++) printf(" %d ",mas[i]);
sort(mas,n); /*обращение к функции sort*/
printf("\n Упорядоченный массив:\n");
for(i=0; i<n; i++)
printf(" %d ",mas[i]);
}
void sort(int *a, int n)
{
int i,k,z;
do {
k=0;
for(i=0; i<n-1; i++)
if(a[i]>a[i+1])
{
z=a[i]; /* перестановка */
a[i]=a[i+1]; /* элементов */
a[i+1]=z; /* и */
k=1; /* смена признака */
}
} while(k);
}
19

Пример 2: Определить максимальную длину симметричной части дан-
ного массива.
#include <stdio.h>
#include <conio.h>
/* Функция получает два параметра: длину проверяемой группы и адрес ее начала. Если группа симметрична – return 1, иначе -0.*/
int Mirror(int n, int* x)
{
int i;
for(i=0;i<n/2;i++)
if(x[i]!=x[n-1-i])
return 0;
return 1;
}
main()
{
int i,Len,L,*y;
int n=10,x[10]={1,2,3,4,3,2,5,1,2,3};
clrscr();
Len=0;
/* Делаем анализ, начиная с каждого элемента, варь-
ируем длину группы от максимально возможной (n-i,
т.е. до конца) до минимальной (L-2).*/
for(i=0;i<n-1;i++)
for(L=n-i;L>1;L--)
if(Mirror(L,&x[i]))
if(L>Len)
{
Len=L;
y=x+i;
break;
}
if(Len)
20
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]
