Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Книга C++.doc
Скачиваний:
24
Добавлен:
10.11.2019
Размер:
2.48 Mб
Скачать

Примеры задач

А теперь - практика!!! Как всегда, будьте особо внимательны при анализе примеров! Обращайте внимание на комментарии, приведенные в программах!

Пример 1

Рассмотрим следующую задачу: "Дано n чисел, вывести на экран m наибольших чисел". Для решения этой задачи, объявим массив состоящий из n элементов. Организуем ввод даных в массив, сортировку массива (используя уже известную нам пузырьковую сортировку) и вывод результатов, т.е. m наибольших чисел. Сортировку массива организуем в виде функции. Ниже приведен код программы для решения нашей задачи.

#include <iostream.h>

void Sort(double a[], int n) // функция сортировки массива

{

double temp;

bool flag = true;

for(int j = 1; ; j++) // сортировка методом "пузырька"

{

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

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

{

temp = a[i];

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

a[i+1] = temp;

flag = false;

}

if(flag)

break;

flag = true;

}

}

void main()

{

const n = 10;

double array[n]; // размерность массива

int i;

for(i = 0; i < n; i++) // ввод значений массива

{

cout << "array[" << i << "]:\t";

cin >> array[i];

}

Sort(array, n); // вызов функции сортировки

int m;

cout << "Input the count of numbers:\t";

cin >> m; // ввод числа m

for(i = n - m; i < n; i++) // вывод m наибольших чисел

cout << "array[" << i << "]:\t" << array[i] << endl;

}

Пример 2

Вы уже знаете, как запросить у пользователя данные для заполнения массива. Но, иногда, встречаются такие задачи, где элементы массива должны быть представленны случайными числами. Пример, приведенный ниже, использует генератор псевдослучайных чисел для заполнения массива.

/*

Заполнение массива произвольными целыми значениями

в диапазоне от 1 до 100

*/

#include <iostream.h>

#include <stdlib.h> //эти библиотеки необходимы

#include <time.h> //для использования генератора псевдослучайных чисел

void main()

{

const n = 10; // размерность массива

int a[n], i;

srand(time(0)); // инициализация генератора

// псевдослучайных чисел

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

a[i] = rand() % 100 + 1;

/*получили псевдослучайное число в диапазоне от 1 до 100 */

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

cout << a[i] << "\t";

cout << "\n";

}

Пример 3

Давайте разберем еще один пример на использование указателей. Напишем программу, которая печатает элементы массива в обратном порядке, используя указатель на элементы массива. Все необходимые знания для решения этой задачи у нас уже есть, теперь осталось проверить их на практике.

#include <iostream.h>

void main()

{

const n = 10; // размерность массива будем задавать через константу

int a[n], i;

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

{

cout << "Input a[" << i<< "]:\t";

cin >> a[i]; // ввод элементов массива

}

// p указывает на последний

int *p = &a[n-1]; // элемент массива

while(p >= a) // пока не достигнут адрес

{ // первого элемента

cout << *p << "\t"; // выводим элемент массива;

p--; // p указывает на предыдущий

} // элемент массива

cout << "\n";

}