- •1 Введение в теорию алгоритмизации 6
- •Введение
- •1 Введение в теорию алгоритмизации
- •1.1 Понятие алгоритма
- •1.2 Свойства алгоритмов
- •1.3 Формы представления алгоритма
- •1.4 Основные алгоритмические структуры
- •1.5 Алгоритмический язык
- •2.3 Инструменты программирования Microsoft Visual Studio
- •2.5 Консольные и оконные приложения
- •2.6 Компилирование программы
- •3.2 Простые типы данных
- •3.3 Операции над числовыми данными
- •3.4 Объявление переменных
- •3.7 Директива #define
- •3.9 Библиотека математических функций
- •4 Условный оператор
- •4.1 Условный оператор if
- •4.2 Составной оператор
- •4.3 Вложенный оператор
- •4.4 Оператор выбора switch
- •5 Операторы циклов
- •5.1 Определение цикла
- •5.2 Оператор цикла for
- •5.3 Оператор цикла while
- •5.4 Оператор цикла do while
- •5.5 Табулирование функций
- •5.6 Вычисление конечных сумм и произведений
- •5.7 Управляющие конструкции break, continue, return, goto
- •6 Массивы
- •6.1 Понятие и описание массивов
- •6.2 Одномерные массивы
- •6.3 Двумерные массивы (матрицы)
- •7 Символьные массивы
- •7.1 Описание символьного массива
- •7.2 Стандартные библиотечные функции над строками
- •8 Указатели и операции над указателями
- •8.1 Описание указателей
- •8.2 Операции над указателями
- •8.3 Сравнение указателей
- •8.4 Связь между массивом и указателем
- •9 Функции
- •9.1 Модульное программирование
- •9.2 Объявление функции
- •9.3 Формальные и фактические параметры функции
- •9.4 Локальные и глобальные переменные
- •10 Элементы объектно-ориентированного программирования
- •10.1 Инструментальное программное обеспечение
- •10.2 Технологии программирования
- •10.3 Создание класса
- •11 Полиморфизм
- •12 Этапы разработки программного обеспечения
- •12.1 Идея и цель объектно-ориентированного программирования
- •12.2 Основные понятия объектно-ориентированного программирования
- •12.3 Методы тестирования программных продуктов
- •Список литературы
6.3 Двумерные массивы (матрицы)
Для ввода (вывода) элементов двумерного массива используются вложенные циклы:
int n=3, a[3][3],i,j;
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
{
printf("введите элемент %d %d матрицы a ",i,j);
scanf("%d",&a[i][j]);
}
Пример 6.6 Суммирование матриц
Чтобы сложить (вычесть) две матрицы, необходимо сложить (вычесть) соответствующие элементы этих матриц:
si,j = ai,j + bi,j ; i=1,2,...,n; j=1,2,...,m,
где n, m – размеры матриц.
#include "stdafx.h"
#include<stdio.h>
#include<conio.h>
using namespace System;
int main(array<System::String ^> ^args)
{
int n=3, a[3][3], b[3][3],s[3][3],i,j;
// ввод элементов матрицы а
printf("Введите элементы матрицы a: \n");
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
{
printf("элемент %d %d = ",i,j);
scanf("%d",&a[i][j]);
}
// ввод элементов матрицы b
printf("Введите элементы матрицы b: \n");
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
{
printf("элемент %d %d = ",i,j);
scanf("%d",&b[i][j]);
}
// поэлементное суммирование матриц а и b
for(i=1;i<=n;i++)
for(j=1;j<=n;j++) s[i][j]=a[i][j]+b[i][j];
//вывод результирующей матрицы s
printf("сумма матриц:\n");
for(i=1;i<=n;i++)
{
for(j=1;j<=n;j++) printf("%d ",s[i][j]);
printf("\n");
}
getch();
return 0;
}
Задание 6.6
Выполните программу примера 6.6. На основе примера 6.6 напишите программу умножения матрицы на скаляр k*А. Чтобы умножить матрицу на скаляр, необходимо каждый элемент этой матрицы умножить на скаляр:
bi,j =k*ai,j; i=1,2,...,n; j=1,2,...,m,
где n, m – размеры матриц.
Вопросы для самоконтроля:
Что такое массив?
Для чего необходимо описание массива?
Как объявить одномерный массив? Двумерный массив?
Может ли массив содержать разнородные данные?
7 Символьные массивы
Цель работы: изучить определение, назначение, виды и описание символьных массивов, приобрести навыки в решении задач с помощью массивов символов.
7.1 Описание символьного массива
Массив символов представляет собой строку. Это означает, что символы в строке можно представить себе расположенными в соседних ячейках памяти – по одному символу в ячейке. Для отметки конца строки используется нуль-символ. Нуль-символ не цифра; он не выводится на печать и в таблице ASCII имеет номер 0. Наличие нуль-символа означает, что количество ячеек массива должно быть по крайней мере на одну больше, чем число символов, которые необходимо размещать в памяти.
Это важно: для работы с символьными массивами необходимо подключить библиотеку <string.h>.
Описание символьного массива из 10 ячеек памяти, в каждую из которых можно поместить один элемент типа char:
char str[10];
При определении массива необходимо сообщить компилятору требуемый размер памяти. Один из способов сделать это – инициализировать массив при помощи строковой константы. Так как автоматические массивы инициализировать нельзя, необходимо для этого использовать статические или внешние массивы.
Пример 7.1 Описание символьного массива
#include "stdafx.h"
#include <stdio.h>
#include <conio.h>
#include <string.h>
using namespace System;
int main(array<System::String ^> ^args)
{
char name[50];
printf("Введите имя\n");
scanf("%s",name);
printf("Красивое имя, %s!\n",name);
getch();
return 0;
}
В примере 7.1 задан массив из 50 ячеек памяти, в каждую из которых можно поместить один элемент типа char. Это нами осуществлено с помощью оператора описания:
char name[50];
Можно воспользоваться более сложным оператором описания:
static char name[50];
Для ввода строки в примере 7.1 используется функция scanf() со спецификатором формата %s.
Задание 7.1
Выполните программу примера 7.1.
