Цикл с предусловием                  //цикл с постусловием



S=0;                                                  S=0; i=0;

   i= 0;                                                    do

while ( S<K) { i++ ; S+=i*i };             { i++; S+=i*i; }

                                                      while ( S<K) ;

printf (“n=%d S=%d\n”, i, S);  

getch();  

}

Отличие этих программ: если ввести К<1, то в программе с предусловием получим S=0, i=0 ; а в программе с постусловием S=1, i=1.

 

ВЫПОЛНЕНИЕ РАБОТЫ

 Составить 3 варианта программ циклической структуры типа for и while, сравнить полученные результаты.  

                         

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

1.            .                    2.                     .

3.            .                       4.                      .

5.            .                   6.                          .

7.                            8.                    

9.            .                 10.                    .

11.                     12.                  

         

4.  КОНТРОЛЬНЫЕ ВОПРОСЫ

4.1. Какой алгоритм является алгоритмом циклической структуры?

4.2. Типы циклов в языке Си.

4.3. Какой цикл выполнится хотя бы один раз? А какой - ни разу?

 

 

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

Обработка статических массивов

1. ЦЕЛЬ РАБОТЫ: приобретение практических навыков в составлении программ с  массивами.

 

ОСНОВНЫЕ СВЕДЕНИЯ

Массивы - структурированный тип данных с элементами одного и того же типа, имеющий одно имя и определенное количество элементов. Количество элементов определяет размер массива. Порядковый номер элемента массива называется его индексом. Число индексов называется размерностью массива, например, массив с двумя индексами называется двумерным массивом. Строка символов является массивом символов, вектор – массив чисел, матрица – массив векторов. Обработка массивов выполняется следующим образом: объявление, ввод или инициализация элементов массива, преобразование и вывод.

Объявление массива

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

— int, float, char, и т.д. Массив объявляют так же, как и обычные переменные, но после имени массива в квадратных скобках записывается его размер.

int A[10], B[20]; // 2 массива по 10 и 20 целых чисел

float C[12]; // массив из 12 вещественных чисел

При объявлении массива можно сразу заполнить его начальными значениями, перечисляя их внутри фигурных скобок:

int A[4] = { 2, 3, 12, 76 };

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

int A[4] = { 2 }; // последние три элемента равны 0

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

const int N = 20; //N - константа

main()

{

int A[N]; // размер массива задан через константу

...

}

 

Обращение к элементу массива

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

Таким образом, если в массиве 10 элементов, он содержит элементы:

A[0], A[1], A[2], ..., A[9]

Номер элемента массива также называется его индексом. Вот примеры обращения к массиву A:

x = (A[3] + 5)*A[1]; // прочитать значения A[3] и A[1]

A[0] = x + 6; // записать новое значение в A[0]

В языке Си не контролируется выход за границы массива, то есть формально вы можете записать что-то в элемент с несуществующим индексом, например в A[345] или в A[-12]. Однако при этом вы стираете какую-то ячейку в памяти, не относящуюся к массиву, поэтому последствия такого шага непредсказуемы и во многих случаях программа «зависает».

 Ввод с клавиатуры и вывод на экран

 Существует много способов ввода в зависимости от вашей задачи:

• элементы массива вводятся с клавиатуры вручную;

• массив заполняется случайными числами (например, для моделирования случайных про-

цессов);

• элементы массива читаются из файла;

• массив заполняется в процессе вычислений.

Чтобы ввести массив в память, надо каждый его элемент обработать отдельно (например, вызвав для него функцию ввода scanf). Для ввода и вывода массива обычно используется цикл for.

     Пример обработки одномерного массива

Дан массив из 50 целых чисел. Найти наибольший элемент в массиве и его порядковый номер.

 

 # include <stdio.h>

 #include <conio.h>

 # define n 50 // определение константы n=50

 int i, max, nom, a[n];  //описание массива целых чисел из n элементов

 main()

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

{ printf( “\n Введите элемент массива ”);

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

   for (i=1,max=a[0],nom=0; i<n; i++)

if (max<a[i])

      {nom=i; max=a[i];}

printf("\n Вывод элементов исходного массива : \n");

for (i=0; i<n; i++)   printf ( "%6d", a[i] );

printf ("\n Максимальное число в массиве %4d, его индекс %4d " , max, nom+1);

getch();

}

 


Дата добавления: 2019-01-14; просмотров: 362; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!