Главная

Популярная публикация

Научная публикация

Случайная публикация

Обратная связь

ТОР 5 статей:

Методические подходы к анализу финансового состояния предприятия

Проблема периодизации русской литературы ХХ века. Краткая характеристика второй половины ХХ века

Ценовые и неценовые факторы

Характеристика шлифовальных кругов и ее маркировка

Служебные части речи. Предлог. Союз. Частицы

КАТЕГОРИИ:






Перебор массива по одному элементу




Элементы можно перебирать:

1) Слева направо с шагом 1, используя цикл с параметром

for(int I=0;I<n;I++){обработка a[I];}

2) Слева направо с шагом отличным от 1, используя цикл с параметром

for (int I=0;I<n;I+=step){обработка a[I];}

3) Справа налево с шагом 1, используя цикл с параметром

for(int I=n-1;I>=0;I--){обработка a[I];}

4) Справа налево с шагом отличным от 1, используя цикл с параметром

for (int I=n-1;I>=0;I-=step){обработка a[I];}

 

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

Датчик случайных чисел (ДСЧ) – это программа, которая формирует псевдослучайное число. Простейший ДСЧ работает следующим образом:

1) Берется большое число К и произвольное .

2) Формируются числа х1=дробная_часть(х0*К); х2=дробная_часть(х1*К); и т. д.

В результате получается последовательность чисел х0, х1, х2,... беспорядочно разбросанных по отрезку от 0 до 1. Их можно считать случайными, а точнее псевдослучайными. Реальные ДСЧ реализуют более сложную функцию f(x).

В Си++ есть функция

int rand() – возвращает псевдослучайное число из диапазона 0..RAND_MAX=32767, описание функции находится в файле <stdlib.h>.

Пример формирования и печати массива с помощью ДСЧ:

#include<iostream.h>

#include<stdlib.h>

void main()

{

int a[100];

int n;

cout<<”\nEnter the size of array:”;cin>>n;

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

{a[I]=rand()%100-50;

cout<<a[I]<<” “;

}

}

В этой программе используется перебор массива по одному элементу слева направо с шагом 1.

Задача 1

Найти максимальный элемент массива.

#include<iostream.h>

#include<stdlib.h>

void main()

{

int a[100];

int n;

cout<<”\nEnter the size of array:”;cin>>n;

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

{a[I]=rand()%100-50;

cout<<a[I]<<” “;

}

int max=a[0];

for(I=1;I<n;I++)

if (a[I]>max)max=a[I];

cout<<”\nMax=”<<max”;

}

В этой программе также используется перебор массива по одному элементу слева направо с шагом 1.

Задача 2

Найти сумму элементов массива с четными индексами.

#include<iostream.h> #include<stdlib.h> void main() { int a[100]; int n; cout<<”\nEnter the size of array:”;cin>>n; for(int I=0;I<n;I++) {a[I]=rand()%100-50; cout<<a[I]<<” “; } int Sum=0; for(I=0;I<n;I+=2) Sum+=a[I];//элементы с индексами 0, 2, 4… cout<<”\nSum=”<<Sum”; }      
 
 

 


Ввод массива

//Второй способ for(I=0;I<n;I++) if(I%2==0)Sum+=a[I]; ];//элементы с индексами 0, 2, 4… cout<<”\nSum=”<<Sum”;  

 

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

#include<iostream.h>

#include<stdlib.h>

void main()

{

int a[100];

int n;

cout<<”\nEnter the size of array:”;cin>>n;

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

{a[I]=rand()%100-50;

cout<<a[I]<<” “;

}

int Sum=0;

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

Sum+=a[I];

Cout<<”Среднее арифметическое=”<<Sum/n”;

}

Задачи 2

Обмен элементов внутри массива выполняется с использованием вспомогательной переменной:
int R=a[I];a[I]=a[J]; a[J]:=R; // обмен a[I] и a[J] элементов массива.

Пример1.

Перевернуть массив.

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

for(int i=0,j=n-1;i<j;i++,j--)

{int r=a[i];

a[i]=a[j];

a[j]=r;}

//вывод массива

