Сумма элементов главной диагонали матрицы — КиберПедия 

Автоматическое растормаживание колес: Тормозные устройства колес предназначены для уменьше­ния длины пробега и улучшения маневрирования ВС при...

Индивидуальные очистные сооружения: К классу индивидуальных очистных сооружений относят сооружения, пропускная способность которых...

Сумма элементов главной диагонали матрицы

2017-06-13 1005
Сумма элементов главной диагонали матрицы 0.00 из 5.00 0 оценок
Заказать работу

 


#include <iostream>

using namespace std;

int main() {

int A[3][3],Sum=0,i,j;

 

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

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

cin>>A[i][j];

 

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

Sum+=A[i][i];

 

cout<<”Sum=”<<Sum<<endl;

}

return 0;

}

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

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;

}

Часть 2.

Лабораторная работа 1

Функции

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

Функции являются основой модульного программи­рования (составления программ из модулей). Существует несколько причин для построения программ с использованием функций.

Во-первых, подход «разделяй и властвуй» делает разработку программ более управляемой. Вторая причина — повторное использование программных кодов,т.е. использование существующих функций как стандартных блоков для создания новых программ. Повторное использование — основной фак­тор развития объектно-ориентированного программирования. При проду­манном присвоении имен функций и корректном их описании программа может быть создана быстрее из стандартизированных функций, соответ­ствующих определенным задачам. Третья причина — желание избежать в программе повторения каких-то фрагментов. Код, оформленный в виде функции, может быть выполнен в разных местах программы простым вы­зовом этой функции.

Все программы, которые мы ранее рассматривали, содержали главную функцию, называемую main(), а также некоторые стандартные библиотечные функции, такие как математические функции из библиотеки math.h, функции ввода-вывода и др. Теперь мы научимся писать свои собственные функции.

Для использования функции ее надо объявить, определить и конечно вызвать.

Объявление функции называется прототипом. Прототип содержит имя функции, тип функции, параметры, принимаемые функцией и их тип. Имя функции — это любой правильно написанный идентификатор.

Синтаксис прототипа:

Тип_функции имя_функции ([тип параметр1, тип параметр2,…]);

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

Существуют 3 способа объявления функции:

- прототип функции записывается в другой файл и затем подключается в текущий файл с помощью директивы #include;

- прототип записывается в этом же файле до имени главной программы main();

- прототип функции совпадает с ее определением. (Этот способ использовать не рекомендуется, так как если прототип функции записан отдельно от определения функции, у компилятора имеется дополнительная возможность на этапе компиляции проверить правильность обращения к функции, т.е. проверить тип передаваемых ей параметров).

Мы будем использовать второй способ объявления функции.

Определение функции состоит из заголовка функции и ее тела. Заголовок функции подобен прототипу и состоит из типа возвращаемого значения функции, имени функции и параметров функции:

Тип_функции имя_функции ([тип параметр1,,…]) //заголовок функции

{ тело функции

return возвращаемое значение; }

Тело функции состоит из операторов языка С++. В качестве возвращаемого значения после оператора return могут быть использованы имена переменных (например, return х;), константные значения (например, return 1;), арифметические выражения (например, return 5*х*х+7;), логические выражения, функция будет возвращать либо значение «true», либо «false». Тип этого значения должен совпадать с типом функции, указанным в прототипе. Также функция может содержать несколько операторов return либо может не иметь ни одного оператора return, в этом случае функция имеет тип возвращаемого значения void. Функции могут принимать или не принимать параметры, могут возвращать значение или не возвращать значение.

При вызове функции в программе указывается только ее имя и в скобках через запятую параметры, передаваемые в эту функцию (без указания типов).

Параметры, используемые в прототипе или заголовке определения функции, называются формальными. Параметры, передаваемые функции при ее вызове, называются фактическими.

Функции, имеющие тип void, называются не возвращающими значения и их вызов отличается от вызова обычных функций:

Имя (параметр1, параметр2,….); //синтаксис функции, не возвращающей значение

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

Рассмотрим несколько примеров создания функций.

Пример 1: Написать функцию square для вычисления квадратов целых чисел от 1 до 10.

#include<iostream>

using namespace std;

int square (int x); // прототип функции

int main()

{ for (int x = 1; x <= 10;x ++)

cout << square (x) << “ ”; // вызов функции

cout << endl;

return 0;

}

// определение функции

int square (int y)

{ return y * y; }

Функция square активизируется или вызывается в main вызовом square(х). Функция создает копию значения х в параметреу. Затем square вычисляет у * у. Результат передается в ту точку main, из которой была вызвана square, и затем этот результат выводится на экран. Благодаря структуре повторения for этот процесс повторяется десять раз. Описание square показывает, что эта функция ожидает передачи в нее целого параметра у. Ключевое слово int, предшествующее имени функции, указывает, что square возвращает целый результат. Оператор return в square передает результат вычислений обратно в вызывающую функцию.

 

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

#include <iostream>

using namespace std;

double sum (double a, double b); // прототип функции

double min (double a, double b); // прототип функции

void output (double c, double d); // прототип функции

int main() {

double x, y, m, s;

cout << ”Enter 2 numbers \ n “;

cin >> x >> y;

s = sum (x, y); // вызов функции

m = min (x, y); // вызов функции

output (s, m); // вызов функции

return 0;

}

// определение функции sum

double sum (double a, double b) {

return a + b;

}

// определение функции min

double min (double a, double b) {

if (a < b)

return a;

else

return b;

}

// определение функции output

void output (double c, double d)

{

cout << ” Sum = ” << c << endl;

cout << ” Min = ” << d << endl;

}

 

Пример 3. Написать функцию возведения целого числа в целую положительную степень.

#include<iostream>

using namespace std;

int pow_1(int a, unsigned int b);

int main() {

int x, c; unsigned int y,

cin >> x >> y;

c=pow_1(x, y);

cout << c;

return 0;

}

int pow_1(int a, unsigned int b)

{

int p = 1;

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

p = p * a;

return p;

}


Поделиться с друзьями:

Наброски и зарисовки растений, плодов, цветов: Освоить конструктивное построение структуры дерева через зарисовки отдельных деревьев, группы деревьев...

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

Археология об основании Рима: Новые раскопки проясняют и такой острый дискуссионный вопрос, как дата самого возникновения Рима...

Типы сооружений для обработки осадков: Септиками называются сооружения, в которых одновременно происходят осветление сточной жидкости...



© cyberpedia.su 2017-2024 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!

0.129 с.