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

 

Тема: Организация и обработка данных при помощи массивов

 

Массив - это n-мерная совокупность однотипных элементов. Данные объединяют в массивы, если необходимо выполнить одни и те же действия над определенным количеством однотипных значений. Массивы объявляются следующим образом:

float a[10]; //одномерный массив, состоящий из 10 элементов, каждый из которых вещественного типа

или

int b[3][3]; //двухмерный массив (матрица 3x3} состоящий из элементов целочисленного типа

Обращение к элементу массива по ходу выполнения программы формируется в виде имени массива и списка индексов в квадратных скобках:

a[i] - в первом случае;

b[i][j] - во втором случае.

Ввод-вывод и обработку элементов массивов обычно производят при помощи циклов. Если мы имеем дело с двухмерными массивами, то необходимо использовать вложенные циклы (задача №4b).

математический алгоритмизация программа циклический

Задача 4a

Сформировать одномерный массив, состоящий из N целочисленных элементов. После чего:

Найти произведение всех элементов массива, удовлетворяющих условию c<a[I]<d

 

#include <stdio.h>

#include <conio.h>main()

{ const n=7;i,c,d,k=0,pr=1;("c="); scanf("%d",&c);("d="); scanf("%d",&d);a[n];(i=1;i<=n;i++)

{ printf("a[%d]=",i); scanf("%d",&a[i]);(a[i]>c && a[i]<d) {k++; pr*=a[i];}

}

if (k==0) printf("чисел, удовлетворяющих условию не было!");

else printf("pr=%d",pr);

getch();

}

 

Еще пример:

Сформировать одномерный массив, состоящий из N целочисленных элементов. После чего: найти количество четных и количество нечетных элементов в массиве.

 

#include <stdio.h>

#include <conio.h>main()

{ const n=7;i,ch=0,nch=0;a[n];(i=1;i<=n;i++)

{ printf("a[%d]=",i); scanf("%d",&a[i]);(a[i]%2==0) ch++; else nch++;

}("ch=%d nch=%d",ch,nch);

getch();

}

 

Сформировать одномерный массив, состоящий из N целочисленных элементов. После чего:

 

№ вар Задание № вар Задание
1 Найти, сколько элементов массива удовлетворяют условию c<=a[I]<=d 16 Найти произведение кубов всех элементов массива, удовлетворяющих условию c<=a[I]<=d
2 Найти произведение элементов массива, удовлетворяющих условию c<=a[I]<=d 17 Найти произведение последних L элементов массива
3 Найти, сколько отрицательных элементов удовлетворяют условию c<=a[I]<=d 18 Найти произведение первых L элементов массива
4 Найти, сколько положительных элементов удовлетворяют условию c<=a[I]<=d 19 Найти произведение отрицательных элементов массива, удовлетворяющих условию c<=a[I]<=d
5 Найти сумму кубов всех отрицательных элементов массива 20 Найти произведение положительных элементов массива, удовлетворяющих условию c<=a[I]<=d
6 Найти сумму кубов всех положительных элементов массива 21 Найти сумму отрицательных элементов массива, удовлетворяющих условию c<=a[I]<=d
7 Найти сумму квадратов всех отрицательных элементов массива 22 Найти сумму положительных элементов массива, удовлетворяющих условию c<=a[I]<=d
8 Найти сумму квадратов всех положительных элементов массива 23 Найти произведение кубов всех отрицательных элементов массива
9 Найти сумму кубов всех элементов массива, удовлетворяющих условию c<=a[I]<=d 24 Найти произведение кубов всех положительных элементов массива
10 Найти сумму квадратов всех элементов массива, удовлетворяющих условию c<=a[I]<=d 25 Найти произведение квадратов всех отрицательных элементов массива
11 Найти, сколько положительных, отрицательных и нулевых элементов в массиве 26 Найти произведение квадратов всех положительных элементов массива
12 Найти произведение квадратов всех элементов массива, удовлетворяющих условию c<=a[I]<=d 27 Найти произведение кубов всех элементов массива, удовлетворяющих условию c<=a[I]<=d
13 Найти, сколько четных и нечетных элементов в массиве 28 Найти произведение квадратов всех нечетных элементов массива
14 Найти произведение квадратов всех четных элементов массива 29 Найти, сколько четныхэлементов удовлетворяют условию c<=a[I]<=d
15 Найти произведение квадратов всех элементов массива, кратных 3 30 Найти произведение всех нечетных элементов массива, удовлетворяющих условию c<=a[I]<=d

 

Заполнение массива случайными числами

Для инициализации генератора случайных чисел служит функция randomize();

Это функция содержится в библиотеке <stdlib.h>, которую необходимо подключить в разделе #include.

Функция random возвращает случайное число в заданном диапазоне.

