Мегаобучалка Главная | О нас | Обратная связь


РЕШЕНИЕ ЗАДАЧ C ИСПОЛЬЗОВАНИЕМ ОДНОМЕРНЫХ И ДВУМЕРНЫХ МАССИВОВ



2019-08-13 321 Обсуждений (0)
РЕШЕНИЕ ЗАДАЧ C ИСПОЛЬЗОВАНИЕМ ОДНОМЕРНЫХ И ДВУМЕРНЫХ МАССИВОВ 0.00 из 5.00 0 оценок




 

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

 

Пример 2.1  Вычислить функцию y = axi2 – sin xi, где x1=-1, x2=-0,93, x3=-0,49, x4=0, x5=1,13, x6=0,96, x7=1,75.

 

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

В схеме алгоритма решения задачи сначала предусматривается ввод значений всех элементов обрабатываемого массива x[n] (n =7 ). Число, заключенное в скобки, определяет количество элементов массива. Нумерация элементов массива начинается с 0 изаканчивается n –1 . Далее введенные элементы используются при вычислении функции, путем указания индекса соответствующего элемента.

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

 

 

//P2_1.CPP —вычисление значений функции

//         использование одномерного массива

                                                    #include <iostream.h>

 


                                                                                

                                                                                    

 

 

                                                                                                 

a=10.5
                                                                                    

 

                                                                                                   

                                                                                              

    i=0
                                                                                    

 

                                                                                     

                                                                                            

y=axi*xi-sin(xi)
                                                                                   

                                                                                        

                                                                                                   

                                                                                    

                                                                                            

                                                                                      

                                                                                                        

                                                                                                

i=i+1
                                                                                               

 

                                                                                                       

                                                                                   

   да

                                                                                                    

         нет

#include <math.h>

          main( )

{

  const int n =7;

  float x[n];

  int i;

  float a, y;

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

cout<< "Введите значения массива:" <<endl;

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

  {

cout << "x [" << i << "] = ";

cin >> x [ i ] ;

cout << x [ i ] << endl;

   }

a = 10.5;                                                                                               

// Вычисление функции

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

  {

y = a*x [ i ] * x [ i ] – sin ( x [ i ] )

                                                                                                                                                                       . cout << "При значении=" << x[i]

                 << " y = " << y << endl;

                                                           }

                                                         }   

При записи этого алгоритма в виде программы сначала надо описать массив с помощью оператора float x [n], ввести его значения в память компьютера, а затем производить необходимые вычисления.

В программе, реализующей данный алгоритм, для ввода элементов массива используется оператор cin >> x [i] ;, перед этим оператором имеется подсказка cout << "x [" << i << "] = "; и указан номер элемента x[i], значение которого надо ввести. 

Особенность выполнения оператора ввода cin >> x[i] ; состоит в том, что, встретив его в программе, компьютер приостановит ее выполнение пока не будет введено значение элемента x[i]  и нажата клавиша Enter, после чего обработка программы будет продолжена. Указанный оператор включен в цикл, реализуемый оператором For, и повторяемый n раз, для обеспечения ввода всех элементов массива.

Поскольку в языке С++ индексацияэлементов массива начинается с нуля, то массив float x[7] (n =7 ) из семи элементов включает индексированные элементы x[0], x[1], x[2] … x[6] и при этом x[0] — обращение к первому элементу, x[1]  — обращение ко второму элементу массива и т.д. Предлагаемая программа использует два цикла: один — для ввода массива, другой — для вычисления функции. Эти операции можно выполнить и в одном цикле, тогда программа будет иметь вид:

 

// Р2_2.CPP ввод элементов одномерного массива

// и вычисление функции осуществляется в одном цикле

#include < iostream.h>

#include < math.h>

float a, y ;

Void main ( )

  {

   const int n =7;

   float mas [ n ];

   int i;

   float a, y ;

   a = 10.5;

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

         {

   cout << "x [ " <<  i << "] = ";

   cin >> x [ i ] ;

   y = a * x[ i ]*x[ i ] - sin( x[ i ] );

   cout << "При значении =" << x[i] << " y= " << y << endl;

           }

   }

Такая программа короче предыдущей, а значит, предпочтительнее.

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

 

Пример 2.2  Обработать ведомость успеваемости группы студентов из 10 человек по программированию, подсчитав средний балл группы и количество отличников.

 

