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

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

1осн[325-355],2осн[371-405]

5доп[46-51],6доп[116-126], 8доп[13-16]

Тема 12. Методы сортировки.

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

Задание: Для приведенных вариантов заданий применить различные методы сортировки.

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

  1. Дан массив A(6, 6). Вывести строки массива по убыванию первых элементов строк.

  2. Дан массив A(6, 6). Вывести столбцы массива по возрастанию максимальных элементов столбцов.

  3. Дан массив A(6, 6). Вывести строки массива по неубыванию последних элементов строк.

  4. Дан массив A(6, 6). Вывести строки массива по невозрастанию минимальных элементов строк.

  5. Дан массив A(6, 6). Вывести столбцы массива по убыванию последних элементов столбцов.

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

Контрольный пример 1. (Метод пузырька). Упорядочить по неубыванию элементы массива А(100) (рисунок 11).

Контрольный пример 2. (Обменная сортировка). Упорядочить элементы массива А(100) по невозрастанию (рисунок 12).

Контрольный пример 3. (Сортировка по индексам). Упорядочить элементы массива А(100) по неубыванию.

/* пример 1 */

#include <stdio.h>

#include <conio.h>

#define n 100

main()

{ int i, b, pr, k, a[n];

clrscr();

for(i=0; i<n; i++) scanf(“%d”, &a[i]);

pr=k=1;

while (pr==1) {

pr=0;

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

if (a[i]>a[i+1]) {

b=a[i];

a[i]=a[i+1];

a[i+1]=b;

pr=1; }

k++; }

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

printf(“%3d”, a[i]);

getch();

return 0;

}

/* пример 2 */

#include <stdio.h>

#include <conio.h>

#define n 100

main()

{ int i, j, b, a[n];

clrscr();

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

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

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

for(j=i+2; j<n; j++)

if (a[i]<a[j]) {

b=a[i];

a[i]=a[j];

a[j]=b; }

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

printf(“%3d”, a[i]);

getch(); return 0; }

/* пример 3 */

#include <stdio.h>

#include <conio.h>

#define n 100

main()

{

int i, j, b, k, min, a[n];

clrscr();

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

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

i=0;

while (i<n-1)

{

min=a[i];

k=i;

for(j=i+1; j<n; j++)

if (a[j]<min)

{

min=a[j];

k=j;

}

b=a[i];

a[i]=a[k];

a[k]=b;

i++;

}

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

printf(“%3d”, a[i]);

getch();

return 0;

}

Тема 13. Составление программ решения задач с использованием структур данных.

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

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

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

Варианты 1-5

Предусмотреть вывод значений для полей элементов массива записей по следующим ключам: по адресу юридической консультации, по названию юридической консультации, по фамилии, имени, отчеству (Ф.И.О.) адвоката или нотариуса, по номеру телефона адвоката или нотариуса.

 

Запросы:

  1. Определить, сколько юридических консультаций находится в определенном районе.

  2. Определить юридическую консультацию, в которой работает наибольшее количество адвокатов.

  3. Определить юридическую консультацию, в которой работает наименьшее количество нотариусов.

  4. Определить, сколько нотариусов и адвокатов работает в определенной юридической консультации.

  5. Определить юридические консультации, которые находятся на одной определенной улице.

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

Контрольный пример 1. Даны сведения о сотрудниках фирмы: фамилия, имя, адрес, возраст, телефон, зарплата. Вывести сведения о сотрудниках по имени Alexв возрасте от 25 до 30 лет.

Контрольный пример 2. Даны сведения о сотрудниках фирмы: фамилия, имя, адрес, возраст, телефон, зарплата. Вывести список сотрудников по убыванию возраста.

/* пример 1 */

#include <stdio.h>

#include <conio.h>

#include <string.h>

#include <stdlib.h>

#define n 3

struct person

{ char fam[20], name[15], address[30];

int age, phone, salary; };

main ()

{ struct person str_pr[n];

int i;

clrscr();

printf("Input svedeniya\n");

/* пример 2 */

#include <stdio.h>

#include <conio.h>

#define n 3

struct person

{

char fam[20], name[15], address[30];

int age, phone, salary;

};

main ()

{

struct person str_pr[n], buf;

int i, j;

clrscr();

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

{printf("%i person\n",i+1);

printf("Fam: ");

scanf("%s", str_pr[i].fam);

printf("Name: ");

scanf("%s", str_pr[i].name);

printf("Address: ");

scanf("%s", str_pr[i].address);

printf("Age: ");

scanf("%i", &str_pr[i].age);

printf("Phone: ");

scanf("%i", &str_pr[i].phone);

printf("Salary: ");

scanf("%i", &str_pr[i].salary);

printf("\n"); }

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

if (strcmp(str_pr[i].name,"alex")==0&&

str_pr[i].age>=25&&str_pr[i].age<=30)

{

printf("Fam: %s\n", str_pr[i].fam);

printf("Address: %s\n", str_pr[i].address);

printf("Phone: %i\n", str_pr[i].phone);

printf("Salary: %i\n", str_pr[i].salary);

}

getch();

return 0;

}

printf("Input svedeniya\n");

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

{printf("%i person\n",i+1);

printf("Fam: ");

scanf("%s", str_pr[i].fam);

printf("Name: ");

scanf("%s", str_pr[i].name);

printf("Address: ");

scanf("%s", str_pr[i].address);

printf("Age: ");

scanf("%i", &str_pr[i].age);

printf("Phone: ");

scanf("%i", &str_pr[i].phone);

printf("Salary: ");

scanf("%i", &str_pr[i].salary);

printf("\n"); }

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

for (j=i+1;j<n;j++)

if (str_pr[i].age<str_pr[j].age) {

buf=str_pr[i]; str_pr[i]=str_pr[j];

str_pr[j]=buf; }

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

{ printf("Fam: %s\n", str_pr[i].fam);

printf("Name: %s\n", str_pr[i].name);

printf("Address: %s\n", str_pr[i].address);

printf("Age: %i\n", str_pr[i].age);

printf("Phone: %i\n", str_pr[i].phone);

printf("Salary: %i\n", str_pr[i].salary); }

getch();

return 0; }

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

1осн[393-397],2осн[406-436],3осн[108-128], 6доп[200-209], 8доп[13-16]