Например, присвоить переменной x случайное число в диапазоне от А до В.

 

х=A+random(B-A+1)

 

Случайное число в диапазоне от 0 до 99:

 

х=random(100)

 


 

Задача 4b

Сформировать двухмерный массив, состоящий из N x N элементов (заполнить случайными числами в диапазоне от 10 до 100). После чего: найти сумму элементов столбца, в котором расположен минимальный элемент матрицы.

 

#include <stdio.h>

#include <conio.h>

#include <stdlib.h>main()

{ const n=7;i,j,k=0,sum=0,min;a[n][n];();(i=0;i<n;i++)

{(j=0;j<n;j++)

{[i][j]=10+random(91);("%5d",a[i][j]);

}

printf("\n"); //переход на другую строку

}=a[1][1];(i=0;i<n;i++)(j=0;j<n;j++)

if (min>a[i][j])

{min=a[i][j]; k=j;}(i=0,i<n,i++)+=a[i][k];("min=%d k=%d\n",min,k);("sum=%d",sum);();

}

 

Еще пример:

Сформировать двухмерный массив, состоящий из N x N элементов (заполнить случайными числами в диапазоне от 10 до 100). После чего: сформировать одномерный массив из сумм минимальных и максимальных значений элементов строк.

 

#include <stdio.h>

#include <conio.h>

#include <stdlib.h>main()

{ const n=3;i,j,min,max;a[n][n];mas[n];();(i=0;i<n;i++)

{(j=0;j<n;j++) {[i][j]=10+random(91);("%4d",a[i][j]);

}("\n");

}(i=0;i<n;i++)

{

min=a[i][0]; max=a[i][0];(j=1;j<n;j++)

{(min>a[i][j])min=a[i][j];(max<a[i][j])max=a[i][j];

}[i]=min+max;

}(i=0;i<n;i++)("%5d",mas[i]);();

}

 

Сформировать двухмерный массив, состоящий из N x N элементов (заполнить случайными числами в произвольном диапазоне). После чего:

 

№ вар Задание № вар Задание
1 Получить новую матрицу путем деления всех элементов данной матрицы на ее наибольший по модулю элемент 16 Сформировать одномерный массив из сумм элементов столбцов
2 Получить новую матрицу путем деления всех элементов данной матрицы на ее наименьший по модулю элемент 17 Сформировать одномерный массив из произведений элементов строк
3 Получить новую матрицу путем умножения всех элементов данной матрицы на ее наибольший по модулю элемент 18 Сформировать одномерный массив из произведений элементов столбцов
4 Получить новую матрицу путем умножения всех элементов данной матрицы на ее наименьший по модулю элемент 19 Сформировать одномерный массив из наименьших значений элементов строк
5 Получить новую матрицу путем сложения всех элементов данной матрицы с ее наибольшим по модулю элементом 20 Сформировать одномерный массив из наибольших значений элементов строк
6 Получить новую матрицу путем сложения всех элементов данной матрицы с ее наименьшим по модулю элементом 21 Сформировать одномерный массив из наименьших значений элементов столбцов
7 Получить новую матрицу путем вычитания всех элементов данной матрицы из ее наибольшего по модулю элемента 22 Сформировать одномерный массив из наибольших значений элементов столбцов
8 Получить новую матрицу путем вычитания всех элементов данной матрицы из ее наименьшего по модулю элемента 23 Сформировать одномерный массив из разницы наибольших и наименьших значений элементов столбцов
9 Заменить нулями все элементы, расположенные на главной диагонали и выше нее. 24 Сформировать одномерный массив из разницы наибольших и наименьших значений элементов строк
10 Заменить нулями все элементы, расположенные на главной диагонали и ниже нее. 25 Сформировать одномерный массив из суммы наибольших и наименьших значений элементов столбцов
11 Заменить нулями все элементы, расположенные на главной диагонали. 26 Сформировать одномерный массив из суммы наибольших и наименьших значений элементов строк
12 Сформировать одномерный массив из сумм элементов строк 27 Найти сумму элементов строки, в которой расположен максимальный элемент матрицы
13 Найти максимальное значение элементов этого массива, вычислить среднее арифметическое строки с этим элементом, указав номер данной строки в массиве. 28 Найти минимальное значение элемента этого массива, вычислить среднее арифметическое столбца с этим элементом, указав номер данного столбца в массиве.
14 Найти среднее арифметическое элементов каждой нечетной строки этого массива. 29 Найти среднее арифметическое элементов каждой четной строки этого массива.
15 Найти среднее арифметическое элементов каждого из нечетных столбцов этого массива. 30 Найти среднее арифметическое элементов каждого из четных столбцов этого массива.

 

Задача 4c

