Студопедия

КАТЕГОРИИ:

АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция

Программирование арифметических циклов




 

Для арифметического цикла заранее известно сколько раз выполняется тело цикла.

Задача №2.Дана последовательность целых чисел из n элементов. Найти среднее арифметическое этой последовательности.

#include <iostream.h>

#include <math.h>

void main()

{

int a,n,i;

double s=0; //инициализируем переменную начальным значением

cout<<"\nEnter n";

cin>>n; // вводим количество элементов в последовательности

    for(i=1;i<=n;i++)// цикл выполняется n раз

    {

         cout<<"\nEnter a";

         cin>>a; // вводим переменную

         s+=a;//добавляем значение переменной к сумме

    }

    s=s/n;//находим среднее арифметическое

    cout<<"\nсреднее арифметическое равно="<<s<<"\n";

}

 

Задача №3.Найти значение S=1+2+3+4+. . . +N

 

#include <iostream.h>

#include <math.h>

void main()

{

//описываем переменные и инициализируем s начальным значением

int n,i,s=0;

cout<<"\nEnter n";

cin>>n; // вводим количество элементов в последовательности

for(i=1; i<=n; i++)++)// цикл выполняется n раз

s+=i; //добавляем значение переменной к сумме

cout<<"\nS="<<s<<"\n";

}

Программирование итерационных циклов

 

Для итерационного цикла должно быть известно условие выполнения цикла. При использовании цикла с предусловием (while) тело цикла может не выполняться ни разу, если сразу же не выполняется условие цикла. При использовании цикла с постусловием тело цикла будет выполнено хотя бы один раз. И в том, и в другом случае используется условие выполнения цикла.

Задача №5.Дана последовательность целых чисел, за которой следует 0. Найти минимальный элемент этой последовательности.

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

 

#include <iostream.h>

#include <math.h>

void main()

{

int a,min;

cout<<"\nEnter a";

cin>>a; //вводим первое число

min=a;//присваиваем переменной min начальное значение

while(a!=0)//цикл с предусловием

{

cout<<"\nEnter a";

cin>>a;//вводим следующее число

/*сравниваем с нулем, т. к. 0 не входит в последовательность

 и не может быть минимальным и с минимальным значением*/

if (a!=0&&a<min)

min=a; //запоминаем в min новое значение

}

cout<<"\nmin="<<min<<"\n";//вывод результата

}

Тесты:

a 2 55 -3 -10 0
min -10        

 

a 12 55 4 27 0
min 4        

 

a -6 -43 -15 -10 0
min -10        

 

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

 

#include <iostream.h>

#include <math.h>

void main()

{

int a,min;

cout<<"\nEnter a";

cin>>a; //вводим первое число

min=a;//присваиваем переменной min начальное значение

do //цикл с постусловием

{

cout<<"\nEnter a";

cin>>a;//вводим следующее число

if (a==0)break;// выход из цикла, если ввели 0

if (a<min)//сравниваем а с текущим min

min=a; //запоминаем в min новое значение

}

//бесконечный цикл, т. к. выход осуществляется с помощью break

while(1);

cout<<"\nmin="<<min<<"\n";//вывод результата

}

 

Эту же задачу можно решить с помощью цикла for:

 

#include <iostream.h>

#include <math.h>

void main()

{

int a,min;

cout<<"\nEnter a";

cin>>a; //вводим первое число

min=a;//присваиваем переменной min начальное значение

for(;a!=0;)//цикл используется как цикл с предусловием

{

cout<<"\nEnter a";

cin>>a;//вводим следующее число

/*сравниваем с нулем, т. к. 0 не входит в последовательность

 и не может быть минимальным и с минимальным значением*/

if (a!=0&&a<min)

min=a; //запоминаем в min новое значение

}

cout<<"\nmin="<<min<<"\n";//вывод результата

}

 

Задача №6. Найти сумму чисел Фибоначчи, меньших заданного числа Q. Числа Фибоначчи – это последовательность чисел: 1, 1, 2, 3, 5, 8, 13, …., т. е. каждое следующее число – это сумма двух предыдущих.

 

#include<iostream.h>

void main()

