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

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

Рубрика Программирование, компьютеры и кибернетика
Вид лабораторная работа
Язык русский
Дата добавления 13.01.2014
Размер файла 323,8 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Размещено на http://www.allbest.ru/

МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ

РОССИЙСКОЙ ФЕДЕРАЦИИ

Федеральное агентство по образованию

НОВОСИБИРСКИЙ ГОСУДАРСТВЕННЫЙ

ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ

Учебный Центр Информационных Технологий «Информатика»

  • Лабораторная работа № 2
  • по дисциплине «Информатика и программирование (I часть)»
  • Направление подготовки: 230105 - «Программное обеспечение вычислительной техники и автоматизированных систем»
  • Изучение операторов, управляющих структур, работа с целочисленными массивами
  • Выполнил слушатель: Иванова Е.В.
  • Группа: 2
  • Преподаватель: Зальцбер Д.В.
  • Новосибирск, 2013 г.

1 Задание

Найти в массиве элемент, наиболее близкий к среднему арифметическому суммы его элементов.

2 Теоретический материал

массив данные хранение

Операторы создают то, что в обыденном сознании ассоциируется с понятием алгоритм - описание последовательности действий, выполняемых программой, или логика ее работы. В Си реализован общий для большинства языков программирования «джентльменский набор» управляющих конструкций:

· линейная последовательность действий;

· условная конструкция (если-то-иначе);

· конструкция повторения (цикл);

· переход (и его разновидности).

Управляющая конструкция - линейная последовательность действий является основной в языках программирования.

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

В Си используется такой принцип: если составной частью управляющей конструкции является единственный оператор, то он никак синтаксически не выделяется. Если же составной частью является последовательность операторов, то она заключается в фигурные скобки ({}) и образует блок.

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

Единственный условный оператор имеет две разновидности: с else и без него.

В качестве условия выступает выражение, которое может иметь любой целый результат и интерпретируется в соответствии с принятыми в Си соглашениями о логических значениях: 0 -«ложь», не 0 - «истина». Действует он как и во всех языках программирования: если значение выражения есть «истина», то выполняется первый оператор, если «ложь» - второй (после else). Конструкция является структурированной, обе ветви - прямая и альтернативная - «сливаются» в одну

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

Метка default обозначает последовательность, которая выполняется «по умолчанию».

Массив - совокупность элементов одного типа.

тип имя_массива[количество_элементов]

тип - задает тип элемента массива и может быть как стандартный так и определенный пользователем.

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

количество_элементов - целочисленная константа определяющая сколько элементов будет в массиве.

Доступ к элементу массива осуществляется с помощью индекса, например A[0] - первый элемент, A[1] - второй элемент, A[n] - n-й элемент массива. Нумерация элементов начинается с нуля. В памяти элементы массива хранится последовательно т.е A[0], A[1], A[2]…A[n]. Имя массива это адрес ячейки памяти по которому находится первый элемент.

3 Описание алгоритма

Дано:

целочисленный массив.

Результат:

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

Метод решения:

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

Алгоритм:

SZ - Количество элементов

B - массив чисел

sum - сумма всех элементов массива

avg - среднеарифметическое всех значений

xAvg - результат

Суммируем все элементы массива B (sum = A0 + А1 + … +Аn-1).

Делим сумму на количество элементов (avg=sum/SZ), получаем среднеарифметическое.

По умолчанию считаем что первый элемент массива, ближайший к среднеарифметическому (xAvg = 0)

Проходим по всем элементам массива, начиная с первого (i = 1).

Если |B[xAvg] - avg | больше |B[i] - avg |, то присваиваем результату новый индекс (avg = i)

Прибавляем к результату единицу (avg + 1) для получения номера элемента массива.

Выводим результат (avg) на экран.

4 Описание реализации

Подключаемые библиотеки:

#include "stdio.h"

#include "conio.h"

#include "stdlib.h"

#include "math.h"

Используемые переменные:

SZ - размер массива (количество элементов) B