Сформировать одномерный массив, состоящий из 5 элементов и отсортировать его по возрастанию.

 

// Сортировка массива методом прямого выбора

#include <stdio.h>

#include <conio.h>

#define SZ 5 // размер массива main ()

{

int a[SZ]; // объявляем массив, состоящий из целочисленных элементов

int i,min,j,buf,k;

//формируем одномерный массив

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

{printf("a[%d]=",i); scanf("%d",&a[i]);

}

printf("\n"); //переход на другую строку

for (i = 0; i < SZ-1; i++)

{ // поиск минимального эл-та

// в части массива от а[1] до последнего эл-та

min = i; //запоминаем номер минимального элемента

for (j = i+1; j < SZ; j++)(a[j] < a[min]) min = j; // поменяем местами a[min] и a[i]= a[i]; a [i] = a [min]; a[min] = buf;

}(k =0; k < SZ; k++)("%i ", a[k]); printf("\n");();

}

 

Еще пример:

Заполнить массив, состоящий из 12 элементов случайными числами в диапазоне от -100 до100. Сортировать их по убыванию и вывести на экран по 4 элемента в строке.

 

// Сортировка массива методом прямого выбора

#include <stdio.h>

#include <conio.h>

#include <stdlib.h>

#define SZ 12 // размер массиваmain ()

{();a[SZ];i,max,j,buf,k;(i = 0; i < SZ; i++)

{[i]=-100+random(201);("%5d",a[i]);

}("\n");(i = 0; i < SZ-1; i++)

{= i;(j = i+1; j < SZ; j++)(a[j] > a[max]) max = j; // поменяем местами a[min] и a[i]= a[i]; a [i] = a [max]; a[max] = buf;

}(k =0; k < SZ; k++)

{("%i ", a[k]);((k+1)%4==0) printf("\n");

}();

}

 

Еще пример:

Ввести последовательность целых чисел (завершение ввода - «ноль») и напечатать их в порядке убывания по 5 элементов в каждой строке. Недостающие в строке элементы (если такие имеются) заменить единицами.

#include <stdio.h>

#include <conio.h>

#define SZ 100

void main ()

{a[SZ];

int i=-1,max,j,buf,k;

//формируем массив

do

{++; printf("a[%d]=",i); scanf("%d",&a[i]);

}

while (a[i]!=0); //условие окончания формирования массива - ввод нуля

k=i; //количество элементов в массиве

printf("\n");

//сортировка элементов

for (i = 0; i < k-1; i++)

{= i;(j = i+1; j < k; j++)(a[j] > a[max]) max = j;= a[i]; a [i] = a [max]; a[max] = buf;

}

//вывод отсортированных элементов по 5 в строке

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

{("%5d ", a[i]); ((i+1)%5==0) printf("\n");

}

//заполнение оставшихся позиций единицами

for (i=1;i<=(k/5+1)*5-k;i++)(" %d",1);//четыре пробела перед знаком %();

}

 