{

int a=1,//первое число

b=1,//второе число

s=2,//сумма чисел Фибоначчи

Q,

c;//следующее число

cout<<"\nEnter Q";

cin>>Q;//вводим число Q

if(Q<=0)cout<<"Error in Q";

else

//если Q=1, то сумма тоже будет 1 (первое число)

if(Q==1)s=1;

else

{

c=a+b;//вычисляем следующее число

while(c<Q)

{

    s+=c;//вычисляем сумму

    a=b;//меняем первое число на второе

    b=c;//меняем второе число на текущее

    c=a+b;//вычисляем текущее число Фибоначчи

}

    

}

cout<<"\nS="<<s<<"\n";//выводим результат

}

 

 

Тесты:

Q S
-1 Error in Q
0 Error in Q
1 1
2 2
10 20

 

 

Программирование вложенных циклов

 

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

Задача №7: Напечатать N простых чисел.

Разделим эту задачу на две подзадачи:

1. определить является ли число простым;

2. напечатать n чисел, удовлетворяющих заданному условию.

Простым называется число, которое делится только само на себя и на единицу (сама единица простым числом не является). Тогда, чтобы определить является число простым или нет, нужно проверить есть ли у него другие делители. Для этого будем делить число К на все числа от 2 и до К, используя цикл с постусловием. Если К разделится на d без остатка только, когда d станет равно К, значит, число простое:

       d=1;//начальное значение делителя

do

{

    d++;//увеличиваем делитель

}

/*цикл выполняется пока остаток от деления К на d не равен 0 (не делится)*/

while(К%d!=0);

if(К==d)//делитель равен К, т. е. число простое

    cout<<a<<" ";

 

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

K=1;//присваиваем начальное значение числу

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

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

{

K++;//берем следующее число

if (K простое число)

i++;//увеличиваем счетчик простых чисел

}

Объединив эти два фрагмента вместе, получим решение поставленной задачи

 

#include<iostream.h>

void main()

{

int K=1,n,d;

cout<<"\nEnter N";

cin>>n;

//неправильно задано число n

if(n<1) {

cout<<”\nerror in data”;

return;//завершение программы

}

for(int i=0;i<n;)//внешний цикл

{

K++;d=1;

do //внутренний цикл

{

    d++;

}

while(K%d!=0);//конец внутреннего цикла

if(K==d){

    cout<<K<<" ";

    i++;}

 

}//конец внешнего цикла

}

Тесты

n=0 Error in data
n=1 2
n=5 10

 

Массивы

 

В языке C/C++, кроме базовых типов, разрешено вводить и использовать производные типы, полученные на основе базовых. Стандарт языка определяет три способа получения производных типов:

· массив элементов заданного типа;

· указатель на объект заданного типа;

· функция, возвращающая значение заданного типа.

 

Массив – это упорядоченная последовательность переменных одного типа. Каждому элементу массива отводится одна ячейка памяти. Элементы одного массива занимают последовательно расположенные ячейки памяти. Все элементы имеют одно имя – имя массива и отличаются индексами – порядковыми номерами в массиве. Количество элементов в массиве называется его размером. Чтобы отвести в памяти нужное количество ячеек для размещения массива, надо заранее знать его размер. Резервирование памяти для массива выполняется на этапе компиляции программы.

 

12.1. Определение массива в C/C++

 

Массивы определяются следующим образом:

 

int a[100];//массив из 100 элементов целого типа

 

Операция sizeof(a) даст результат 400, т. е. 100 элементов по 4 байта.

Элементы массива всегда нумеруются с 0.

 

45 352 63   124 значения элементов массива  
0 1 2 ….. 99 индексы элементов массива

Рис. 4. Размещение массива в памяти

Чтобы обратиться к элементу массива, надо указать имя массива и номер элемента в массиве (индекс):

a[0] – индекс задается как константа,

a[55] – индекс задается как константа,

a[i] – индекс задается как переменная,

a[2*i] – индекс задается как выражение.

 

Элементы массива можно задавать при его определении:

 

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

 

Операция sizeof(a) даст результат 40, т. е. 10 элементов по 4 байта.

 

int a[10]={1,2,3,4,5};

 

Операция sizeof(a) даст результат 40, т. е. 10 элементов по 4 байта. Если количество начальных значений меньше, чем объявленная длина массива, то начальные элементы массива получат только первые элементы.

 

int a[]={1,2,3,4,5};

 

Операция sizeof(a) даст результат 20, т. е. 5 элементов по 4 байта. Длина массива вычисляется компилятором по количеству значений, перечисленных при инициализации.

 










Последнее изменение этой страницы: 2018-04-12; просмотров: 337.

stydopedya.ru не претендует на авторское право материалов, которые вылажены, но предоставляет бесплатный доступ к ним. В случае нарушения авторского права или персональных данных напишите сюда...