Индивидуальное задание к лабораторной работе
Составить программу для обработки массива согласно индивидуальному заданию приведенному в таблице 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 Подготовиться к защите лабораторной работы, изучив контрольные вопросы по данной теме.