- •Введение
- •1. Основы алгоритмизации
- •1.1. Алгоритм и программа
- •1.2. Свойства алгоритма
- •1.3. Компиляторы и интерпретаторы
- •1.4. Языки программирования
- •2. Основные понятия языка си
- •2.1. Структура программы на Си
- •2.2. Типы данных
- •2.3. Переменные
- •2.4. Константы
- •Символьная константа
- •Целые и вещественные константы
- •Операция условие ?:
- •Преобразование типов
- •2.6. Ввод и вывод данных
- •3. Основные операторы языка си
- •3.1. Базовые конструкции структурного программирования
- •3.2. Составные операторы
- •3.3. Операторы выбора
- •If (выражение-условие) оператор; //сокращенная форма
- •If ( выражение-условие) оператор1; //полная форма
- •3.4. Операторы циклов
- •3.5. Операторы перехода
- •Лабораторная работа 1. Условный оператор if и операторы цикла
- •4. Массивы, строки и указатели
- •4.1. Одномерные массивы
- •Int a[100]; // массив из 100 элементов целого типа
- •4.2. Символьная информация и строки
- •4.3. Указатели
- •Int I; //целая переменная
- •Int *pi; //указатель на целую переменную
- •4.4. Динамическое выделение памяти
- •4.5. Одномерные массивы и указатели на массивы
- •4.6. Многомерные массивы
- •Лабораторная работа 2. Одномерные массивы
- •Лабораторная работа 3. Двумерные массивы
- •Лабораторная работа 4.Строки
- •Лабораторная работа 5.Указатели
- •5. Функции в си
- •5.1. Объявление и определение функций
- •5.2. Прототип функции
- •5.3. Параметры функции
- •Void Change(int a, int b) //передача по значению
- •Void Change(int *a, int *b) //передача по адресу
- •5.4. Рекурсия
- •Лабораторная работа 6. Использование функций для вычисления сумм и произведений
- •Лабораторная работа 7. Решение уравнений с использованием рекурсии
- •6. Работа с файлами
- •6.1. Доступ к файлам
- •6.2. Ввод и вывод строк
- •6.3. Обработка ошибок – stderr и exit
- •Лабораторная работа 8.Файлы
- •7. Основы автоматного программирования
- •Оглавление
Лабораторная работа 3. Двумерные массивы
Вариант 1
Заполнить матрицу произведениями соответствующих порядковых номеров ее элементов.
Найти разность между суммами элементов, лежащих на главной и побочной диагоналях матрицы М (3x3).
Вариант 2
Из матрицы Q (4x3) сформировать одномерный массив отрицательных чисел (просмотр по строкам).
Дана матрица А (4x4). Расставить строки таким образом, чтобы элементы в первом столбце были упорядочены по убыванию.
Вариант 3
Дан целочисленный массив В (3x5). Определить, сколько в нем пар соседних одинаковых элементов. Элементы считаются соседними, если их индексы в столбцах и/или в строках различаются не более, чем на единицу.
Определить среднее арифметическое значение элементов матрицы А (3x3), лежащих на главной диагонали.
Вариант 4
Дана вещественная матрица М (5x4). Преобразовать матрицу: поэлементно вычесть последнюю строку из всех строк, кроме последней.
Дана целочисленная матрица В (5x3). Найти номера столбцов, элементы каждого из которых образуют возрастающую последовательность
Вариант 5
Дана вещественная матрица А (4x3). Преобразовать матрицу: поэлементно вычесть последнюю строку из всех столбцов, кроме последнего.
В данной целочисленной квадратной матрице размера n х n (n – некоторая константа) указать индексы всех элементов, имеющих наибольшее значение.
Вариант 6
Транспонированием квадратной матрицы называется такое ее преобразование, при котором строки и столбцы меняются ролями. Дана квадратная матрица размера n х n. Получить транспонированную матрицу.
Вычислить сумму элементов матрицы М (5x5), лежащих справа от побочной диагонали.
Вариант 7
Определить, является ли данная квадратная матрица симметричной относительно своей главной диагонали.
Последний отрицательный элемент каждого столбца матрицы заменить нулем.
Вариант 8
Найти количество элементов в каждой строке матрицы А (4х5), больших среднего арифметического элементов данной строки.
В каждом столбце матрицы В (5х4) сменить знак максимального по модулю элемента на противоположный.
Пример
Вычислить сумму элементов матрицы М (3x3), лежащих справа от главной диагонали.
# include <iostream.h>
# include <conio.h>
void main(void)
{ float a[3][3];
int i,j;
float s=0;
clrscr();
for (i=0; i<=2; i++)
for (j=0; j<=2; j++)
{cout<<"a["<<i<<"]["<<j<<"]=";
cin>>a[i][j];
if (j>i) s+=a[i][j];}
cout<<s;
getche();
}
Подсчитать число элементов матрицы Q (3x4), кратных трем.
# include <iostream.h>
# include <conio.h>
void main(void)
{ int a[3][4];
int i,j;
int s=0;
clrscr();
for (i=0; i<=2; i++)
for (j=0; j<=3; j++)
{cout<<"a["<<i<<"]["<<j<<"]=";
cin>>a[i][j];
if ((a[i][j]%3)==0) s++;}
cout<<s;
getche(); }
Лабораторная работа 4.Строки
Задан массив строк, содержащих фамилию, имя и отчество через пробел. Создать три массива, содержащих отдельно фамилию, имя и отчество.
Задана строка. Определить, каких букв больше, гласных или согласных.
Заданы массив строк, содержащих фамилии студентов, и массив полученных ими оценок. Определить, какие студенты имеют оценку больше среднего балла, и сколько их.
Заданы массив строк, содержащих фамилии студентов, и массив полученных ими оценок. Отсортировать студентов от самого успевающего к самому неуспевающему.
Определить, является ли слово палиндромом (читается ли оно слева направо и справа налево одинаково. Например, слово "шалаш" – палиндром).
Задан массив строк. Записать каждую строку наоборот.
Задан массив строк. Проверить, все ли строки начинаются с согласных букв.
Задан массив строк. Проверить, все ли строки заканчиваются гласными буквами.
Пример
Задана строка, состоящая из символов латинского алфавита. Определить частоту вхождения разных букв.
# include <iostream.h>
# include <conio.h>
# include <string.h>
# include <stdio.h>
void main(void)
{ char str[80], lat[]="qwertyuiopasdfghjklzxcvbnm";
int i, j, s[26];
for (i=0; i<=25; i++)
s[i]=0;
clrscr();
cout<<"Введите строку\n";
gets(str);
for (i=0; i<=25; i++)
for (j=0; j<=strlen(str)-1; j++)
if (lat[i]==str[j]) s[i]++;
for (i=0; i<=25; i++)
cout<<lat[i]<<": "<<float (s[i])/strlen(str)<<"\n";
getche(); }