Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
УМК_ПВМ.doc
Скачиваний:
3
Добавлен:
24.11.2019
Размер:
2.64 Mб
Скачать

Рекомендуемая литература:

1осн[173-205], 2осн[256-290], 5доп[51-54], 7доп[23-28]

Тема 8-9. Составление программ решения задач обработки массивов с использованием указателей.

Форма проведения: Решение задач.

Задание: Реализовать обработку массива с использованием указателей, как указано в варианте. Составить блок-схему алгоритма и написать программу.

Варианты заданий:

  1. Дана целочисленная матрица размера M x N. Найти количество ее строк, все элементы которых различны.

  2. Дана целочисленная матрица размера M x N. Вывести номер ее первой строки, содержащей максимальное количество одинаковых элементов.

  3. Дана квадратная матрица порядка M. Найти суммы элементов ее диагоналей, параллельных главной (начиная с одноэлементной диагонали A[1,M]).

  4. Дана квадратная матрица порядка M. Найти суммы элементов ее диагоналей, параллельных побочной (начиная с одноэлементной диагонали A[1,1]).

  5. Дана квадратная матрица порядка M. Вывести максимальные из элементов каждой ее диагонали, параллельной побочной (начиная с одноэлементной диагонали A[1,1]).

Методические рекомендации по проведению СРСП.

Контрольный пример 1. Даны натуральное число n, действительные числа a1, ..., a2n. Получить a1a2n + a2a2n-1 + … + anan+1.

Контрольный пример 2. Дан одномерный массив. Найти среди элементов массива максимальный и зафиксировать его порядковый номер.

Контрольный пример 3. Дан двумерный массив. Найти минимальный и максимальный элементы массива.

/* пример 1 */

#include <conio.h>

#include <stdio.h>

#define n 4

main ()

{

clrscr();

int a[n],i,s,*ptr;

printf("Input massiv\n");

for (i=0;i<2*n;i++)

scanf("%d", &a[i]);

ptr=a; s=0;

for (i=0;i<n;i++)

s+=*(ptr+i)**(ptr+2*n-1-i);

printf("S = %d\n",s);

getch();

return 0;

}

/* пример 2 */

#include <conio.h>

#include <stdio.h>

#define n 5

main ()

{

clrscr();

int a[n],i,*max,pos;

printf("Input massiv\n");

for (i=0;i<n;i++)

scanf("%d", &a[i]);

max=a; pos=0;

for (i=0;i<n;i++)

if (*(a+i)>*max)

{ max=a+i; pos=i; }

printf("Max = %d raspolojen na %d meste",*max,pos+1);

getch();

return 0; }

/* пример 3 */

#include <stdio.h>

#include <conio.h>

#define n 3

main()

{ int i, j, m1, m2, p1, p2, buf, a[n][n];

int *min, *max,s;

clrscr();

printf("Input matrix %dX%d\n",n,n);

for(i=0; i<n; i++)

for(j=0; j<n; j++)

scanf("%d", &a[i][j]);

min=*a; m1=m2=p1=p2=0;

printf("Min = %3d m1 = %3d p1 = %3d\n", *min,m1,p1);

for(i=0; i<n; i++)

for(j=0; j<n; j++)

if (*(*(a+i)+j)<*min)

{

*min=*(*(a+i)+j); m1=i; p1=j;

}

printf("Min = %3d m1 = %3d p1 = %3d\n", *min,m1,p1);

max=*a;

for(i=0; i<n; i++)

for(j=0; j<n; j++)

if (*(*(a+i)+j)>*max)

{

*max=*(*(a+i)+j); m2=i; p2=j;

}

printf("Max = %3d m2 = %3d p2 = %3d\n", *max,m2,p2);

getch();

return 0;

}

Рекомендуемая литература.

1осн[273-292], 2осн[273-276], 6доп[135-147]