Пример 2.

Поменять местами пары элементов в массиве: 1и2, 3 и 4, 5 и 6 и т. д.

for(int i=0;i<n-1;i+=2)

{int r=a[i];

a[i]=a[i+1];

a[i+1]=r;}

Пример 3.

Циклически сдвинуть массив на к элементов влево (вправо).

int k,i,t,r;

cout<<"\nK=?";cin>>k;

 

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

{

r=a[0];

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

a[i]=a[i+1];

a[n-1]=r;

}

Задачи 3

При синхронной обработке массивов индексы при переборе массивов меняются одинаково.

Пример 1. Заданы два массива из n целых элементов. Получить массив c, где c[I]=a[I]+b[I].

For(int I=0;I<n;I++)c[I]=a[I]+b[I];

При асинхронной обработке массивов индекс каждого массива меняется по своей схеме.

Пример 2. В массиве целых чисел все отрицательные элементы перенести в начало массива.

int b[10];//вспомогательный массив

int i,j=0;

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

if(a[i]<0){b[j]=a[i];j++;}//переписываем из а в b все отрицательные элементы

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

if(a[i]>=0){b[j]=a[i];j++;}// переписываем из а в b все положительные элементы

for(i=0;i<n;i++) cout<<b[I]<<” “;

Пример3.

Удалить из массива все четные числа

int b[10];

int i,j=0;

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

if(a[i]%2!=0){b[j]=a[i];j++;}

 

for(i=0;i<j;i++) cout<<b[i]<<" ";

cout<<"\n";

Задачи 4

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

- нужный элемент найден;

- элемент не найден, но просмотр массива закончен.

Пример1. Найти первое вхождение элемента К в массив целых чисел.

int k;

cout<<"\nK=?";cin>>k;

int ok=0;//признак найден элемент или нет

int i,nom;

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

if(a[i]==k){ok=1;nom=i;break;}

if(ok==1)

cout<<"\nnom="<<nom;

else

cout<<"\nthere is no such element!";

Задания

Задачи

1. Написать программу, которая вводит с клавиатуры одномерный

массив из 5 целых чисел, после чего выводит количество

ненулевых элементов. Перед вводом каждого элемента должна

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

Ввод массива целых чисел.

После ввода каждого числа нажмите <Enter>

а[1] -> 12

а[2] -> 0

а[3] -> 3

а[4] -> -1

а[5] -> 0

В массиве 3 ненулевых элемента

2. Написать программу, которая выводит минимальный элемент

введенного с клавиатуры массива целых чисел. Ниже приведен

рекомендуемый вид экрана во время работы программы (данные,

введенные пользователем, выделены полужирным шрифтом).

Поиск минимального элемента массива.

Введите в одной строке элементы массива (5 целых чисел) и нажмите <Enter>

-> 23 О 45 -5 12

Минимальь1ый элемент массива: -5

3. Написать программу, которая выводит минимальный элемент

введенного с клавиатуры массива целых чисел. Для доступа

к элементам массива используйте указатель.

4. Написать программу, которая вычисляет среднее арифметическое

ненулевых элементов введенного с клавиатуры массива

целых чисел. Ниже приведен рекомендуемый вид экрана во

время работы программы (данные, введенные пользователем,

выделены полужирным шрифтом).

Введите элементы массив а (10 целых чисел) в одной строк е и

нажмите <Enter>.

-> 2 3 О 45 -5 12 О -2 30 О 64

Сумма элементов массива: 184

Количество ненулевых элементов: 7

Среднее арифметическое ненулевых элементов: 23.86

5. Написать программу, которая вычисляет среднее арифметическое

элементов массива без учета минимального и максимального

элементов массива. Ниже приведен рекомендуемый вид

экрана во время работы программы (данные, введенные пользователем,

выделены полужирным шрифтом).

средне е арифметическое без учет а min и max значений.

Введите массив (10 целых чисел в одной строке)

->1 2 10 5 7 15 4 10 17 23 7

Минимальный элемент: 4

Максимальный элемент: 23

Среднее арифм. без учет а min и max значений: 10.3 6

 

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

