Индивидуальное задание к лабораторной работе

Составить программу для обработки массива согласно индивидуальному заданию приведенному в таблице 22

Таблица 22 - индивидуальное задание

Вар. Условие задачи
Найти сумму четных чисел массива
Вычислить произведение отрицательных чисел массива
Определить количество нечетных чисел массива
Найти сумму отрицательных чисел массива
Определить количество отрицательных чисел массива
Вычислить произведение положительных чисел массива
Найти сумму положительных чисел массива
Определить количество четных чисел массива
Вычислить произведение четных чисел массива
Найти сумму нечетных чисел массива
Определить количество кратных 3 чисел массива
Вычислить произведение нечетных чисел массива
Найти сумму кратных 3 чисел массива
Определить количество не кратных 3 чисел массива
Вычислить произведение кратных 3 чисел массива
Найти сумму не кратных 3 чисел массива
Определить количество кратных 4 чисел массива
Вычислить произведение не кратных 3 чисел массива
Найти сумму кратных 4 чисел массива
Определить количество не кратных 4 чисел массива
Вычислить произведение кратных 4 чисел массива
Найти сумму не кратных 4 чисел массива
Определить количество кратных 5 чисел массива
Вычислить произведение не кратных 4 чисел массива
Найти сумму кратных 5 чисел массива
Вычислить среднее арифметическое положительных четных элементов массива
Найти среднее геометрическое отрицательных нечетных элементов массива
Найти произведение отрицательных не кратных пяти элементов массива
Найти среднее арифметическое элементов массива, находящихся в интервале [-10,20]
Найти среднее геометрическое элементов массива, находящихся в интервале [5,20]

Контрольные вопросы для подготовки и самостоятельной работы

1 С какого числа начинается индексация массивов в языке С?

2 Как объявляется 1-но мерный массив?

3 Какие типы языка С можно и нельзя указывать в качестве типа при объявлении массива?

4 В каких случаях размерность массива при объявлении можно не указывать?

5 Какой тип имеет имя массива?

6 Как осуществляется инициализация элементов массива?

7 Как можно инициализировать массив с элементами типа char?

8 Можно ли использовать средство typedef для объявления типа “массив”?

9 Какие альтернативные формы записи элементов массива можно использовать? Приведите примеры.

10 Каковы правила использования индексных выражений?

11 Существуют ли операции работы с массивами?

12 Какие классы памяти можно использовать при объявлении массивов?

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

Формирование рабочих массивов с помощью
операций селекции исходного массива

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

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

Смотри теоретические сведения по предыдущей работе.

Пример 18

/* Разработал Петров Ю.В.

Объявить массивы заданной размерности, выполнить их

инициализацию с применением функции random() и явно.

Получить доступ к элементам массивов с использованием

операторов организации цикла. Переписать положительные

элементы массива x[1],x[2],...,x[N] в массив y[t], а

отрицательные - в массив z[p]. Элементы в массивах y[t]

и z[p] располагать подряд, элементы массива y1[t]

рассчитать для положительных x[i] по формуле

y1[t]=y1[t]+2*exp(b*y[t]-y[t]*y[t]),где b=N/5 */

#include <stdlib.h>

#include <stdio.h>

#include <conio.h>

#include <math.h>

# define N 20

main()

{ clrscr();

randomize();

int i,t=0,p=0,b=N/5;

int x[N],y[N],z[N]; //Объявление одномерного массива (вектора)

float y1[N]={2.3,3.4,4.0,5.2,6.6,7.9,8.34,9.8,10.4,11.2,\

10.1,9.9,8.7,7.5}; //Инициализация первых 14, остальные -0

printf("\nВывод элементов исходного массива y1[ ]\n");

for(i=0;i<N;i++)

{printf(" y1[%2d]=%4.1f",i+1,y1[i]);

if ((i+1)%5==0) printf("\n");

}

printf("\nИнициализация одномерного массива x[N]\n");

for(i=0;i<N;i++)

{ x[i]=random(40)-20;

printf(" x[%2d]=%2d ",i+1,x[i]); //Вывод элементов

if ((i+1)%5==0) printf("\n"); //массива x[ ]

if (x[i]>=0) //Выбор положительных значений

{ y[t]=x[i]; //Расчет элементов массива y1[ ]

y1[t]=y1[t]+2*exp(b*y[t]-y[t]*y[t]); t++;

}

else {z[p]=x[i]; p++;} //Выбор отрицательных значений

}

printf("\nВывод элементов массива y[ ]>0\n");

i=0;

while ( i<t )

{ printf(" y[%2d]=%2d ",i+1,y[i]);

if ((i+1)%5==0) printf("\n");

i++;

}

printf("\n");

printf("\nВывод элементов массива y1[ ] после расчета\n");

i=0;

do

{ printf(" y1[%2d]=%3.2f",i+1,y1[i]);

if ((i+1)%5==0) printf("\n");

i++;

} while ( i<t );

printf("\n");

printf("\nВывод элементов массива z[ ]<0\n");

for(i=0;i<p;i++)

{ printf(" z[%2d]=%2d ",i+1,z[i]);

if ((i+1)%5==0) printf("\n");

}

getch();

return 1;

}

/* Вывод элементов исходного массива y1[ ]

y1[ 1]= 2.3 y1[ 2]= 3.4 y1[ 3]= 4.0 y1[ 4]= 5.2 y1[ 5]= 6.6

y1[ 6]= 7.9 y1[ 7]= 8.3 y1[ 8]= 9.8 y1[ 9]=10.4 y1[10]=11.2

y1[11]=10.1 y1[12]= 9.9 y1[13]= 8.7 y1[14]= 7.5 y1[15]= 0.0

y1[16]= 0.0 y1[17]= 0.0 y1[18]= 0.0 y1[19]= 0.0 y1[20]= 0.0

Инициализация одномерного массива x[N]

x[ 1]= 8 x[ 2]= 10 x[ 3]=- 7 x[ 4]= 13 x[ 5]=- 1

x[ 6]=-14 x[ 7]= 5 x[ 8]= 17 x[ 9]=-14 x[10]=-19

x[11]= 13 x[12]= 8 x[13]=-10 x[14]=-16 x[15]= 5

x[16]= 9 x[17]=-11 x[18]=-12 x[19]=-16 x[20]=- 3

Вывод элементов массива y[ ]>0

y[1]= 8 y[2]=10 y[3]=13 y[4]= 5 y[5]=17

y[6]=13 y[7]= 8 y[8]= 5 y[9]= 9

Вывод элементов массива y1[ ] после расчета

y1[1]=2.30 y1[2]=3.40 y1[3]=4.00 y1[4]=5.21 y1[5]=6.60

y1[6]=7.90 y1[7]=8.34 y1[8]=9.81 y1[9]=10.40

Вывод элементов массива z[ ]<0

z[ 1]=- 7 z[ 2]=- 1 z[ 3]=-14 z[ 4]=-14 z[ 5]=-19

z[ 6]=-10 z[ 7]=-16 z[ 8]=-11 z[ 9]=-12 z[10]=-16

z[11]=- 3 */

Ход работы

1 Изучить теоретические сведения

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

3 Разработать программу, набрать и отладить программу на компьютере.

4 Изучить работу операторов.

5 Получить результаты.

6 Оформить отчет.

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

Наши рекомендации