Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Лабораторная работа №2 / моя Лабораторная №2

.doc
Скачиваний:
16
Добавлен:
20.06.2014
Размер:
1.54 Mб
Скачать

2

ФЕДЕРАЛЬНОЕ АГЕНТСТВО ПО ОБРАЗОВАНИЮ

ГОСУДАРСТВЕННОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ

ВЫСШЕГО ПРОФЕССИОНАЛЬНОГО ОБРАЗОВАНИЯ

ЛИПЕЦКИЙ ГОСУДАРСТВЕННЫЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ

КАФЕДРА АВТОМАТИЗИРОВАННЫХ СИСТЕМ УПРАВЛЕНИЯ

Лабораторная работа №2

по дисциплине

«Программирование на языке выс. уровня»

на тему:

«Циклы, массивы»

Студент

подпись, дата

фамилия, инициалы

Группа

Принял

ученая степень, звание

подпись, дата

фамилия, инициалы

Липецк 2009

  1. Задание

Написать программу, выполняющую следующие действия:

  1. Заполнение массива X вещественными числами, образующими арифметическую последовательность. Количество элементов в массиве (N) и шаг последовательности (S) заданы. Начальный элемент вводит пользователь

  2. Расчет заданной функции G(X) над элементами массива X и вывод значения функции пользователю. При выводе значение функции представить в экспоненциальном формате.

  3. Расчет элементов массива по формуле Yi=F(Xi) и вывод их пользователю в виде

y1 3.543

y2 6.422

y3 -14.223

…………

При выводе округлять значения Yi до 3-х знаков после запятой.

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

N

S

G

F

27

9

16,6

Произведение

  1. Краткие теоретические сведения

Общая форма объявления одномерного массива имеет следующий вид:

тип имя_переменной [размер];

Как и другие переменные, массив должен быть объявлен явно, чтобы компилятор выделил для него определенную область памяти (т.е. разместил массив). Здесь тип обозначает базовый тип массива, являющийся типом каждого элемента. Размер задает количество элементов массива. Например, следующий оператор объявляет массив из 100 элементов типа double под именем balance:

double balance[100];

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

Доступ к элементу массива осуществляется с помощью имени массива и индекса. Индекс элемента массива помещается в квадратных скобках после имени. Например, оператор

balance[3] = 12.23;

присваивает 3-му элементу массива balance значение 12.23.

Индекс первого элемента любого массива в языке С равен нулю. Поэтому оператор

char p[10];

объявляет массив символов из 10 элементов — от р[0] до р[9]

В программах часто используется конструкция, которую называют лестницей if-else-if[1]. Общая форма лестницы имеет вид

if (выражение) оператор;

else

if (выражение) оператор;

else

if (выражение) оператор;

.

.

.

else оператор;

Работает эта конструкция следующим образом. Условные выражения операторов if вычисляются сверху вниз. После выполнения некоторого условия, т.е. когда встретится выражение, принимающее значение ИСТИНА, выполняется ассоциированный с этим выражением оператор, а оставшаяся часть лестницы пропускается. Если все условия ложны, то выполняется оператор в последней фразе else, а если последняя фраза else отсутствует, то в этом случае не выполняется ни один оператор.

Недостаток предыдущей записи лестницы состоит в том, что с ростом глубины вложенности увеличивается количество отступов в строке. Это становится неудобным с технической точки зрения. Поэтому лестницу if-else-if обычно записывают так:

if (выражение)

оператор;

else if (выражение)

оператор;

else if (выражение)

оператор;

else

оператор;

  1. Блок-схема программы

Блок-схема подпрограммы «Заполнение массива согласно условию и вывод его элементов на экран»

Блок-схема подпрограммы «Произведение элементов массива и вывод значения на экран»

Блок-схема подпрограммы «Расчет элементов массива по формуле Yi=F(Xi) и вывод их на экран»

  1. Листинг программы

#include <stdio.h>

#include <conio.h>

#include <math.h>

void zapolnenie(float A[9])

{

float s=16.6;

int i;

printf("vvedite pervyj chlen ");

scanf("%f",&A[1]);

printf("%.3f",A[1]);

for(i=2;i<10;i=i+1)

{

A[i]=A[i-1]+s;

printf(" %.3f",A[i]);

}

}

void proizvedenie(float A[9])

{

long double p=1;

int i;

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

p=A[i]*p;

printf("\nProizvedenie elementov = %ef",p);

}

void systema(float A[9])

{

float y;

int i, z;

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

{

if(A[i]<0)

{

y=-3*pow(A[i],2)+19;

printf("\ny%d",i);

printf(" %.3f",y);

A[i]=y;

}

else

if((A[i]>0)&&(A[i]<=50))

{

y=(A[i]-31)/A[i];

printf("\ny%d",i);

printf(" %.3f",y);

A[i]=y;

}

else

if(A[i]>50)

{

y=sqrt(A[i])/(A[i]-5);

printf("\ny%d",i);

printf(" %.3f",y);

A[i]=y;

}

else

{

printf("\ny%d",i);

printf(" ne suchestvuet");

}

}

}

void main(void)

{

float A[9];

zapolnenie(A);

proizvedenie(A);

systema(A);

getch();

}

  1. Контрольный пример

  1. Выводы о проделанной работе

Я написал программу, выполняющую следующие действия:

1.Заполнение массива А вещественными числами, образующими арифметическую последовательность. Количество элементов в массиве (N) и шаг последовательности (S) заданы. Начальный элемент вводит пользователь

2. Расчет заданной функции G(X) над элементами массива X и вывод значения функции пользователю. При выводе значение функции представить в экспоненциальном формате.

3. Расчет элементов массива по формуле Yi=F(Xi) и вывод их пользователю в виде

y1 3.543

y2 6.422

y3 -14.223

…………

4. При выводе округление значения Yi до 3-х знаков после запятой.

Все действия я реализовал в виде отдельных функций.

При написании данной программы я улучшил свои навыки в программировании на C++

  1. Список использованной литературы

  1. Шилдт Г. Искусство программирования на C++. БХВ.2005

  2. Шилдт Г. C++ Руководство для начинающих. Вильямс.2005

  3. Страуструп Б. Язык программирования С++. Специальное издание, 3-изд. Бином.2004

Соседние файлы в папке Лабораторная работа №2