- •Введение
- •1. Основы алгоритмизации и программирования
- •1.1. Этапы подготовки и решения задач на эвм
- •1.2. Алгоритмы и способы их описания Понятие алгоритма
- •Способы описания алгоритмов
- •Структурные схемы алгоритмов
- •1.3. Компиляция и интерпретация программ
- •1.4. Стили программирования
- •Процедурное программирование
- •Функциональное программирование
- •Логическое программирование
- •Объектно-ориентированное программирование
- •2.1. Пример готовой программы.
- •2.2. Структура основной программы
- •2.3. Алфавит языка
- •2.4. Константы и переменные Константы
- •Переменные
- •Примеры записи имен переменных
- •2.5. Арифметические выражения
- •Примеры вычисления арифметических выражений
- •Стандартные функции
- •Примеры программирования арифметических выражений
- •Контрольные задания
- •1. Составить описания для заданных переменных
- •2.6. Линейные вычислительные процессы
- •Оператор присваивания
- •Странные операторы присваивания
- •Функции ввода-вывода
- •Функции ввода исходных данных с клавиатуры
- •Потоковый ввод данных числового типа
- •Функция форматного ввода
- •Операторы вывода данных на экран Потоковый вывод
- •Форматный вывод
- •Контрольные задания
- •2.7. Разветвляющиеся вычислительные процессы
- •If (логическое выражение) p1; else p2;
- •Логические выражения
- •Порядок выполнения операций в логических выражениях
- •Условные операторы
- •Короткий условный оператор
- •Полный условный оператор
- •If (логическое выражение) { p1;} else {p2;}
- •Вложенные структуры условных операторов
- •Оператор выбора
- •Контрольные задания
- •2.8. Циклические вычислительные процессы
- •Операторы цикла с условием
- •Оператор цикла с параметром
- •2.9. Базовые алгоритмы
- •Задача 1. Алгоритм организации счетчика
- •Задача 2. Алгоритм накопления суммы
- •Задача 3. Алгоритм накопления произведения
- •Задача 4. Алгоритм поиска минимального члена последовательности
- •Задача 5. Табулирование функции (или кратные циклы)
- •Задача 6. Вычисление сумм элементов последовательностей
- •2.10. Указатели и массивы
- •2.10.1. Указатели
- •2.10.2. Понятие массива
- •Одномерные массивы
- •Описание одномерного массива
- •Индексированные переменные
- •Ввод-вывод одномерных массивов
- •Обработка одномерных массивов
- •Задача 1. Организация счетчика
- •Задача 2. Накопление суммы и произведения
- •Задача 3. Поиск минимального и максимального элементов массива
- •Двухмерные массивы
- •Описание двухмерного массива
- •Ввод-вывод двухмерного массива
- •Обработка матриц
- •2.11. Подпрограммы Структура сложной программы
- •Функции
- •Общий вид описания функции
- •Int I,j; //локальные переменные
- •Обращение к функции
- •Пример программы с функцией
- •Механизмы замены параметров
- •Параметры-массивы в функциях
- •Возвращение результатов
- •Примеры программирования задач с использованием подпрограмм Задача 1
- •Рекурсия
- •Технология сборки библиотеки
- •2.12. Текстовые данные
- •Символьный тип данных
- •Ввод-вывод символьных данных
- •Обработка символьных данных
- •Ввод-вывод строковых данных
- •Обработка строковых данных
- •Стандартные функции обработки строк
- •Сравнение строк:
- •Сцепление строк
- •Определение длины строки
- •Копирование строк
- •Поиск символа в стоке
- •Пример программы для задачи с текстовыми данными
- •Контрольные задания
- •2.13. Динамическое выделение памяти
- •Использование оператора new
- •Освобождение памяти
- •Структуры данных Понятие структуры
- •Обработка структур
- •Пример задачи с использованием структурированных данных
- •2.15. Файлы данных
- •2.15.1. Работа с файлами в стиле с
- •Объявление файловой переменной
- •Открытие файла
- •Закрытие файла
- •// Обработка открытого файла
- •Обработка открытого файла
- •Функции ввода/вывода
- •Работа с текстовыми файлами
- •Обработка бинарных файлов
- •Контрольные задания
- •Заключение
- •Оглавление
- •Литература
- •Приложение
Обработка одномерных массивов
При решении задач обработки массивов используют, как правило, базовые алгоритмы реализации циклических вычислительных процессов: организация счетчика, накопление сумм и произведений, поиск минимального и максимального элементов массива.
Задача 1. Организация счетчика
Дан целочисленный массив: В = {bi};i=. Определитьколичество элементов массива, которые делятся на 3 без остатка, то есть кратные 3.
Схема алгоритма:
Текст программы:
#include "stdafx.h"
int main()
{ int В[20] ; // описание массива B
int i, L; // описание переменных для индекса и счетчика
printf("Введите массив В\n");
for( i=0; i<20; i++)
scanf("%d", &В[i]); // ввод данных в массив с клавиатуры
L=0; //инициализация счетчика
for( i =0; i<20; i++)
if (В[i] % 3== 0) //проверка элемента на кратность 3
L++; //увеличение счетчика на единицу
printf("Кол-во=%d\n", L); //вывод значения счетчика на экран
return 0;
}
В программе можно было для ввода использовать функцию cin, а для вывода функцию cout:
cin>> В[i]; // ввод данных в массив с клавиатуры
cout<<"Кол-во="<<L<<"\n";//вывод значения счетчика на экран
Задача 2. Накопление суммы и произведения
Дано целое число n и массив вещественных чисел:
.
Вычислить среднее арифметическое и среднее геометрическое чисел массива, используя формулы:
; .
Схема алгоритма:
Текст программы:
#include "stdafx.h"
#include <math.h>
#include <iostream>
using namespace std;
int main()
{
float X [100]; //описание массива Х
float z;
int n;
int i;
float S=0, P=1; //начальные значения суммы и произведения
cout<<"Введите размер массива n= ";
cin>>n;
cout<<"Введите массив X\n";
for( i = 0; i<n; i++)
cin>>X[i];
for( i=0; i<n; i++)
{
S = S + X[i]; //добавление в сумму элемента массива Х
P =P*X[i]; // добавление в произведение элемента массива Х
}
S = S/n; // вычисление среднего значения Х
z=1.0/n;
P=pow(P,z); // вычисление среднего геометрического Х
cout<<"S="<<S<<"\n";
cout<<"P="<<P<<"\n";
return 0;
}
Задача 3. Поиск минимального и максимального элементов массива
Дан вещественный массив: T = {ti}; i=. Поменять местами минимальный и максимальный элементы массива и вывести массив после обмена.
Решение
В этой задаче для осуществления обмена надо знать не только значения минимального и максимального элементов массива, но и их местоположение. Поэтому во время поиска минимального и максимального элементов необходимо фиксировать значения их индексов.
Введем обозначения:
min - минимальный элемент;
imin - индекс минимального элемента;
max - максимальный элемент;
imax - индекс максимального элемента.
Схема алгоритма:
Текст программы:
#include "stdafx.h"
#include<math.h>
int main()
{
float T[10] ; // описание массива Т
int i, imin, imax;
float min, max;
printf("Введите массив Т\n");
for( i = 0;i<10;i++)
scanf("%f",&T[i]);
min =+1E6; //инициализация min очень большим числом
max =-1E6; //инициализация max очень маленьким числом
for( i = 0; i<10; i++) //цикл по всем значения индекса
{
if (T[i]<min)
{
min = T[i];
imin=i; // сохранение номера текущего min
}
if( T[i]>max)
{
max = T[i];
imax = i; // сохранение номера текущего max
}
}
T[imin]=max; //запись max на место min
T[imax]= min; //запись min на место max
for( i= 0; i<10; i++) //вывод массива Т после обмена
printf("%6.2f ",T[i]);
printf("\n");
return 0;
}