№ вар Задание № вар Задание
1 Заполнить одномерный массив, состоящий из 20 элементов случайными числами в диапазоне от 0 до 100. Сортировать полученный массив по убыванию и вывести на экран по 5 элементов в строке 16 Ввести последовательность целых чисел в диапазоне от 0 до 150 (завершение ввода - «Число вне диапазона») и напечатать их в порядке возрастания по 3 элемента в каждой строке. Недостающие в строке элементы (если такие имеются) заменить максимальным значением.
2 Ввести последовательность целых чисел (завершение ввода -«ноль») и напечатать их в порядке убывания по 3 элемента в каждой строке. Недостающие в строке элементы (если такие имеются) заменить нулями. 17 Три одномерных массива состоят из N=5 произвольных действительных компонентов каждый. Разместить минимальные компоненты этих массивов в порядке возрастания.
3 Три одномерных массива состоят из N=7 произвольных действительных компонентов каждый. Разместить максимальные компоненты этих массивов в порядке убывания. 18 Заполнить одномерный массив, состоящий из 10 элементов случайными числами в диапазоне от 0 до 100. Сортировать полученный массив по возрастанию и вывести на экран по 3 элемента в строке. Недостающие в строке элементы заменить минимальным значением.
4 Заполнить одномерный массив, состоящий из 20 элементов, случайными числами в диапазоне от 0 до 500. Сформировать другой массив, состоящий из элементов исходного, кратных 7. Сортировать полученный массив по убыванию. 19 Заполнить одномерный массив, состоящий из 50 элементов, случайными числами в диапазоне от 0 до 1000. Сформировать другой массив, состоящий из элементов исходного, являющихся четными числами. Сортировать полученный массив по возрастанию.
5 Пять одномерных массива состоят из N=10 произвольных действительных компонентов каждый. Разместить средние арифметические значения элементов этих массивов в порядке возрастания. 20 Заполнить двухмерный массив, состоящий из 5x5 элементов, случайными числами в диапазоне от 0 до 100. Сформировать одномерный массив, состоящий из сумм строк исходного и сортировать его по убыванию.
6 Заполнить двухмерный массив, состоящий из 5x5 элементов, случайными числами в диапазоне от 0 до 100. Сформировать одномерный массив, состоящий из произведений столбцов исходного и сортировать его по возрастанию. 21 Заполнить одномерный массив, состоящий из 50 элементов, случайными числами в диапазоне от 0 до 1000. Сформировать другой массив, состоящий из элементов исходного, кратных 7. Сортировать полученный массив по возрастанию.
7 Даны два двухмерных массива (3*3). Получить одномерный массив, элементы которого будут являться суммой соответствующих элементов исходного массива. Сортировать массив по убыванию 22 Заполнить двухмерный массив, состоящий из 5x5 элементов, случайными числами в диапазоне от 0 до 100. Сформировать одномерный массив, состоящий из сумм столбцов исходного и сортировать его по убыванию.
8 Даны два двухмерных массива (3*3). Получить одномерный массив, элементы которого будут являться произведением соответствующих элементов исходного массива. Сортировать массив по возрастанию. 23 Заполнить двухмерный массив, состоящий из 5x5 элементов, случайными числами в диапазоне от 0 до 100. Сортировать массив по возрастанию и вывести по строкам.
9 Заполнить двухмерный массив, состоящий из 5x5 элементов, случайными числами в диапазоне от 0 до 100. Сформировать одномерный массив, состоящий из минимальных элементов строк исходного и сортировать его по убыванию. 24 Ввести последовательность целых чисел в диапазоне от -100 до 100 (завершение ввода -«Число вне диапазона») и напечатать их в порядке возрастания по 4 элемента в каждой строке. Недостающие в строке элементы (если такие имеются) заменить значением модуля минимального числа.
10 Заполнить двухмерный массив, состоящий из 5x5 элементов, случайными числами в диапазоне от 0 до 100. Сформировать одномерный массив, состоящий из элементов исходного, расположенных ниже главной диагонали и сортировать его по убыванию. 25 Заполнить двухмерный массив, состоящий из 4x3 элементов, случайными числами в диапазоне от 0 до 100. Сформировать двухмерный массив 6x2, состоящий из элементов исходного, расположенных по убыванию.
11 Заполнить одномерный массив, состоящий из 50 элементов, случайными числами в диапазоне от 0 до 1000. Сформировать другой массив, состоящий из четных элементов исходного. Сортировать полученный массив по возрастанию. 26 Ввести последовательность целых чисел в диапазоне от 0 до 150 (завершение ввода -«Число вне диапазона») и напечатать их в порядке возрастания по 3 элемента в каждой строке. Недостающие в строке элементы (если такие имеются) заменить значением среднего арифметического элементов массива.
12 Три одномерных массива состоят из N=10 произвольных действительных компонентов каждый. Разместить модули разности нечетных элементов этих массивов в порядке убывания. 27 Заполнить двухмерный массив, состоящий из 5x5 элементов, случайными числами в диапазоне от 0 до 100. Сформировать одномерный массив, состоящий из элементов исходного, расположенных вышеглавной диагонали и сортировать его по возрастанию.
13 Ввести последовательность целых чисел (завершение ввода - «ноль») и напечатать их в порядке возрастания по 4 элемента в каждой строке. Недостающие в строке элементы (если такие имеются) заменить единицей. 28 Три одномерных массива состоят из N=10 произвольных действительных компонентов каждый. Разместить суммы четных элементов этих массивов в порядке возрастания.
14 Заполнить одномерный массив, состоящий из 13 элементов случайными числами в диапазоне от 0 до 100. Сортировать полученный массив по убыванию и вывести на экран по 3 элемента в строке. Недостающие в строке элементы заменить суммой отрицательных элементов массива. 29 Заполнить одномерный массив, состоящий из 20 элементов, случайными числами в диапазоне от 0 до 500. Сформировать другой массив, состоящий из элементов исходного, кратных 3. Сортировать полученный массив по убыванию.
15 Ввести последовательность целых чисел (завершение ввода -«ноль»), вычесть из них наименьшее и напечатать их в порядке возрастания по 5 элементов в каждой строке. Недостающие в строке элементы (если такие имеются) заменить нулем. 30 Ввести последовательность целых чисел (завершение ввода -«ноль»), прибавить к ним наибольшее и напечатать их в порядке возрастания по 4 элемента в каждой строке. Недостающие в строке элементы (если такие имеются) заменить единицей.

 



Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: