Задания к самостоятельной работе




1. Напишите функцию integerPower(base,exponent), которая возвращает значение baseexponent . Например, integerPower(3,4)=3*3*3*3. Предположим, что exponent является положительным ненулевым целым, а base целым. Для управления вычислением функция integerPower(base,exponent) должна применять цикл for. Не используйте никаких функций математической библиотеки.

2. Напишите функцию multiple для двух целых, которая определяет, кратно ли второе число первому. Функция должна получать два целых аргумента и возвращать 1, если второе число кратно первому и 0 в противном случае. Используйте эту функцию в программе, которая вводит серию пар целых чисел.

3. Напишите функцию, которая выводит у левой границы экрана сплошной квадрат из символов заданного символа (например, *), сторона которого определяется целым параметром side. Например, если side равно 4, функция выведет следующее изображение

* * * *

* * * *

* * * *

* * * *

4. Даны действительные числа s и t.

Используйте функции и вычислите

, где

5. Даны действительные числа a,b,c. Использовать функции и получить

6. Напишите программу, которая вводит последовательность целых чисел и передает их по одному функции even, использующей операцию вычисления остатка для определения четности числа. Функция должна принимать целый аргумент и возвращать 1, если аргумент — четное число, и 0 — в противном случае.

7. Говорят, что целое число является совершенным,если его сомножители, включая 1 (но не само число) в сумме дают это число. Например, 6 — это совершенное число, так как 6=1 + 2 + 3. Напишите функцию perfect, которая определяет, является ли параметр number совершенным числом. Используйте эту функцию в программе, которая определяет и печатает все совершенные числа в диапазоне от 1 до 1000. Напечатайте сомножители каждого совер­шенного числа, чтобы убедиться, что число действительно совер­шенное.

8. Говорят, что целое число является простым числом,если оно, де­лится только на 1 и на само себя. Например, 2, 3, 5 — простые числа, а 4, 6, 8 — нет.

a) Напишите функцию, определяющую, является ли число простым или нет.

b) Используйте эту функцию в программе, которая определяет и печатает все простые числа, лежащие в диапазоне от 1 до 10000.

c) Вначале вы могли бы подумать, что верхней границей, до которой вы должны проводить проверку, чтобы увидеть, является ли число n простым, является n/2, но в действительности вам нужно прове­рить количество чисел, равное корню квадратному из п. Почему? Перепишите программу и запустите ее для обоих способов. Оцените
улучшение производительности.

9. Напишите программу, моделирующую бросание монеты. Для каж­дого броска монеты программа должна печатать Орел или Решка. Промоделируйте с помощью этой программы бросание 100 раз и подсчитайте, сколько раз появилась каждая сторона монеты. Напечатайте результаты. Программа должна вызывать отдельную функ­цию flip, которая не принимает никаких аргументов и возвращает 0 для Орла и 1 для Решки.

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

 

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

Указатели

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

Синтаксис объявления указателя:

int *a; // объявленный указатель ссылается на объект целого типа.

После объявления указатель должен быть инициализирован. Указатель инициализируется адресом.

int * a; int b = 5; // в данном случае * показывает объявление указателя, во всех

// остальных случаях * указывает на операцию косвенной адресации.

a = & b; //инициализация указателя адресом переменной b.

 

b * a Имена переменных

       
   

 


 
 
содержимое ячеек памяти

 

       
   


 

1000 1004 адреса ячеек памяти

 

Для работы с указателями используются две операции:

* - операция косвенной адресации или операция разыменования,

& - операция взятия адреса (возвращает адрес своего операнда).

 

# include < iostream.h >

main () {

int * a;

int b = 5;

a = & b; // Выполняется операция взятия адреса.

сout << a << endl; // Выведется адрес ячейки памяти, в которой хранится // переменная “b”.

cout << * a << endl; // Выведется значение переменной b, на которую ссылается

// указатель.

return 0;

}

При объявлении указатель можно инициализировать адресом ячейки памяти.

int b;

int * a = & b; // * a = & b – нельзя!



Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2017-04-04 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: