Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Одномерные массивы. Исследование таблицы значений функции




Исследование таблицы значений функции

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

1. Нахождение наибольшего max (наименьшего min) значения функции.

Рис. 5.22. Часть блок- схемы max=-10E10; for(x=xn; x<=xk; x=x+h){ f=…; if(f>max){ max=f; } }

Примечание. Если нужно найти наименьшее значение функции, то следует сделать следующие замены: «max =-1010» поменять на «min =1010», «f>max» поменять на «f<min», «max=f» поменять на «min=f».
2. Нахождение суммы S значений функции

Рис. 5.23. Часть блок- схемы S=0; for(x=xn; x<=xk; x=x+h){ f=…; S=S+f; } cout<<”S=”<<S<<endl;

 

3. Нахождение произведения P значений функции

Рис. 5.24. Часть блок- схемы P=1; for(x=xn; x<=xk; x=x+h){ f=…; P=P*f; } cout<<”P=”<<S<<endl;

 

4. Нахождение среднего арифметического значения S и количества k значений функции

Рис. 5.25. Часть блок- схемы S=0; k=0; for(x=xn; x<=xk; x=x+h){ f=…; S=S+f; k=k+1; } S=S/k; cout<<”S=”<<S<<endl; cout<<”k=”<<k<<endl;

Пример 5.17. Вычислить таблицу «x, f» значений функции при 0≤ х ≤4 с шагом 1. Найти сумму всех значений функции; произведение значений, меньших 6; минимальное значение функции.

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

Введем обозначения:

S – сумма всех значений функции,

P – произведение значений, меньших 6,

min – минимальное значение функции.

Т.к. нужно найти произведение значений, меньших 6, то следует добавить условие «f <6» при вычислении произведения.

Будем реализовывать цикл с предусловием, используя оператор for.

Рис. 5.26. Блок- схема для примера 5.17 Код программы (Visual Studio) с оператором for (предусловие): // proga26.cpp: определяет точку входа для консольного приложения. // #include "stdafx.h" #include <iostream> #include <iomanip> using namespace std; int main() { double x,f,S,P,min; cout<<setw(10)<<"x"<<setw(10)<<"f"<<endl; S=0; P=1; min=10E10; for(x=0; x<=4; x=x+1){ f=2*x+1; cout<<setw(10)<<x<<setw(10)<<f<<endl; S=S+f; if(f<6){ P=P*f; } if(f<min){ min=f; } } cout<<"S="<<S<<endl; cout<<"P="<<P<<endl; cout<<"min="<<min<<endl; return 0;}
Результат выполнения программы:
Код программы (Borland C++) с оператором for (предусловие): #include <iostream.h> #include <iomanip.h> int main() { double x,f,S,P,min; cout<<setw(10)<<"x"<<setw(10)<<"f"<<endl; S=0; P=1; min=10E10; for(x=0; x<=4; x=x+1){ f=2*x+1; cout<<setw(10)<<x<<setw(10)<<f<<endl; S=S+f; if(f<6){ P=P*f; } if(f<min){ min=f; } } cout<<"S="<<S<<endl; cout<<"P="<<P<<endl; cout<<"min="<<min<<endl; return 0;} Результат выполнения программы:   Ручной счет: Диапазон значений х: 0, 1, 2, 3, 4. при x =0 f =2 x +1=2•0+1=1; при x =1 f =2 x +1=2•1+1=3; при x =2 f =2 x +1=2•2+1=5; при x =3 f =2 x +1=2•3+1=7; при x =4 f =2 x +1=2•4+1=9; сумма всех значений: S =1+3+5+7+9=25; произведение значений, меньших 6: P =1•3•5=15; наименьшее значение функции: min =1.
     

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

Глава 6 Понятие массива. Одномерные и двумерные массивы

Массив – это пронумерованный набор однотипных элементов.

Массивы бывают статическими и динамическими. У статического массива количество элементов известно заранее и не может быть изменено. У динамического массива количество элементов заранее неизвестно и определяется в процессе выполнения программы.

Также массивы различаются по размерности: одномерные, двумерные, трехмерные и т.д. Примером одномерно массива может послужить вектор а{1, 4, 3.5}. Примером двумерно массива может послужить матрица. Примером трехмерного массива может послужить набор высот местности.

Массивы различают по типу элементов. Бывают целочисленные, вещественные (состоящие из дробных чисел), символьные массивы.

Примеры массивов:

1. вектор а{1, 4, 3.5} – одномерный вещественный массив из трех элементов;

2. матрица – двумерный целочисленный массив из шести элементов;

3. {‘x’, ‘3’, ‘%’} – одномерный символьный массив;

4. {‘x’, 3, ‘%’} – не является массивом, т.к. часть элементов символы, часть элементов числа.

Мы будем рассматривать только статические одномерные и двумерные численные массивы.

Индекс – это номер элемента в массиве.

У одномерного массива один индекс, обычно он обозначается i.

Чтобы использовать одномерный массив в программе, необходимо:

1. объявить массив в функции main():

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

double a[3]; //статический массив а из трех дробных чисел

int b[7]; //статический массив b из семи целых чисел

2. проинициализировать массив, т.е. задать каждому элементу конкретное числовое значение;

3. провести вычисления, исследования.

Примечание. Индексация в массиве начинается с 0, т.е. индекс у самого первого элемента в массиве i =0. Индексация в массиве а(7)={-10; 0,2; 3; -4,7; 0,5; -8, 11} указана на рис. 6.1.

Рис. 6.1 Индексация одномерного массива

Способы инициализации одномерного массива:

1. инициализация числами:

