Главная | Обратная связь | Поможем написать вашу работу!
МегаЛекции

Задания для самостоятельной работы




1. Задан двумерный массив, содержащий 3 строки и 4 столбца. Найти наибольший элемент массива, номер строки и столбца, в которых он расположен.

2. Определить количество положительных элементов каждого столбца двумерного массива, содержащего 5 строк и 5 столбцов.

3. Составить программу для вычисления средних арифметических значений положительных элементов каждого столбца двумерного массива, содержащего 6 столбцов и три строки. При условии, что в каждом столбце есть хотя бы один положительный элемент.

4. Дана действительная квадратная матрица. Заменить нулями все элементы, расположенные на главной диагонали и выше нее.

5. Даны 8 действительных чисел х1, х2, …, х8. Получить квадратную матрицу 8х8

х1 х2 … х8

х12 х22 … х82

…..

х18 х28 … х88

6. Таблица футбольного чемпионата задана квадратной матрицей порядка n, в которой все элементы, принадлежащие главной диагонали, равны нулю, а каждый элемент, не принадлежащий главной диагонали, равен 2, 1 или 0 (числу очков, набранных в игре: 2 – выигрыш, 1- ничья, 0 – проигрыш).

а) Найти число команд, имеющих больше побед, чем поражений.

б) Определить номера команд, прошедших чемпионат без поражений.

в) Выяснить, имеется ли хотя бы одна команда, выигравшая больше половины игр.

(При заполнении таблицы желательно использовать генерацию случайных чисел).

7. Дан двумерный массив, содержащий 3 строки и 4 столбца. Упорядочить массив по убыванию элементов 3-ей строки.

8. Дан двумерный массив, содержащий 5 строк и 2 столбца. Упорядочить массив по возрастанию элементов 2-го столбца.

9. Даны целые числа . Получить целочисленную матрицу b каждый элемент, которой определяется по следующей формуле , i,j=0,1,2.

10. Дана квадратная матрица А, содержащая 5 строк и 5 столбцов. Получить две квадратные матрицы В и С, элементы которых определяются по следующим формулам

11. Найти наибольший элемент главной диагонали матрицы С размером 4х4 и вывести на печать всю строку, в которой он находится.

12. Перемножить матрицы А размером nхm и В размером mхl. Элементы результирующей матрицы получить с помощью следующей формулы

13. Вычислить суммы элементов каждой строки матрицы А размером 6х6, определить наибольшее значение этих сумм.

14. Дана действительная матрица размера 6х9. Найти среднее арифметическое наибольшего и наименьшего значений ее элементов.

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

16. В данной действительной квадратной матрице порядка N найти сумму элементов строки, в которой расположен элемент с наименьшим значением. Предполагается, что такой элемент единственный.

17. Получить целочисленную квадратную матрицу порядка n, элементами которой являются числа 1, 2, 3, …, n2 , расположенные по спирали

1 2 3 4 5

 

 

Массивы символов

Форма записи: char Array[10];

Статический массив – массив, в котором конкретное число элементов.

Для каждого массива символов существует символ конца строки – ‘\0’, поэтому память под массив символов нужно выделять на один элемент больше.

Инициализация массива символов:

char Array[]={‘f’,‘i’,‘r’,‘s’,‘t’,‘ ’,‘c’,‘o’,‘u’,‘r’,‘s’,‘e’,’\0’};

 

Обязательный элемент для символьного массива

 

char Array[]=”first course”; //Это упрощённая запись доступная в С++

В этом случае компьютер автоматически вычислит размер конец строки.

Один символ занимает один бит памяти.

Если такую строку вводить при помощи оператора “cin”, то будет введено только первое слово “first”, так как оператор “cin”, воспринимает пробел как окончание строки, после чего прекращается ввод данных.

 

Функция get()

Для ввода строки, обычно используется функция “get()”, в которой необходимо указать 2 аргумента.

cin.get(<аргумент1>,< аргумент2>);

аргумент1 – имя строковой переменной для записи входных данных.

аргумент2 – целое число, указывающее размер строковой переменной.

 

{

char Array[80];

cout<<”Enter the string:\n”;

cin.get(Array,80);

cout<<Array<<endl;

return 0;

}

 

//Array[0] – 1-ый символ. Array[78] - 79-ый символ. Array[79] – ноль-символ (0)

 

Функция getline()

 