B - массив чисел

i - используется в циклах как индекс массива B

sum - сумма всех элементов массива

avg - используется для вычисления среднеарифметического значения элементов массива.

j - индекс элемента значение которого наиболее близкое к значению среднеарифметического всех элементов

Используемые конструкции:

if - для сравнения двух величин

for - для обхода всех значений последовательности (массива)

Функции, используемые в программе:

float SumArr(int A[ ],int n) - функция для нахождения суммы элементов массива.

int xAverage(int A[ ],int n,float x) - функция для нахождения наиболее близкого элемента.

Стандартные функции:

printf() - вывод форматированного текста на экран

system(“pause”)

fabs() - возвращает модуль вещественного числа

4.6. Тело функции нахождения суммы всех элементов массива:

float SumArr(int A[], int n)

{ int i; // переменная для обхода элементов массива

float s=0; //ввод переменной для суммы элементов

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

{

s+=A[i]; //вычисление суммы элементов массива

}

return s; //функция возвращает сумму элементов массива

Тело функции поиска в массиве элемента, наиболее близкого к среднему арифметическому суммы элементов массива:

int xAverage(int A[],int n,float x)

{ int i;

// по умолчанию считаем, что первый элемент массива равен среднеарифметическому

int j=0;

// ищем индекс элемента ближайшего к среднеарифметическому

// т.к. первый элемент находится в нулевой ячейке массива, то

// к индексу прибавляем единицу для получения номера элемента

for(i=1;i<n;i++)

{ if(fabs(A[j]-x)>fabs(A[i]-x))

{

j=i;

}

}

return j; // функция возвращает сумму индекс элемента

}

Основной блок программы:

void main ()

{

int B[SZ]={4,31,53,67,11,45}; //инициализация массива

int i; // переменная для обхода элементов массива

printf("Array B: "); //вывод на экран массива

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

{ printf("%d ",B[i]);

}

printf("\n");

float sum,avg; //объявление переменных

//вызов функции для нахождения суммы элементов массива

sum=SumArr(B,SZ);

printf("sum=%.3f\n",sum); //вывод на экран суммы элементов массива

avg=sum/SZ; // среднее арифметическое суммы элементов массива

printf("sr=%.3f\n",avg); //вывод на экран среднее арифметического

int xAvg;

//вызов функции для нахождения индекса элемента, наиболее близкого к среднему

//арифметическому суммы

xAvg=xAverage(B,SZ,avg);

//вывод на экран индекса элемента, наиболее близкого к среднему

//арифметическому суммы

printf("xAvg=%d\n",xAvg);

system("pause");

}

5 Пример работы программы

Рис. 1. Результат работы программы.

Тест №1

Вводим десять чисел от 0 до 50 с шагом 10, в сумме получаем 150, среднеарифметическое равно 25. Результат, второй элемент.

Тест №2

Вводим все одинаковые числа и получаем первый элемент, так как любое из значений будет равно среднеарифметическому всех значений.

Тест №3

Вводим числа, сумма которых равна нулю, тогда среднеарифметическое будет равно нулю. Так как последние 4 числа равны нулю, результатом будет номер первого элемента равного или близкого к нулю, в нашем случае это элемент с номером 2.

Выводы

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

На приведенном наборе тестов программа работает корректно.

Приложение. Текст программы

#include "stdio.h"

#include "conio.h"

#include "stdlib.h"

#include "math.h"

#define SZ 6

float SumArr(int A[],int n); //функция для нахождения суммы элементов массива

int xAverage(int A[],int n,float x); //функция для нахождения наиболее близкого

//элемента

void main ()

{

int B[SZ]={-100,100,0,0,0,0}; //инициализайия массива

int i; // переменная для обхода элементов массива

printf("Array B: ");

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

{

printf("%d ",B[i]); //вывод на экран заданного массива

}

printf("\n");

float sum,avg; //инициализация переменных

sum=SumArr(B,SZ); //вызов функции для нахождения суммы элементов массива

printf("sum=%.3f\n",sum);

avg=sum/SZ; // среднее арифметическое суммы элементов массива

printf("sr=%.3f\n",avg); //вывод на экран среднее арифметического

int xAvg;

xAvg=xAverage(B,SZ,avg); //вызов функции для нахождения наиболее близкого

// элемента к среднему арифметическому

printf("xAvg=%d\n",xAvg); //вывод на экран искомого значения

system("pause");

}

float SumArr(int A[], int n) //функция для нахождения суммы элементов массива

{

int i; // инициализация переменной для обхода элементов массива

float s=0; //ввод переменной для суммы элементов

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

{

s+=A[i]; //вычисление суммы элементов массива

}

return s;

}

int xAverage(int A[],int n,float x) //функция для нахождения наиболее близкого

{ //элемента

int i;

int j=0; //по умолчанию считаем, что первый элемент массива равен

for(i=1;i<n;i++) //среднему арифметическому

{

if(fabs(A[j]-x)>fabs(A[i]-x)) //находим минимальное значение по модулю

{ //разницы между текущим элементом и

j=i; //заданным

}

}

return j;

}

Размещено на Allbest.ru


Подобные документы

  • Выведение значения элементов массива, которые удовлетворяют неравенству. Подсчет количества отрицательных элементов массива. Изменение исходного массива. Тестирование программы. Проверка её работоспособности. Реакция программы на сообщение об ошибке.

    лабораторная работа [1,3 M], добавлен 23.11.2014

  • Подсчет количества отрицательных элементов массива. Изменение исходного массива перемещением всех его положительных элементов в начало с исходным порядком их следования. Вывод на дисплей количества перемещенных элементов. Алгоритм и код программы.

    лабораторная работа [946,5 K], добавлен 23.11.2014

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

    лабораторная работа [12,8 K], добавлен 09.01.2011

  • Особенности поиска среднеарифметического значения элементов массива. Общая характеристика проблем разработки в среде Turbo Pascal программы упорядочивания массива по возрастанию. Рассмотрение основных этапов разработки программы на языке PASCAL.

    курсовая работа [896,7 K], добавлен 18.05.2014

  • Заполнение массива из целых чисел с присвоением элементам разных значений. Варианты программы с использованием различных операторов организации циклов. Определение квадрата максимального из четных элементов массива и общего числа нулевых элементов.

    лабораторная работа [259,3 K], добавлен 14.05.2011

  • Вычисление суммы положительных элементов массива. Упорядочивание элементов массива по убыванию. Решение задачи с помощью алгоритма, реализованного в среде Microsoft Visual 2008 Express. Реализация и тестирование программы. Выполнение трассировки функций.

    практическая работа [146,3 K], добавлен 23.01.2015

  • Разработка и реализация типовых алгоритмов обработки одномерных массивов на языке Delphi. Максимальный и минимальный элемент массива. Значение и расположение элементов массива. Элементы массива, находящиеся перед максимальным или минимальным элементом.

    лабораторная работа [12,8 K], добавлен 02.12.2014

  • Сравнение различных способов обхода данных. Заполнение массива для случайного обхода. Изучение понятия кэш-памяти, ее основных размеров и функций. Оптимальный и неоптимальный алгоритм умножения двух матриц с точки зрения порядка обхода данных в памяти.

    презентация [94,7 K], добавлен 02.06.2013

  • Структура программного комплекса. Ввод информации из заданного файла. Создание набора данных. Добавление элементов в конец набора данных. Просмотр всех элементов набора данных. Копирование информации из НД в заданный файл. Сортировка массива по номерам.

    курсовая работа [630,5 K], добавлен 01.06.2014

  • Массив - это коллекция переменных, которые имеют общее имя и базовый тип. Функциональные возможности, виды массивов и их характеристика. Основные требования к входным и выходным данным массива. Использование IF THEN для перехвата всех возможных ошибок.

    реферат [22,6 K], добавлен 01.12.2010

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.