Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Программирование на языке высокого уровня. Методические указания и варианты заданий для студентов 1-го курса направления подготовки 09.03.01 Информати

.pdf
Скачиваний:
0
Добавлен:
08.09.2026
Размер:
2 Мб
Скачать
☆
ВАРИАНТЫ ЗАДАНИЯ № 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, если AiBi0 и Ki=1, если AiBi0. Вывести на печать мас­сивы 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, если AiBi и Ki=0, если AiBi. Вывести на печать масси­вы A, B и K.
31. Даны массивы A(m) и B(m), m10. Сформировать массив T по
правилу: Ti=Ai/Bi, если Bi>0 и Ti=AiBi, Bi0. Вывести на печать массивы A, B и T.
13
32. Дан массив A(m), m15. Заменить нулем каждый отрицатель-
ный элемент массива и вычислить сумму S и количество K оставшихся положительных элементов. Вывести на печать исходный и преобразо­ванный массивы, а также величины S и K.
33. Даны массивы A(m) и B(m), m15. Сформировать массив С по
правилу: Сi=Ai, если Ai>Bi и Сi=Bi, если AiBi. Вывести на печать мас­сивы 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. Проверить, выполняется ли для них условие AB=BA.
Пример 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
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]