cin.getline(<аргумент1>,< аргумент2>);

аргумент1 – имя строковой переменной для записи входных данных.

аргумент2 – целое число указывающее размер строковой переменной, т.е. количество элементов строки, один из которых отводится под символ конца строки.

Считывание строки завершается, как только количество считанных символов строки станет равным аргумент2, даже если считывание не достигло конца строки.

В отличие от функции “get()”, функция “getline()” считывает и удаляет из строки символ разрыва строки “\n”, функция “get()” воспринимает этот символ как разделитель, и оставляет его в строке

 

Массивы строк (в виде 2-мерного массива)

 

 

char name[5][20]; // 5 строк по 20 символов

cout<<”Введите 5 имён, по одному в строке:\n”;

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

cin.getline(name[i],20);

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

cout<<name[i]<<endl;

 

Функции обработки символов из библиотеки <ctype.h>

Функция Назначение
isdigit(символ) Возвращает значение “истина”, если символ является цифрой и значение “ложь” в противном случае. isdigit(<имя символьной переменной>); isdigit(‘<символ>’);
isspace(символ) Возвращает значение “истина”, если символ является пробелом или символом новой строки и значение “ложь” в противном случае. isspace(<имя символьной переменной>); isspace (‘символ >’);
isupper(символ) Возвращает значение “истина”, если символ записан в верхнем регистре и значение “ложь” в противном случае. isupper(<имя символьной переменной>); isupper(‘символ >’);
islower(символ) Возвращает значение “истина”, если символ записан в нижнем регистре и значение “ложь” в противном случае. islower(<имя символьной переменной>); islower (‘символ >’);
isalpha(символ) Возвращает значение “истина”, если символ является буквой и значение “ложь” в противном случае. isalpha(<имя символьной переменной>); isalpha(‘символ >’);
toupper(символ) Возвращает символ в верхнем регистре. char symbol; symbol=toupper(‘<символ в нижнем регистре>’); symbol=toupper(<имя символьной переменной в нижнем регистре>);
tolower(символ) Возвращает символ в нижнем регистре. char symbol; symbol=tolower(‘<символ в верхнем регистре>’); symbol=tolower(<имя символьной переменной в верхнем регистре>);

 

Пример:

 

Прочитать предложение до точки и вывести его на экран. Заменить все пробелы символом *.

#include <iostream.h>

#include <ctype.h>

main() {

char symbol;

do {

cin.get(symbol); // Функция “get()” Работает как с 1 так и с 2-я параметрами

if (isspace(symbol))

cout<<”*”;

else cout<<symbol;

}

while (symbol!=’.’);

return 0;}

Примечание: при считывании 1-го символа, функция “get()” работает с одним параметром.

Функции преобразования строк из библиотеки <string.h>

Функция Описание
strlen(<строка>) Возвращает целое число равное длине строки (символ конца строки не учитывается).
strcat(<строка1>,<строка2>) Добавляет значение “строка2” в конец “строка1”.
strcpy(<строка1>,<строка2>) Копирует символы из “строка2” в конец “строка1” и при этом не проверяет, достаточно ли место в “строка1” для копирования символов.
strncpy(<строка1>,<строка2>,<кол-во символов>) Копирует не более “n” символов из <строка2> в <строка1>.
strcmp(<строка1>,<строка2>) Сравнивает <строка1> с <строка2>, если они равны, возвращает значение “ложь”.

 

Функции преобразования строки в число из библиотеки <stdlib.h>

Функция Описание
atoi(<строка>) Функция преобразования строки в число типа “int”.
atol(<строка>) Функция преобразования строки в число типа “long”.
atof(<строка>) Функция преобразования строки в число типа “double”.

Функция “getch()” из библиотеки <conio.h>

Функция “getch()” ожидает нажатия клавиши “Enter”.

Пример:

#include <iostream.h>

#include <conio.h>

main() {

getch();

return 0;

}

 

Генерация случайных чисел

Для генерации случайных чисел используется функция “rand()”, которая находится в библиотеке <stdlib.h>. Эта функция генерирует случайные числа от 0 до RAND_MAX. Константа RAND_MAX находится в библиотеке <stdlib.h> и равна 32767. В реальных задачах, такой диапазон значений практически не используется и для того, чтобы получить другой диапазон значений используется операция масштабирования.

 

Формула масштабирования имеет следующий вид: n=a+rand()%b;