температуру воздуха. Исходные данные должны вводиться

во время работы программы. Рекомендуемый вид экрана приведен

ниже (данные, введенные пользователем, выделены полужирным

шрифтом).

Введите температур у воздух а з а неделю.

Понедельник -> 12

Вторник -> 10

Среда -> 16

Четверг -> 18

Пятница ~> 17

Суббота -> 16

Воскресенье -> 14

Средняя температур а з а неделю: 14.7 1 град.

7. Написать программу, которая проверяет, находится ли введенное

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

во время работы программы.

8. Написать программу, которая проверяет, представляют ли

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

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

с клавиатуры число встречается в массиве.

10. Написать программу, которая проверяет, есть ли во введенном

с клавиатуры массиве элементы с одинаковым значением.

11. Написать программу, которая методом прямого выбора сортирует

по убыванию введенный с клавиатуры одномерный массив.

12. Написать программу, которая методом обмена ("пузырька")

сортирует по убыванию введенный с клавиатуры одномерный

массив.

13. Написать программу, которая объединяет два упорядоченных

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

Рекомендуемый вид экрана во время работы программы

приведен ниже, данные, введенные пользователем, выделены

полужирным шрифтом.

Объединение двух упорядоченных по возрастанию массивов.

Введите в одной строке элементы первого массива,

(5 целых чисел) -> 1 3 5 7 9

Введите в одной строке элементы второго массива,

(5 целых чисел) -> 2 4 б 8 10

Массив — результат

12345678 9 10

Для завершения работы нажмите <Enter>.

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

14. Написать программу, которая определяет количество учеников

в классе, чей рост превышает средний. Рекомендуемый

вид экрана во время работы программы приведен ниже. Введенные

пользователем данные выделены полужирным шрифтом.

*** Анализ роста учеников ***

Введите рост (см) и нажмите <Enter>.

Для завершения введите О и нажмите <Enter>

Часть I. Задачи

-> 175

-> 170

-> 180

-> 168

-> 170

-> О

Средний рост: 172. 6 см

У 2 человек рос т превышает средний.

15. Написать программу, которая вводит по строкам с клавиатуры

двумерный массив и вычисляет сумму его элементов по строкам.

16. Написать программу, которая обрабатывает результаты экзамена.

Для каждой оценки программа должна вычислить процент

от общего количества оценок. Рекомендуемый вид экрана

во время работы программы приведен ниже. Данные, введенные

пользователем, выделены полужирным шрифтом.

Обработка результата в экзамена.

Введите исходные данные:

пятеро к -> 12

четверо к -> 10

трое к -> 7

двое к -> 1

Результат ы экзамен а

 

пятеро к 12

четверо к 10

трое к 7

двое к 1

Для завершения программы нажмите <Enter >

17. Написать программу, которая вводит по строкам с клавиатуры

двумерный массив и вычисляет среднее арифметическое

его элементов.

18. Написать программу, которая вычисляет определитель квадратной

матрицы второго порядка. Рекомендуемый вид экрана во

время работы программы приведен ниже (введенные пользователем

данные выделены полужирным шрифтом).

Введите матрицу второго порядка.

После ввода элементов строки нажимайте <Enter>

-> 5 -7

-> 1 3

Определитель матрицы

5.00 -7.00

1.00 3.00

Равен 22.00

19. Написать программу, которая определяет номер строки

квадратной матрицы, сумма элементов которой максимальна.

20. Написать программу, которая проверяет, является ли введенная

с клавиатуры квадратная матрица "магическим" квадратом.

"Магическим" квадратом называется матрица, у которой сумма

чисел в каждом горизонтальном ряду, в каждом вертикальном и

по каждой из диагоналей одна и та же (см. приведенный ниже

рисунок).

 

2 9 4 13 8 12 1

7 5 3 2 И 7 14

6 1 8 3 10 6 15

16 5 9 4

 






Не нашли, что искали? Воспользуйтесь поиском:

vikidalka.ru - 2015-2024 год. Все права принадлежат их авторам! Нарушение авторских прав | Нарушение персональных данных