Контрольные точки второго модуля
Постановка задачи
Задача 3. Написать постановку задачи, алгоритм и программу для вычисления значения по формуле Матрица B[1:n, 1:n] – целого
455.50K
Category: programmingprogramming

Lecture2_1_2024__

1. Контрольные точки второго модуля

• 3 лабораторные работы, защита отчетов как
в 1 модуле; (5 баллов)
• 1 контрольная работа (письменно) (3 балла);
• контроль усвоения материала на лекциях и
семинарах (2 балла);
• экзамен (тест).
Dead-lines для лабораторных работ
1. 2 занятие;
2. 4 занятие;
3. 6 занятие
(считаются занятия отдельно для обеих
подгрупп по порядку, указанному в расписании).

2.

Для вычисления оценки текущего контроля по дисциплине
используется следующая таблица.
Работа на
семинарском
занятии
1 модуль
1
2 модуль
1
Работа
на
лекции
2
1
Выполнение
Контрольная
лабораторного
работа
практикума
7 (3+4)
5(2+2+1)
3
В скобках указано распределение баллов по лабораторным
работам.

3.

Оценка за текущий контроль в 1 и 2 модуле учитывает
результаты студента следующим образом.
Модуль 1. Отекущая 1= Олекция+Осеминар+ Олаб. работа+ Оответы у доски.
Модуль 2. Отекущая 2= Олекция+Осеминар+ Олаб. работа+ Оответы у доски +
Оконтр. работа.
Все оценки рассматриваются без округления.
Результирующая оценка учитывает две оценки модулей.
Промежуточная оценка за 1 и 2 модуль вычисляется по формуле
Опромежуточная 1 и 2 = 0,3* Отекущая 1 + 0,5*Отекущая 2+ 0,2* Оэкзамен 2 модуль,
где Отекущая 1 ,Отекущая 2– оценки текущего
контроля 1, 2 модуля
, без округления.
Округление производится один раз, после вычисления промежуточ-н
ой оценки, по правилам арифметики.

4.

Экзаменационная оценка не является блокирующей. П
ромежуточная оценка за 1 и 2 модуль не может пре- вы
шать 10 баллов, в случае превышения ставится про-ме
жуточная оценка 10 баллов.
Результирующая оценка за дисциплину вычисляется по
формуле
Орезультирующая =0,4*О промежуточная 1 и 2 +0,6*О промежуточная 3 и 4.
Округление производится по правилам арифметики.
В диплом выставляется результирующая оценка.

5.

• Ни один из элементов текущего контроля не является
блокирующим.
• На некоторых семинарах и лекциях проводится тест или
проверочная работа. Каждый вид работы оценивается от
1 до 4 баллов. В итоговую оценку эти баллы входят с
коэффициентом, получаемым делением числа занятий,
на которых проводилось оценивание, на общее
количество занятий.
• При пропуске лекции или семинарского занятия по любой
причине студент не может решить дополнительное
задание для компенсации баллов, которые он мог бы
получить на этом занятии.
• Кроме того, преподаватель может оценивать
дополнительными баллами ответ студента у доски
(максимум 2 балла) и активное участие в решении задач
семинаров (например, выявление и исправление
неточностей и ошибок в алгоритмах и при кодировании
программ, внесение усовершенствований в алгоритм и
т.п.) (максимум по 0.2 балла за каждый ответ).

6.

• Для каждой лабораторной работы устанавливается срок
защиты отчета (во 2 модуле на 2, 4 и 6 занятии, считая пары
отдельно для каждой подгруппы). При своевременной
защите работа оценивается полученным баллом, при
опоздании на 1 занятие балл снижается на 40%, при
опоздании на 2 занятия балл снижается на 60% от
полученной оценки. При опоздании более чем на 2 занятия
работа не оценивается.
• В случае пропуска занятий по уважительной причине
(обязательно предоставление справки) срок сдачи
лабораторной работы может быть перенесен на
соответствующее количество рабочих дней.
• В случае пропуска занятий по уважительной причине
(обязательно предоставление справки) предоставляется
дополнительное время для написания контрольной работы
(единственная дата написания заранее сообщается через
старост).

7.

• Переписывание контрольной работы с целью повышения
полученной оценки не допускается.
• Для последней лабораторной работы устанавливается один
дедлайн – последнее занятие по лабораторным работам в
этой подгруппе. После этой даты сдать лабораторную
работу нельзя.
• После завершения модуля досдать работы нельзя.
• Пересдача лабораторной работы работы с целью
повышения полученной оценки не допускается.

8.

Начиная с л.р. 4 для подсчета результатов сдачи
лабораторных работ используется следующая таблица.
Раздел
Максимальная
оценка
Работа программы
1
Тесты
1
Правильность алгоритма
3
Ответы на вопросы
Дополнительное
задание
2
Итоговая
оценка
3
Итого
Количество столбцов «Итоговая оценка» равно числу
программ, которые должны быть разработаны при
выполнении соответствующей лабораторной работы.

9.

