Хелпикс

Главная

Контакты

Случайная статья





Лабораторная работа №3. Работа с массивами». Ход работы.. Пример выполнения.



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

«Работа с массивами»

Задание.Согласно варианта задания нарисоватьблок-схему алгоритма решения поставленной задачи и выполнить ручной расчет работы алгоритма для двух наборов произвольных входных данных (длина массива минимум 12 элементов).

 

Ход работы.

При выполнении лабораторной работы необходимо: разработать блок-схему алгоритма задания (согласно варианту), проверить работу разработанного алгоритма, при помощи ручного расчета (в качестве тестовых данных использовать два различных набора, созданных произвольных способом), по построенной блок-схеме выполнить кодирование алгоритма на языке Си (или С++).

Пример выполнения.

Рассмотрим ход выполнения лабораторной работы на примере следующей задачи: найти в массиве заданных элементов сумму всех четных элементов.

Блок-схему алгоритма решения поставленной задачи можно записать в виде:

 Ручной расчет работы алгоритма для массива А={5,7,-3,4,2,8,9} можно записать в виде:

№ шага N Условие +/- i A[1] A[2] A[3] A[4] A[5] A[6] A[7] Sum
7                    
(N>0) +                  
               
             
  -3          
  -3        
  -3      
  -3    
  -3  
  -3
(Остаток(A[i]/2)=0) - 5 -3
(Остаток(A[i]/2)=0) - 7 -3
(Остаток(A[i]/2)=0) - -3
(Остаток(A[i]/2)=0) + -3 4
(Остаток(A[i]/2)=0) + -3 2
Остаток (A[i]/2)=0) + -3 8
Залишок (A[i]/2)=0) - -3 9
  -3 14

 

Кодирование алгоритма на языке Си:

# include <stdio.h>

# include <windows.h>

# include <locale.h>

# define MAX_N 1000

using namespace std;

int main(){

  setlocale(LC_ALL, "rus");

  int n;

  printf ("введите количество элементов массива:\n");

  do

  {

        scanf("%d",&n);

  }

  while (n<=0 || n>MAX_N);

  int arr[MAX_N];

  int i;

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

  {

        printf("[%d]",i+1);

        scanf("%d",&arr[i]);

            

  }

      

  int summ=0;

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

  {

        if (arr[i]%2==0)

        {

               summ=summ+arr[i];

        }

  }

  printf("summ=%d\n",summ);

      

  system ("pause");

  return 0;

}

 

 

Варианты заданий.

Вариант №1.

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

 

Вариант  №2.

В массиве заданной длины N рассчитать сумму всех отрицательных элементов, стоячих на четных местах.

 

Вариант №3.

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

 

Вариант №4.

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

Вариант №5.

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

 

Вариант №6.

Осуществить обработку массива заданной длины N: заменить все нечетные элементы дублями предыдущих четных элементов. Подсчитать общее количество замен. Например: входной массив {2,5,6,7,4,-3,6,21,44,0,14,15,-8}, результат обработки {2,2,6,6,4,4,6,6,44,0,14,14,-8}.

 

Вариант №7.

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

 

Вариант №8.

В заданном массиве поменять местами значения, стоящие на симметричных, относительно центра, местах. Например: входной массив {2,2,1,5,9,0,3,5,6,4,3,6,8}, масив-результат {8,6,3,4,6,5,3,0,9,5,1,2,2}.

 

Вариант №9.

Найти в заданном массиве все элементы, удовлетворяющие следующему условию: абсолютное значение элемента находится в диапазоне [K,L]. Значения параметров K, L вводит пользователь. Для найденных элементов вывести их индекс в мас сиве и значение.

 

Вариант №10.

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

 

Вариант №11.

Для заданного массива рассчитать количество серий упорядоченных по убыванию элементов. (Серией принято называть последовательность, содержащую минимум два элемента). Например: входной массив {2, -3, 5,3,1,0,7,8}, количество серий=2, сами серии: {2,-3}, {5,3,1,0}.

 

Вариант №12.

В заданном массиве рассчитать среднее арифметическое всех элементов и осуществить перестановку (обмен местами) элементов, стоячих на местах place1 и place2. Значения переменных place1 и place2 вводит пользователь.

 

Вариант №13.

Все нечётные элементы заданного массива заменить нулями и вывести индекс первого отрицательного элемента массива.

 

Вариант №14.

В заданном массиве найти первое вхождение элемента со значением el, вывести индекс этого элемента и поменять его местами с последним элементом массива. Значение переменной el вводит пользователь.

 

 

Вариант №15.

В массиве найти максимальный по значению элемент, вывести его индекс, если таких элементов несколько, то вывести индексы всех элементов.

Вариант №16.

В массиве найти минимальный по значению элемент, вывести его значение.

 

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

1. Вариант задания.

2. Блок-схема алгоритма решения поставленной задачи.

3. Два набора входных данных (элементы масивов задавать произвольно, длина массивов минимум 12 элементов).

4. Ручной рассчет работы алгоритма для каждого из заданных наборов.

 

Контрольные вопросы.

1. Что такое массив?

2. Для чего нужна индексация в массиве?

3. Дайте определение N-мерного массива.

 

 



  

© helpiks.su При использовании или копировании материалов прямая ссылка на сайт обязательна.