Будь умным!


У вас вопросы?
У нас ответы:) SamZan.net

Лабораторная работа 4 Функции в С Цель работы- Получение практических навыков при работ

Работа добавлена на сайт samzan.net:


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

Функции в С++

  1.  Цель работы:

  1.  Получение практических навыков при работе с функциями
  2.  Получение практических навыков при передаче массивов и строк в функции.

2. Теоретические сведения

2.1 Определение функции в С++

Функция – это именованная последовательность описаний и операторов, выполняющая законченное  действие, например, формирование массива, печать массива и т. д.

Любая функция должна быть объявлена и определена.

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

тип имя_функции([список_формальных_параметров])

{ тело_функции}

  •  Тело_функции – это блок или составной оператор. Внутри функции нельзя определить другую функцию.

В теле функции должен быть оператор, который возвращает полученное значение функции в точку вызова. Он может иметь 2 формы:

  1.  return выражение;
  2.  return;

Первая форма используется для возврата результата, поэтому выражение должно иметь тот же тип, что и тип функции в определении. Вторая форма используется, если функция не возвращает значения, т. е. имеет тип void. Программист может не использовать этот оператор в теле функции явно, компилятор добавит его автоматически в конец функции перед }.

  •  Тип возвращаемого значения может быть любым, кроме массива и функции, но может быть указателем на массив или функцию.
  •  Список формальных параметров – это те величины, которые требуется передать в функцию. Элементы списка разделяются запятыми. Для каждого параметра указывается тип и имя. В объявлении имена можно не указывать.

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

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

2.2 Параметры функции

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

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

void Change(int a,int b)//передача по значению

{

int r=a;

a=b;

b=r;

}

int main()

{

int x=1,y=5;

Change(x,y);

cout<<”x=”<<x<<” y=”<<y; //выведется: x=1 y=5

return 1;

}

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

void Change(int *a,int *b)//передача по адресу

{

int r=*a;

*a=*b;

*b=r;

}

int main()

{

int x=1,y=5;

Change(&x,&y);

cout<<”x=”<<x<<” y=”<<y; //выведется: x=5 y=1

return 1;

}

Для передачи по адресу также могут использоваться ссылки. Ссылка – это синоним имени объекта, указанного при инициализации ссылки.

Формат объявления ссылки

тип & имя =имя_объекта;

Ссылка не занимает дополнительного пространства в памяти, она является просто другим именем объекта.

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

void Change(int &a,int &b)

{

int r=a;

a=b;

b=r;

}

int main()

{

int x=1,y=5;

Change(x,y);

cout<<”x=”<<x<<” y=”<<y; //выведется: x=5 y=1

return 1;

}

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

2.3 Локальные и глобальные переменные

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

2.4 Передача одномерных массивов как параметров функции

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

void print(int a[100],int n) //вывод массива на печать

{

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

 cout<<a[i]<<" ";

cout<<"\n";

}

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

2.5  Передача строк в качестве параметров функций

Строка в Си++ - это массив символов, заканчивающийся нуль-символом – ‘\0’ (нуль-терминатором). По положению нуль-терминатора определяется фактическая длина строки. Количество элементов в таком массиве на 1 больше, чем изображение строки.

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

Строки при передаче в функции могут передаваться как одномерные массивы типа char или как указатели типа    char*. В отличие от обычных массивов в функции не указывается длина строки, т. к. в конце строки есть признак конца строки /0.

//Функция поиска заданного символа в строке

int  find(char *s,char c)

{

for (int I=0;I<strlen(s);I++)

if(s[I]==c) return I;

return –1

}

2.6 Передача многомерных массивов в функцию

Многомерный массив – это массив, элементами которого служат массивы. Например, массив int a[4][5] – это массив из указателей int*, которые содержат имена одноименных массивов из 5 целых элементов:


Рис.2 Выделение памяти под массив, элементами которого являются массивы.

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

const int N=4;//глобальная переменная

void transp(int a[][N],int n)// транспонирование матрицы