double a[4]={0.5, -2,856, 1, 23};

2. с клавиатуры:

for (i=0; i<4; i=i+1){

cout<<”a[”<<i<<”]=”;

cin>>a[i];

}

3. по формуле:

например

for(i=0; i<4; i=i+1){

a[i]=pow(i, 2.0);

}

Пример 6.1. Даны четыре одномерных массива: а (8)={1,2,3,4,5,6,7,8}, b (8) вводится с клавиатуры, с (8) вычисляется по формуле , d (8) вычисляется по формуле . Построить таблицу значений массивов.

Решение. Сначала необходимо проинициализировать массивы согласно условию задачи.

Массив а задан числами (первый способ инициализации), поэтому он будет проинициализирован при объявлении.

В одном цикле по переменной i (0≤ i <8) введем b с клавиатуры (второй способ инициализации), массивы c и d рассчитаем по формулам (третий способ инициализации).

Далее организуем еще один цикл по переменной i (0≤ i <8), в котором выведем все проинициализированные массивы на экран.

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

Рис. 6.2. Блок-схема (с предусловием)

Код программы (Visual Studio) с оператором for (предусловие):

// proga27.cpp: определяет точку входа для консольного приложения.

//

#include "stdafx.h"

#include <iostream>

#include <iomanip>

using namespace std;

int main()

{

double a[8]={1,2,3,4,5,6,7,8};

double b[8], c[8], d[8];

int i;

for(i=0; i<8; i=i+1){

cout<<"b["<<i<<"]=";

cin>>b[i];

c[i]=2.0*i;

d[i]=a[i]+b[i]+c[i];

}

cout<<setw(2)<<"i"<<setw(5)<<"a"<<setw(5)<<"b"<<setw(5)<<"c"<<setw(5)<<"d"<<endl;

for(i=0; i<8; i=i+1){

cout<<setw(2)<<i<<setw(5)<<a[i]<<setw(5)<<b[i]<<setw(5)<<c[i]<< setw(5)<<d[i]<<endl;

}

return 0;}

Результат выполнения программы:

 

Код программы (Borland C++) с оператором for (предусловие):

#include <iostream.h>

#include <iomanip.h>

int main()

{

double a[8]={1,2,3,4,5,6,7,8};

double b[8], c[8], d[8];

int i;

for(i=0; i<8; i=i+1){

cout<<"b["<<i<<"]=";

cin>>b[i];

c[i]=2.0*i;

d[i]=a[i]+b[i]+c[i];

}

cout<<setw(2)<<"i"<<setw(5)<<"a"<<setw(5)<<"b"<<setw(5)<<"c"<<setw(5)<<"d"<<endl;

for(i=0; i<8; i=i+1){

cout<<setw(2)<<i<<setw(5)<<a[i]<<setw(5)<<b[i]<<setw(5)<<c[i]<< setw(5)<<d[i]<<endl;

}

return 0;

}

 

Результат выполнения программы:

 

Пример 6.2. Массив а (10) задан формулой аi =3 i -5. Вычислить сумму положительных элементов массива и поменять местами первый и последний элементы.

Решение.

Обозначим за S сумму положительных элементов массива. При расчете S требуется дополнительное условие: «ai >0». Первый элемент массива имеет индекс 0, последний элемент имеет индекс 9, поэтому будем менять местами а0 и а9. Из-за перемены мест элементов массив изменится, поэтому выведем его еще раз.

 

Рис. 6.3. Блок-схема для примера 6.2

Код программы (Visual Studio) с оператором for (предусловие):

// proga28.cpp: определяет точку входа для консольного приложения.

//

#include "stdafx.h"

#include <iostream>

#include <iomanip>

using namespace std;

int main(){

double S, tmp, a[10];

int i;

S=0;

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

a[i]=3.0*i-5.0;

cout<<setw(3)<<a[i];

if(a[i]>0){

S=S+a[i];

}

}

cout<<endl;

cout<<"S="<<S<<endl;

tmp=a[0];

a[0]=a[9];

a[9]=tmp;

for(i=0; i<10; i=i+1){ cout<<setw(3)<<a[i]; }

cout<<endl;

return 0;}

Результат выполнения программы:

Код программы (Borland C++) с оператором for (предусловие):

#include <iostream.h>

#include <iomanip.h>

int main(){

double S, tmp, a[10];

int i;

S=0;

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

a[i]=3.0*i-5.0;

cout<<setw(3)<<a[i];

if(a[i]>0){

S=S+a[i];

}

}

cout<<endl;

cout<<"S="<<S<<endl;

tmp=a[0];

a[0]=a[9];

a[9]=tmp;

for(i=0; i<10; i=i+1){ cout<<setw(3)<<a[i];}

cout<<endl;

return 0;}

Результат выполнения программы:

Проверка результатов в программе MathCad:

Ручной счет:

при i =0 a (0)=3 i -5=3•0-5=-5;

при i =1 a (1)=3 i -5=3•1-5=-2;

при i =2 a (2)=3 i -5=3•2-5=1;

при i =3 a (3)=3 i -5=3•3-5=4;

при i =4 a( 4)=3 i -5=3•4-5=7;

при i =5 a( 5)=3 i -5=3•5-5=10;

при i =6 a (6)=3 i -5=3•6-5=13;

при i =7 a (7)=3 i -5=3•7-5=16;

при i =8 a (8)=3 i -5=3•8-5=19;

при i =9 a (9)=3 i -5=3•9-5=22;

сумма положительных элементов S =1+4+7+10+13+16+19+22=92.




Поделиться с друзьями:


Дата добавления: 2017-01-13; Просмотров: 419; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.009 сек.