Задача 2. Написать постановку, алгоритм и программу для
решения следующей задачи. Дан одномерный массив целых
чисел. Cформировать новый массив, содержащий повторяющиеся
элементы исходного массива.
Например,
1.Дан массив A:
2.Дан массив A:
A[0:na-1]
1 2 3
A[0:na-1]
1 -1 0
1
2
4
1
В результате получим массив
B[0:nb-1]
1
2
1
2
1
3
нет массива b

10. Постановка задачи

Дано: na-цел, a[0:na-1]-цел.
Результат: b[0:nb-1]-цел,или сообщение “нет
массива b”
При: naЄN, na<=lmax, a[i]ЄZ, i=0,na-1
Связь: ∀ i=0,na-1: ∃ j=0,na-1:
i≠j и a[i]=a[j] ∃ k=0,nb-1: b[k]=a[i],

11.

Алг «функция count» при нумерации с нуля
вход na - цел, a[0:na-1] – цел выход b[0:nb-1] - цел , nb - цел
нач {вычисление нового массива из повторяющихся элементов
исходного массива с одним вхождением}
nb:=0 {длина массива b}
цикл от i:=0 до na-1 {проверка повторения a[i]}
j:=0 {текущий номер элемента в маccиве a}
цикл-пока j<nа и (a[i]≠a[j] или i=j) {не дошли до конца массива и
не нашли элемента, равного текущему элементу массива, но
расположенного на другом месте}
j:=j+1 {берем следующий элемент массива}
кц
если j<na то {a[i] повторяется}
{запишем a[i] в массив b}
b[nb]:=a[i] ; nb:=nb+1 все
всё
кц
кон

12.

Алг «главная функция»
Нач
{вызов функции} input_array(na, a)
{вызов функции} nb=count(na, a, b)
если nb=0 то
вывод(«нет массива b»)
иначе
{вызов функции} print_array (nb,b)
всё
кон

13.

#include <stdio.h>
#define lmax 10
void input_array (int *n, int a[])
{int i;
printf ("input n ");
scanf("%d",n);
for(i=0;i<*n;i++)
scanf("%d",&a[i]);
}
void print_array (int n, int a[])
{ int i;
for(i=0;i<n;i++)
printf("%5d",*(a+i));
printf("\n");

14.

int count(int a[], int b [], int na )
{int *i, *j, nb=0;
//i, j – указатели на элементы массива a
for(i=a;i<a+na;i++)
{
j=a;
while(j<a+na&& (*i!=*j || i==j)) j++;
if (j<a+na)
*(b+nb)=*i, nb++;
}
return nb;
}

15.

int main()
{
int a[lmax],b[lmax], na, nb;
input_array(&na, a);
nb=count(a, b,na);
if (nb==0)
printf("нет массива b");
else
{
printf(“массив b : ");
print_array(nb,b);
}
return 0;
}

16. Задача 3. Написать постановку задачи, алгоритм и программу для вычисления значения по формуле Матрица B[1:n, 1:n] – целого

типа.
B[1:n, 1:n]
Max[1:n]
1
-2
0
3
2
4
6
-8
4
3
2
1
7
-3
0
-6
3
-8
Min = -8
4
7

17.

Постановка задачи:
Дано:n-цел,B[1:n,1:n]цел
Результат: G-цел
При: nєN, n≤lmax
Связь: См. формулу
Алг «главная функция»
нач
ввод(n,B[1:n,1:n])
{Вызов функции}
G:=Z(n,B)
вывод (G)
кон
Алг «функция Z»
вход: n-цел, B[1:n,1:n]-цел
выход: min-цел
нач
min:=Верхняя граница целого типа
цикл от i:=1 до n
max:=b[i,1]
цикл от j:=2 до n
если |b[i,j]|>|max| то
max:=b[i,j]
всё
кц
если max<min то min:=max
всё
кц
z:=min {возвращение полученного значения}
кон

18.

#include <stdio.h>
#include <limits.h>
#include <math.h>
#define lmax 10
void vv_matr(int a[][lmax+1], int *n) //или int (*a)[lmax]
{ //передаем массив указателей на строки, n– по адресу
int i, j;
printf("n = "); scanf("%d", n);
printf(«Введите матрицу размером %d на %d \n",*n,*n);
for(i=1; i<=*n; i++)
for(j=1; j<=*n; j++)
scanf("%d", a[i]+j);
}

19.

//передаем n по значению
void viv_matr(int a[][lmax+1], int n)
{int i, j;
for(i=1; i<=n; i++)
{
for(j=1; j<=n; j++)
printf("%4d", a[i][j]);
printf("\n");
}
}

20.

int z(int n, int b[][lmax+1])
{int min,max,i,*ui; //uj –указатель на начало столбца,
//ui - на элемент матрицы
min=INT_MAX;
for (i=1;i<=n;i++)
{max=*(b[i]+1);
for (ui=b[i]+2; ui<=b[i]+n;ui++)
if (abs(*ui)>abs(max))
max=*ui;
if (max<min)
min=max;
}
return min;
}

21.

int main()
{int b[lmax+1] [lmax+1],G, n;
vv_matr(b,&n); //ввод матрицы
viv_matr(b,n); //вывод матрицы
G=z(n,b); //вычисления
printf("G=%10d",G);
return 0;
}
English     Русский Rules