a – величина сдвига, которая равна первому числу в требуемом диапазоне целых чисел.

b – масштабируемый коэффициент, который равен ширине требуемого диапазона целых чисел.

 

Например, если требуется сгенерировать целые числа в диапазоне от 0 до 5, то форма записи будет выглядеть следующим образом: n=rand()%6;

n=1+rand()%6 - будет генерировать числа в диапазоне от 1 до 6.

Пример:

#include <iostream.h>

#include <stdlib.h>

main() {

int Array[10];

for (int i=0;i<10;i++) {

Array[i]=rand()%6; // Заполняет массив числами от 0 до 5

cout<<Array[i]<<endl;

}

return 0;

}

Если запустить эту программу несколько раз, то при каждом запуске, мы будем получать одни и те же значения элементов массива.

Функция “rand()” генерирует псевдослучайные числа. Эта характеристика функции является очень важной при отладке программы, т.е. позволяет доказать, что программа работает должным образом (Так как программа должна возвращать одни и те же значения, при одинаковых входных данных).

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

Генерация случайных чисел называется рандомизацией.

Рандомизация осуществляется при помощи функции “srand()”, которая так же находится в библиотеке <stdlib.h>.

Функция “srand()” получает аргумент типа “unsigned int”, и при каждом запуске “srand()” задаёт начальное число, которое используется функцией “rand()” для генерации случайных чисел.

Пример:

#include <iostream.h>

#include <stdlib.h>

main() {

unsigned int k;

cin>>k;

srand(k);

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

cout<<rand()%6<<endl;

return 0;

}

Для того, чтобы генерировать случайные числа, не вводя каждый раз новое число, используемое как начальное число, можно в качестве аргумента функции “srand()” использовать системное время компьютера.

srand(time(NULL));

Функция “time()” из библиотеки <time.h>, возвращает текущее время в секундах. Это время преобразуется в без знаковое целое число, которое используется как начальное значение в генерации случайных чисел.

#include <iostream.h>

#include <time.h>

#include <stdlib.h>

{

srand(time(NULL));

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

cout<<rand()%6;

return 0;

}

 

 

Приложение 1.

Существует несколько способов записи алгоритмов. Наиболее популярен графический способ записи – “блок-схема”.

Блок-схема – последовательность блоков предписывающих выполнение определённых действий и связи между ними.

 

Основные блоки “блок-схемы”
Наименование Обозначение Функции
Пуск, остановка Начало, конец, остановка программы, вход и выход из функции (подпрограммы)
Процесс Выполнение одной или группы операций
Решение Проверка условия, выбор направления выполнения алгоритма
Модификация     Цикл
Ввод/вывод Ввод данных и вывод результата
Предопределённый процесс Вызов функции (подпрограммы)
Соединитель Разрыв линий схемы алгоритма
Комментарий   - - - [ Пояснение в схеме алгоритма, формулы

 

Литература

1. Харви Дейтел, Пол Дейтел. Как программировать на С++. Пер. с англ. - Москва: ЗАО "Издательство БИНОМ", 1998. 1024с.

2. Марченко А.Л. C++. Бархатный путь

3. М. Эллис, Б. Страуструп. Справочное руководство по языку C++ с комментариями: Пер. с англ. - Москва: Мир, 1992. 445с.

4. Э.А.Ишкова. С++. Начала программирования – М.: ЗАО «Издательство БИНОМ»,2000. 304 с.

5. Стенли Б. Липпман. C++ для начинающих: Пер. с англ. 2тт. - Москва: Унитех; Рязань: Гэлион, 1992, 304-345сс.

6. Бруно Бабэ. Просто и ясно о Borland C++: Пер. с англ. - Москва: БИНОМ, 1994. 400с.

7. В.В. Подбельский. Язык C++: Учебное пособие. - Москва: Финансы и статистика, 1995. 560с.

8. Т. Сван. Освоение Borland C++ 4.5: Пер. с англ. - Киев: Диалектика, 1996. 544с.

9. Г. Шилдт. Самоучитель C++: Пер. с англ. - Санкт-Петербург: BHV-Санкт-Петербург, 1998. 620с.

10. У. Сэвитч. C++ в примерах: Пер. с англ. - Москва: ЭКОМ, 1997. 736с.

 

Поделиться:





Воспользуйтесь поиском по сайту:



©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...