{

int r;

for(int I=0;I<n;I++)

for(int j=0;j<n;j++)

if(I<j)

{

r[a[I][j];

a[I][j]=a[j][I];

a[j][I]=r;

}

}

2.7 Строки

Строка в C++ – это массив символов, заканчивающийся нуль-символом – ’\0’ (нуль-терминатором). По положению нуль-терминатора определяется фактическая длина строки. Количество элементов в таком массиве на 1 больше, чем изображение строки.

A

\0

A

”A”

строка

(2 байта)

A

символ  (1 байт)

Рис. 3.  Представление строки и символа

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

 char s1[10]="string1";//инициализация

char s2[]="string2";//инициализация

char s3[10];

cin>>s3;//ввод

//выделение памяти под динамическую строку

char *s4=new char[strlen(s3)+1];

strcpy(s4,s3);//копирование строки s3 в строку s4

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

Прототип функции

Краткое

описание

Примечание

unsigned strlen(const char* s);

Вычисляет длину строки s.

int strcmp(const char* s1, const char* s2);

Сравнивает строки s1 и s2.

Если s1<s2, то результат отрицательный, если s1==s2, то результат равен 0, если s2>s1 – результат положительный.

int strcnmp(const char* s1, const char* s2);

Сравнивает первые n символов  строк s1 и s2.

Если s1<s2, то результат отрицательный, если s1==s2, то результат равен 0, если s2>s1 – результат положительный.

char* strcpy(char* s1, const char* s2);

Копирует символы строки s1 в строку s2.

char* strncpy(char* s1, const char* s2, int n);

Копирует n  символов строки s1 в строку s2.

Конец строки отбрасывается или дополняется пробелами.

char* strcat(char* s1, const char* s2);

Приписывает строку s2 к строке s1

char* strncat(char* s1, const char* s2);

Приписывает первые n символов строки s2 к строке s1

char* strdup(const char* s);

Выделяет память и переносит в нее копию строки s

При выделении памяти используются функции

Строки при передаче в функции могут передаваться как одномерные массивы типа char или как указатели типа  char*. В отличие от обычных массивов в функции не указывается длина строки, т. к. в конце строки есть признак конца строки \0.

3. Постановка задачи

  1.  Используя функции сформировать одномерный массив и вывести его на печать.
  2.  Выполнить обработку одномерного массива в соответствии с вариантом, используя функции, результат вывести на печать.
  3.  Используя функции сформировать двумерный массив и вывести его на печать.
  4.  Выполнить обработку двумерного массива в соответствии с вариантом, используя функции, результат вывести на печать.
  5.  Ввести с клавиатуры строку символов и обработать ее в соответствии со своим вариантом, используя функции.

4. Варианты

Одномерный массив

Двумерный массив

Строки

1

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

Задан упорядоченный по убыванию целочисленный массив Х, вставить в массив Х некоторое число Н, сохранив упорядоченность массива. Найти среднее арифметическое простых чисел в массиве после вставки числа и среднее геометрическое всех элементов массива.

Задана матрица натуральных чисел A(n,n). Все строки, где находится более двух простых чисел, обнулить. Найти среднее арифметическое элементов матрицы до и после обнуления. Вывести сообщение, сколько

строк было обнулено.

Дана матрица размера M × N и целое число K (1 ≤ K ≤ M). Перед строкой матрицы с номером K вставить строку из нулей.

Удалить все гласные буквы из строки.

Дана строка, изображающая арифметическое выражение вида «<цифра>±<цифра>±…±<цифра>», где на месте знака операции «±» находится символ «+» или «–» (например, «4+7–2–8»). Вывести значение данного выражения

2

Удалить из массива последнюю группу элементов, представляющих

собой знакочередующийся ряд. Найти максимальный и минимальный

элементы массива до и после удаления.

Задан массив Z(n) целых чисел. Удалить из массива наибольший и наименьший элементы. В преобразован-ном массиве найти среднее арифметическое семи наибольших элементов

Сформировать из некоторой матрицы A(n,n) верхнетреугольную матрицу В(n,n) (все элементы ниже главной диагонали нулевые),

нижнетреугольную матрицу С(n,n) (все элементы выше главной диагонали нулевые) и диагональную матрицу D(n,n)(все элементы нули, кроме главной диагонали).

Дана целочисленная матрица размера M × N. Найти элемент, являющийся максимальным в своей строке и минимальным в своем столбце. Если такой элемент отсутствует, то вывести 0.

Подсчитать количество слов в строке.

Дан символ C и строки S, S0. После каждого вхождения символа C в строку S вставить строку S0.

3

Удалить из массива целых чисел все двузначные элементы, являющиеся простыми числами. Найти среднее арифметическое элементов массива до и после удаления. Проверить, изменился ли максимальный элемент массива.

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

Проверить, является ли матрица A(n,n) диагональной (все элементы нули, кроме главной диагонали), единичной (все элементы нули, на главной диагонали только единицы) или нулевой (все элементы нули).

Элементы каждого столбца прямоугольной матрицы

упорядочить в порядке убывания.

Перевернуть каждое четное слово в строке.

Дана строка, содержащая по крайней мере один символ пробела. Вывести подстроку, расположенную между первым и вторым пробелом исходной строки. Если строка содержит только один пробел, то вывести пустую строку.

4

Определить порядковые номера и значения первого положительного и

последнего отрицательного элементов целочисленного массива X(n). Определить среднее арифметическое элементов массива, позиционно расположенных между найденными элементами. Предусмотреть случай, что массив может не содержать положительных или отрицательных элемен-тов. Удалить из массива все числа палиндромы.

Задан массив Z(m) целых чисел. Если массив является

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

из массива все простые числа. Вывести массив до и после преобразований

Поменять местами максимальный элемент матрицы F(k,p)в его первым элементом, а минимальный элемент – с последним. Найти количество положительных, отрицательных и нулевых элементов матрицы.

В матрице X(n,m) на место минимального элемента, если это двузначное число, записать сумму всех остальных элементов. Проверить, остался ли минимальный элемент двузначным числом

Удалить каждое четное слово из строки.

Дана строка, состоящая из русских слов, набранных заглавными буквами и разделенных пробелами (одним или несколькими). Преобразовать каждое слово в строке, заменив в нем все последующие вхождения его первой буквы на символ «.» (точка). Например, слово «МИНИМУМ» надо преобразовать в «МИНИ.У.». Количество пробелов между словами не изменять.

5

Вычислить среднее арифметическое элементов массива X=(x1,x2,…,xn),

расположенных между его минимальным и максималь-ным значениями. Если минимальный элемент размещается в массиве раньше максимального, то упорядочить массив на данном промежутке по

возрастанию его элементов, и наоборот, если минимальный элемент

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

Задан массив Х(n) целых чисел. Поменять местами в массиве последнее простое число и первое совершенное. Предусмотреть случай, что массив может не содержать простых и совершенных чисел. Удалить из массива все четные числа.

В матрице Р(n,m) найти строку с максимальной суммой элементов и поэлементно поменять ее с первой строкой.

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

Отсортировать слова в строке в лексикографическом порядке (по алфавиту).

Дана строка-предложение на русском языке. Подсчитать количество содержащихся в строке знаков препинания.

6

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

Задан массив Z(k) целых чисел. Записать все элементы массива Z в массив Y, записав числа в обратном порядке (например, 1234 запишется как 4321). Удалить из массива Z все простые числа. Сравнить

максимальные и мини-мальные элементы массивов

Задана матрица А(n,n). Определить максимальный элемент среди элементов матрицы, расположенных выше главной диагонали, и минимальный элемент среди тех, что находятся ниже главной диагонали. Если эти элементы равны, найти количество таких чисел в матрице.

Из матрицы А(k,l) сформировать вектор B(k), каждый элемент которого равен количеству положи-тельных элементов соот-ветствующей строки матрицы А, и вектор С(k), каждый элемент которого равен количеству отрицательных элементов соответствующей строки матрицы А..

Удалить из строки все слова, начинающиеся на гласную букву.

Удалить каждое четное слово из строки.

7

В массиве X=(x1,x2,…,xn) определить количество элементов, меньших сред-него арифметического значе-ния. Не упорядочивая массив, удалить из него элементы, расположенные между максимальным и минимальным.

Переписать элементы массива целых чисел X=(x1,x2,…,xn) в обратном порядке в массив Y = (y1,y2,…,yn). Вычислить количество простых элементов массива Y. Удалить их массива Y первое и последнее простые

числа.

Задана матрица А(n,m), в каждом столбце которой минимальный элемент необходимо заменить суммой положительных элементов этого же

столбца.

В матрице Х(n,n) найти отношение между максимальным и минимальным по модулям элементами. Предусмотреть случай, что минимальный по

модулю элемент может быть равен нулю. Найти сумму элементов, лежащих вне диагоналей матрицы.

Удалить из строки все слова, заканчивающиеся на гласную букву.

Перевернуть каждое четное слово в строке.

8

В массиве целых чисел Х(k) поменять местами первый и минимальный элементы. Удалить все простые элементы, стоящие после максимального элемента. Найти среднее арифмети-ческое элементов массива до и после удаления.

Задан массив Y(k) целых чисел. Определить в массиве количество простых двузначных чисел. Если таких чисел больше двух, удалить их из массива. Проверить, изменился ли максимальный элемент массива.

Сформировать вектор D = (d1, d2 …, dk), каждый элемент которого представляет собой среднее арифметическое значение элементов строк матрицы C(k,m), и вектор G = (g1, g2, …, gm) – каждый его элемент должен быть равен количеству отрицательных элементов соответствующего столбца матрицы C(k,m).

В матрице Х(n,m) поменять местами рядом стоящие строки, состоящие только из положительных элементов. Вывести сообщение, сколько раз строки менялись местами.

Удалить все гласные буквы из строки.

Подсчитать количество слов в строке.

9

Сформировать массив В=(b1,b2,…,bk), записав в него каждый второй элемент массива А = (a1,a2,…,an). Вычислить среднее арифметическое отрицатель-ных элементов массивов А и B. Из массива В удалить второй, пятый и шестой элементы (предусмотреть случай, что элементов может быть в массиве меньше)..

Задан массив Х(n) целых чисел. Удалить из массива все элементы, большие среднего арифметического значения. Определить в массиве количество простых и совершенных чисел до и после удаления.

Найти сумму элементов квадратной матрицы X(n,n), находящихся по периметру этой матрицы и сумму элементов на ее диагоналях. Если суммы равны, то каждый отрицательный элемент заменить модулем этого же элемента.

В матрице Y(m,m) найти максимальный элемент max1, находящийся на периметре матрицы, и максимальный элемент max2 вне периметра

матрицы.

Подсчитать количество слов в строке.

Удалить все гласные буквы из строки.

10

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

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

Определить номера строки и столбца максимального элемента прямоугольной матрицы A(n,m). Поменять местами первый и максималь-ный элементы матрицы. Подсчитать количество нулевых элементов матрицы и напечатать их индексы.

Дана вещественная матрица размерности n * m. По матрице получить логический вектор, присвоив его k-ому элементу значение True , если выполнено указанное условие и значение False иначе:

- все элементы k столбца нулевые;

- элементы k строки матрицы упорядочены по убыванию;

- k строка массива симметрична.

Перевернуть каждое четное слово в строке.

Определить сколько раз в строке встречается заданный символ.

11

В массиве X(n) после каждого отрицательного элемента вставить ноль. Определить, поменялось ли местоположение минимального элемента массива. Найти сумму четных и произведение нечетных элементов массива.

Дан целочисленный массив размера N, содержащий ровно два одинаковых элемента. Найти номера одинаковых элементов и вывести эти номера в порядке возрастания. Перед элементом массива с порядковым номером K вставить новый элемент с нулевым значением. Удалить из массива все элементы с нечетными номерами (1, 3, …). Условный оператор не исполь-зовать

Задана матрица целых чисел A(n,n). Найти два наибольших простых числа. Первое простое число заменить минимальным элементом матрицы, второе – максимальным элементом матрицы.

Дана вещественная матрица размерности n * m. Сформировать вектор b, в котором элементы вычисляются как:

- произведение элементов соответствующих строк;

- среднее арифметическое соответствующих столбцов;

- разность наибольших и наименьших элементов соответствующих строк;

- значения первых отрицательных элементов в столбце.

Удалить каждое четное слово из строки.

Удалить часть символьной строки, заключенной в скобки (вместе со скобками).

12

В целочисленный массив X(n) после каждого нечетного элемента вставить максимальный простой элемент этого же массива. Определить среднее арифметическое простых элементов массива до и после вставки.

Дан целочисленный массив размера N. Удалить из массива все элементы, встречающиеся менее трех раз, и вывести размер полученного массива и его содержимое. Переставить в обратном порядке элементы массива, расположенные между элементами AK и AL, включая эти элементы. Осуществить циклический сдвиг элементов массива вправо на одну позицию

Задана матрица A(n,m). Обнулить те строки, где находится наибольшее простое число. Вывести сообщение, если простых чисел нет.

Сформировать целочислен-ную матрицу размера M × N, у которой все элементы I-й строки имеют значение 10·I (I = 1, …, M). Для каждой строки матрицы найти сумму ее элементов. Поменять местами строки матрицы с номерами K1 и K2.

Отсортировать слова в строке в лексикографическом порядке (по алфавиту).

Из заданной символьной строки выбрать те символы, которые встречаются в ней только один раз, в том порядке, в котором они встречаются в тексте.

13

Определить максимальный элемент среди положительных нечетных элементов и минимальный среди положительных четных элементов

целочисленного массива X=(x1,x2,…,xn). Удалить из массива все совершенные числа, вывести сообщение, сколько элементов было удалено.

Дано целое число L (> 0) и целочисленный массив размера N. Заменить каждую серию массива, длина которой равна L, на один элемент с нулевым значением. Упорядочить его по возрастанию методом сортировки простым выбором. Продублировать в нем все четные числа.

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

Дана квадратная матрица A порядка M. Начиная с элемента A1,1, вывести ее элементы следующим образом («уголками»): все элементы первой строки; элементы последнего столбца, кроме первого (уже выведенного) элемента; оставшиеся элементы второй строки; оставшиеся элементы предпоследнего столбца и т. д.; последним выводится элемент AM,1. В каждом ее столбце найти количество элементов, больших среднего арифметического всех элементов этого столбца. Поменять местами верхнюю и нижнюю половины матрицы.

Удалить из строки все слова, начинающиеся на гласную букву.

Дана строка, содержащая текст. Найти длину самого короткого слова и самого длинного слова.

14

Дан массив вещественных чисел X=(x1,x2,..,xn). Записать элементы

заданного массива Х в массив Y следующим образом: в начальной части расположить положительные элементы в порядке возрастания, затем в

порядке убывания отрицательные элементы, нулевые элементы не

записывать. Оценить, как при этом изменилось положение максимального и минимального элементов массива.

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

Задана матрица A(n,n). Первый элемент каждого четного столбца

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

являющимися простыми числами.

Дана матрица размера M × N (M и N — четные числа). Поменять местами левую верхнюю и правую нижнюю четверти матрицы. Найти сумму элементов каждой ее диагонали, параллельной побочной. Вывести ее элементы в следующем по-рядке: первая строка слева направо, вторая строка справа налево, третья строка слева направо, четвертая строка справа налево и т. д.

Удалить из строки все слова, заканчивающиеся на гласную букву.

Дано число в двоичной системе счисления. Проверить правильность ввода этого числа (в его записи должны быть только символы 0 и 1). Если число введено неверно, повторить ввод. При правильном вводе перевести число в десятичную систему счисления

15

Записать каждый второй элемент целочисленного массива Х=(x1,x2,…,xn) подряд в массив Y=(y1,y2,…,yk). Определить количество простых чисел в каждом массиве. Вычислить среднее арифметическое всех элементов массивов X и Y.

Дан целочисленный массив A размера N. Назовем серией группу подряд идущих одинаковых элементов, а длиной серии — количество этих элементов (длина серии может быть равна 1). Сформировать два новых це-лочисленных массива B и C одинакового размера, записав в массив B дли-ны всех серий исходного массива, а в массив C — значения элементов, об-разующих эти серии.

В матрице Х(n,n) поменять местами элементы на главной и побочной диагоналях. Проверить, поменялось ли положение максимального элемента в каждой строке.

Дана целочисленная матрица размера M × N. Найти номер первой из ее строк, содержащих равное количество положительных и отрицательных элементов (нулевые элементы матрицы не учитываются). Если таких строк нет, то вывести 0. Поменять местами столбец с номером 1 и последний из столбцов, содержащих только положительные элементы. Если требуемых столбцов нет, то вывести матрицу без изменений. Обнулить элементы матрицы, лежащие одновременно ниже главной диагонали (включая эту диагональ) и ниже побочной диагонали (также включая эту диагональ). Условный оператор не использовать.

Удалить все гласные буквы из строки.

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

16

Задан массив Z(m) целых чисел. Определить, содержит ли массив серии из подряд стоящих простых чисел. Если да, то посчитать количество таких серий. Удалить из массива последнюю такую серию.

Дан целочисленный массив размера N. Утроить в нем вхождения всех нечетных чисел. Поменять местами первую серию массива и его серию с номером K. Если серий в массиве меньше K, то вывести массив без изменений. Удалить из массива все элементы, встречающиеся ровно четыре раза, и вывести размер полученного массива и его содержимое.

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

Дана квадратная матрица A порядка M. Повернуть ее на угол 180° (при этом элемент A1,1 поменяется местами с AM,M, элемент A1,2 — с AM,M–1 и т. д.). Вспомогательную матрицу не использовать. Упорядочить ее строки так, чтобы их минимальные элементы образовывали убывающую последовательность. Найти номера строки и столбца для элемента матрицы, наиболее близкого к среднему значению всех ее элементов.

Подсчитать количество слов в строке.

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

17

Задан массив Z(n) целых чисел. Найти максимальный элемент массива, и если это простое число – удалить все элементы, равные максимальному значению. Определить среднее арифметическое положи-тельных элементов массива после удаления. Упоря-дочить массив по убыванию модулей.

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

Задана матрица В(n,m). Определить количество столбцов, упорядоченных по возрастанию. Каждый второй столбец упорядочить по возрастанию и найти, на сколько увеличилось количество таких упорядоченных

столбцов.

Дана матрица размера M × N. Вывести ее элементы, расположенные в строках с четными номерами (2, 4, …). Вывод элементов производить по строкам, условный оператор не использовать. Для каждого столбца матрицы с четным номером (2, 4, …) найти сумму его элементов. Условный оператор не ис-пользовать. Поменять местами строки, содержащие минимальный и макси-мальный элементы матрицы.

Перевернуть каждое четное слово в строке.

В строке имеется точка с запятой. Подсчитать количество символов до точки с запятой и после нее.

18

Задан массив Y(k). Удалить из массива все элементы, равные

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

Дан массив размера N. Обнулить все его локальные максимумы (то есть числа, большие своих соседей). Осуществить сдвиг элементов массива вправо на K позиций. После элемента массива с порядковым номером В вставить новый элемент с нулевым зна-чением.

Задана матрица целых чисел A(n,n). Вывести номера столбцов, в которых находится более двух простых чисел. Найти сумму положительных элементов на периметре матрицы.

Дана матрица размера M × N. Поменять местами столбец с номером N и первый из столбцов, содержащих только отрицательные элементы. Если требуемых столбцов нет, то вывести матрицу без изменений. Преобразовать матрицу до квадратной, обнулить элементы матрицы, лежащие ниже главной диагонали. Найти количество ее строк, элементы которых упорядочены по возрастанию.

Удалить каждое четное слово из строки.

Дан текст, состоящий из предложений, разделяемых точками. Напишите программу, производящую следующее форматирование: после каждой точки в конце предложения должен стоять хотя бы один пробел; первое слово в предложении должно начинаться с прописной буквы.

19

Задан массив Х целых чисел. Если массив не является

знакочередующимся, то удалить из массива все положительные числа, в противном случае – удалить отрицательные элементы. После удаления определить количество нечетных чисел.

Дан массив размера N. Вставить элемент с нулевым значением перед минимальным и после максимального элемента массива. Заменить каждый элемент массива на среднее арифметическое этого элемента и его соседей. Преобразовать массив, увеличив каждую его серию на один элемент.

Задана матрица A(n,n). Зеркально отразить ее относительно главной

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

Дана квадратная матрица A порядка M. Найти среднее арифметическое элементов каждой ее диагонали, параллельной главной Поменять знак всех локальных максимумов данной матрицы на противоположный. Найти элемент, являющийся максимальным в своей строке и минимальным в своем столбце. Если такой элемент отсутствует, то вывести 0.

Отсортировать слова в строке в лексикографическом порядке (по алфавиту).

Дан текст. Напишите программу, определяющую процентное отношение строчных и прописных букв к общему числу символов в нем.

20

Задан массив Z(m) целых чисел. Упорядочить массив в порядке

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

Дан целочисленный массив размера N. Вставить после каждой его серии элемент с нулевым значением. Продублировать в нем все четные числа. Осуществить циклический сдвиг элемен-тов массива влево на K позиций

Определить сумму и количество простых чисел расположенных вне диагоналей матрицы B(n,n). Если нет простых чисел, то поменять местами элементы главной и побочной диагоналей.

Дана матрица размера M × N. Элемент матрицы называется ее ло-кальным минимумом, если он меньше всех окружающих его элементов. Заменить все локальные минимумы данной матрицы на нули. Найти количество ее строк, все элементы которых различны. Вывести ее элементы следующим образом («уголками»): все элементы первого столбца; элементы последней строки, кроме первого (уже выведенного) элемента; оставшиеся элементы второго столбца; оставшиеся элементы предпоследней строки и т. д.;

Удалить из строки все слова, начинающиеся на гласную букву.

Строка, содержащая произвольный русский текст состоит не более чем из 200 символов. Написать , какие буквы и сколько раз встречаются в этом тексте. Ответ должен приводиться к грамматически правильной форме, например a – 25, к – 3 раза и т.д.

21

Дан массив вещественных чисел Z(k). Удалить из массива первую группу элементов, представляющих собой знакочередующийся ряд. Найти

среднее арифметическое положительных элементов массива до и после удаления.

Дан целочисленный массив размера N (> 2). Удалить из массива все элементы с нечетными номерами (1, 3, …). Удалить из массива элемент с порядковым номером K. После элемента массива с номером В вставить M новых эле-ментов с нулевыми значениями.

Задан упорядоченный по убыванию целочисленный массив Х, вставить в массив Х некоторое число Н, сохранив упорядоченность массива. Найти среднее арифметическое простых чисел в массиве после вставки числа и среднее геомет-рическое всех элементов массива.

Дана квадратная матрица A порядка M (M — нечетное число). Начиная с элемента A0,0 и перемещаясь по часовой стрелке, вывести все ее элементы по спирали: первая строка, последний столбец, последняя строка в обратном порядке, первый столбец в обратном порядке, оставшиеся элементы второй строки и т. д.; последним выводится центральный элемент матрицы. В каждом ее столбце найти количество элементов, больших среднего арифметического всех элементов этого столбца. Зеркально отразить ее эле-менты относительно побочной диагонали.

Удалить из строки все слова, заканчивающиеся на гласную букву.

Дана строка, содержащая текст. Заменить все точки в строке на многоточие.

5. Методические указания

1. Формирование, печать и обработку массивов и строк оформить в виде функции. Массивы передавать как параметры функций.

2. Реализовать массивы как псевдодинамические, их размерности передавать как параметры функций.

3. Формирование массивов выполнить с использованием ДСЧ (датчик случайных чисел). В массивы записывать и положительные, и отрицательные числа.

4. Ввод/вывод строк организовать с помощью функций:

  •  char* gets(char*s)
  •  int puts(char *s)

5. Для обработки строк использовать стандартные функции из библиотечного файла <string.h>

6. Функция main() должна содержать только описание массивов/строк и вызовы функций для формирования, печати и обработки массивов/строк.

6. Содержание отчета

1. Постановка задачи (общая и для конкретного варианта).

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

3. Определение функции main().

4. Результаты тестов.




1. Вариант 1 Статистически жевательную эффективность зубов можно оценить следующим методом Гнатодина
2. умелец изобретатель мудрец знаток древнегреческие платные преподаватели красноречия представители о.
3. Воскресенье
4. Організація реабілітаційної роботи в школах соціальної реабілітації
5. Мобильная связь и системы беспроводного доступа Группа- 439Д94РРТ; 445КД94РРТ Семестр VII Параметр
6. К вузам относятся университеты политехнические институты индустриальные институты отраслевые институт
7. Творчество мастеров высокого итальянского Возрождения (Леонардо да Винчи)
8. ..решти не треба.
9. первых определенными видами продуктов и услуг непроизводственного потребления удовлетворяющими личные и
10. экономического и политического развития страны 1938 1942 годы определил ХУIII съезд ВКПб проходивший в марте 19
11. Реферат Вклад Даниила Андреева в развитие биоэтики
12. на тему- Тушение пожаров при неблагоприятных климатических условиях при угрозе взрыва и теплового воздейст
13. реферат дисертації на здобуття наукового ступеня кандидата технічних наук Київ 2006 Ди
14. Влияние биодобавок на продуктивность японского перепела
15. РЕФЕРАТ Курсовая работа- 53 с
16. во детей Инвалидность Сирота Из многодетно семьи Малообес
17. а общественной жизни общины семьи материальной и духовной культуры.
18. Тема V. Экологические права и обязанности
19. темами Размещение производительных сил ~ динамическое состояние характеризующее распределение произво
20. Аудит предприятий, пользующихся упрощенной системой налогообложения