Список оценок представим массивом МAS[i] (i=0..9), и программа, реализующая такую задачу, выглядит следующим образом :

 

// Р2_3.CPP использование одномерных массивов

// Определение среднего балла группы и количества отличников

#include < iostream.h >

#include < math.h >

void main ( )

 {

const int n = 10;  // размерность массива

float mas[n];   // описание одномерного массива

int i, k;

float s;

              s = 0 ; // s - переменная для суммирования оценок группы

 k = 0 ; // к - переменная для подсчета количества отличников

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

     {

  cout << " mas [ " << i << "] = ";

  cin >> mas [ i ] ;

  cout << mas [ i ] << endl;

  s = s + mas [ i ];

  if ( mas[ i ] = = 5)

  k =k+1;

      }

cout << "Средний балл = " << s / float(n ) << endl;

cout << "Количество отличников =" << endl;       

}

 

В этой программе переменная s служит для вычисления суммы оценок группы, а переменная k — для подсчета количества отличников. Перед вычислением надо задать этим переменным начальные нулевые значения. Оператор cout << " mas [ " << i << "] = "; внутри цикла выполняет роль подсказки о необходимости ввода очередной оценки, а в конце используется для вывода результатов вычисления ( cout << "Средний балл"<< s / float (n) << endl;    cout << "Количество отличников =" << endl;) . 

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

 

 

Местоположение каждого элемента определяется с помощью двух индексов — номера строки и номера столбца, т.е. порядкового номера в строке.

Индексы таких массивов записываются в квадратных скобках. Например, запись М[1] [2] указывает на элемент, находящийся во второй строке и третьем столбце, т.е. имеющий значение -20.5 (cчет индексов начинается с 0). Для перебора всех элементов матрицы при их вводе-выводе, а также при обработке в программе следует предусматривать организацию двух циклов: один — для задания значений индекса строк, другой —индекса столбцов.

 

Пример 2.3 К каждому элементу вышеприведенной матрицы M прибавить число 10.

 

// Р2_4.CPP использование двумерных массивов

// К каждому элементу матрицы прибавить число 10.

 

#include < iostream.h >

 void main ( )

{

const int n = 3;     //  количество строк матрицы

const int m = 5; // количество столбцов матрицы

float M [ n] [m];

int i, k;

Float s;             

s = 10 ;

cout << " Введите значения массива:" << endl;

            // Ввод значений двумерного массива

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

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

         {

      cout << " M [ " << i << "] = " << "[ " << k << ]" ;

      cin >> M [ i ] [ k ];

      cout << M [ i ] [ k ] << endl;

          M [ i ] [ k ] = M [ i ] [ k ] + s ; //  Можно M [ i ] [ k ] + = s ;

                 }    

                                               

   cout << "Новое значение матрицы :" << endl;

// Вывод матрицы в естественном виде

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

      {

   cout << endl;

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

    cout << M [ i ] [ k ] << " ";

       }

         }

В программе при описании матрицы в операторе float M[n][m]; указывается диапазон изменения двух индексов, первый из которых предназначен для индексирования строк, второй — столбцов.

При вводе, обработке и выводе матрицы для перебора всех ее элементов используется два цикла, один из которых является вложенным в другой. Это позволяет при каждом значении переменной i  перебирать все значения k.

Рассматриваемая программа может быть сокращена путем объединения всех трех блоков цикла в один, но в таком случае она будет менее наглядной.

 

 



2019-08-13 321 Обсуждений (0)
РЕШЕНИЕ ЗАДАЧ C ИСПОЛЬЗОВАНИЕМ ОДНОМЕРНЫХ И ДВУМЕРНЫХ МАССИВОВ 0.00 из 5.00 0 оценок









Обсуждение в статье: РЕШЕНИЕ ЗАДАЧ C ИСПОЛЬЗОВАНИЕМ ОДНОМЕРНЫХ И ДВУМЕРНЫХ МАССИВОВ

Обсуждений еще не было, будьте первым... ↓↓↓

Отправить сообщение

Популярное:
Как выбрать специалиста по управлению гостиницей: Понятно, что управление гостиницей невозможно без специальных знаний. Соответственно, важна квалификация...



©2015-2024 megaobuchalka.ru Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. (321)

Почему 1285321 студент выбрали МегаОбучалку...

Система поиска информации

Мобильная версия сайта

Удобная навигация

Нет шокирующей рекламы



(0.006 сек.)