Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
MV_Prog_1kurs_1chast2012.doc
Скачиваний:
12
Добавлен:
13.04.2015
Размер:
667.65 Кб
Скачать

2.7 Контрольний приклад

Описать структуру с именем STUDENT, содержащую следующие поля:

- фамилия и инициалы;

- средний бал успеваемости;

Написать программу, выполняющую следующие действия:

- ввод с клавиатуры;

- вывод полного списка на экран;

- поиск студента с наихудшей успеваемостью.

Пример решения:

Текст файла main.cpp

#include"student.h"

using namespace grup;

int main()

{

int n;

cout<<"Vvedite kolichestvo studentov=";

char kolTMP[10]; //

cin.getline(kolTMP,10); //Делаем защиту от

n=atoi(kolTMP); //ошибочного ввода

if(!n) return 1;

Stud *PMM=new Stud[n];

input(PMM,n);

output(PMM,n);

Stud *StudMin=serchMin(PMM,n);

cout<<"Student s minim balom:"<<endl;

cout<<StudMin->FIO<<'\t'<<StudMin->bal<<endl;

cin.get();

delete []PMM;

return 0;

}

Текст файла student.h

#include<iostream>

using namespace std;

namespace grup

{

struct Stud

{

char FIO[80];

float bal;

};

void input(Stud *IB,int n);

//Функция для ввода с клавиатуры

void output(Stud *IB,int n);

//Функция для вывода на экран

Stud *serchMin(Stud *IB,int n);

//Функция для нахождения студента с минимальным бaлом

}// конец namespace grup

void grup::input(Stud *IB,int n)

//Функция для ввода с клавиатуры

{

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

{

cout<<"Vvedite imja Studenta "<<endl;

cin.getline(IB[i].FIO,80);

char strTMP[10];

cout<<"Vvedite bal Studenta "<<endl;

cin.getline(strTMP,80);

IB[i].bal=atoi(strTMP);

}

};

void grup::output(Stud *IB,int n)

//Функция для вывода на экран

{

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

{

cout<<IB[i].FIO<<'\t'<<IB[i].bal<<endl;

}

};

grup::Stud *grup::serchMin(Stud *IB,int n)

//Функция для нахождения студента с минимальным бaлом

{

Stud *Min;

Min=&IB[0];

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

if(Min->bal>IB[i].bal)

Min=&IB[i];

return Min;

};

7 Пошук і сортування

7.1 Мета роботи

Отримати практичні навички програмування на С++ задач, де використовується пошук і сортування інформації.

7.2 Методичні вказівки до організації самостійної роботи студентів

Одна з дій, що найбільш часто зустрічається в програмуванні — пошук. Існує кілька основних способів пошуку і для них створено багато різних алгоритмів. При виконанні роботи варто виходити з допущення, що група даних, у якій необхідно відшукати заданий елемент, фіксована.

Сортування — це задача розташування довільних об'єктів у порядку (не-) зменшення чи (не-)зростання деякої ознаки. Існує велика кількість методів сортування, що відрізняються друг від друга як тимчасовою складністю, так і універсальністю.

7.2.1 Лінійний пошук

Якщо немає ніякої додаткової інформації про розшукувані дані, то очевидний підхід — простий послідовний перегляд масиву зі збільшенням крок за кроком тієї його частини, де бажаного елемента не виявлено.Умови закінчення пошуку: елемент знайдено чи весь масив переглянуто і збігу не виявлено.

7.2.2 Пошук розподілом навпіл (двійковий пошук)

Пошук може бути більш ефективним, якщо дані будуть упорядковані. Основна ідея – вибрати випадково деякий елемент аm і порівняти його з аргументом пошуку х. Якщо він дорівнює х, то пошук закінчується, якщо він менше х, то всі елементи з індексами, меншими чи рівними m, можна виключити з подальшого пошуку; якщо ж він більше х, то виключаються індекси, більші чи рівні m.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]