Изучить способы вывода на экран таблицы значений. - Циклические алгоритмы

Одномерные массивы в СИ

Массив - некие упорядоченные данные одного типа. Смысл этой всей упорядоченности состоит в том что доступ к элементам происходит через индекс, т. е через порядковый номер элемента тип_массива имя_массива[размер №1][размер №2]...[размер №N];

Примеры объявления одномерного массива:

Int a[2];

Double b[20];

Обращение к конкретному элементу одномерного массива в языке СИ осуществляется так: указываем имя массива, а потом в квадратных скобках индекс элемента в этом массиве. в СИ отсчет ведется начиная с нуля, т. е обращение к первому элементу массива будет иметь вид: a[0], а ко второму - a[1] и тд.

На практике наиболее часто используются только:

Одномерные массивы (по другому говоря векторы);

Двумерные массивы (или же что тоже самое матрицы).

Объявление одномерного массива в си (далее просто массив) имеет следующий синтаксис:

Тип_данных имя_массива[размер];

Размер массива - любое положительное, целое число. В стандарте С89 значение должно было указываться сразу при написании кода, т. е быть константой. В стандарте С99 было введено понятие так называемого динамического массива. Динамический массив - массив, при создании которого в качестве размера указывается значение некоторого выражения, в которое входят переменные, объявленные и инициализированные ранее (выражение должно иметь положительный целочисленный результат).

Например:

Int n;

Printf("Введите размер массива: ");

Scanf("%d",&;n);

Double x[n];

При объявлении статических массивов допускается производить инициализацию элементов массива. Синтаксис такого объявления:

Тип_массива имя_массива[размер] = {значение №1, ... значение №N};

Примеры:

Int a[5] = {1,2,3,4,5}, b[5] = {1,2};

Double x[10] = {0.0};

Int c[] = {1,2,3,4,5};

Char d[] = {'a','b','c'};

Int e[5] = {1,2,,4,5}; //Неправильно - ошибка

Объявление константных одномерных массивов (значения их элементов изменить нельзя) начинается с ключевого слова const, за которым следует объявление массива с инициализацией.

Примеры:

Const int array[] = {1,2,3,4,5};

Const double vector[5] = {1.0,2.0,3.0};

Каждый отдельный элемент массива может рассматриваться как простая переменная и, соответственно, выступать в выражениях в качестве RValue или LValue значений.

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

Int a[10];

For(int i=0; i<10; i++) scanf("%d", &;a[i]);

For(int i=0; i<10; i++) printf("%d ", a[i]);

Присвоение массива массиву также осуществляется поэлементно. Например, необходимо присвоить одномерный

Вещественный массив x одномерному вещественному массиву y. Фрагмент программы:

Double x[15], y[15];

For(int i=0; i<15; i++) y[i] = x[i];

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

Простыми (например "случайное" изменение переменных);

Критическими (выход за пределы пространства памяти, отведенной для программы).

Например:

Int a[10];

For(int i=0; i<=10; i++) a[i] = i;

Ход работы

Техническое задание: вычислить корни уравнения для значений коэффициента В, равных 1,2,3...,N.

Анализ технического задания: Для того, чтобы найти корни данного уравнения, необходимо выразить x.

X1=(-(-B)+pow((-B)^2+2*B,1/2))/2;

X2=(-(-B)-pow((-B)^2+2*B,1/2))/2.

Пусть В=1, затем принимает целые значения до 10.

Блок-схема

Блок-схема алгоритма представлена на рисунке 1.

Рисунок 1

Спецификация на программные модуля. Имя модуля Program1.

    1. Имя вызывающего модуля - нет. 2. Выполняемые функции - вычисление

X1=(-(-B)+pow((-B)^2+2*B,1/2))/2;

X2=(-(-B)-pow((-B)^2+2*B,1/2))/2,

При В=1,2,3,...,10.

    3. Входные данные x типа float. 4. Выходные данные y типа float. 5. Особенности, ограничения - нет.

Текст программы

#include<conio. h>

#include<stdio. h>

#include<math. h>

main()

{

int B, x1,x2;

clrscr ();

for (B=1;B<=10;B++)

{

x1=(-(-B)+pow((-B)^2+2*B,1/2))/2;

x2=(-(-B)-pow((-B)^2+2*B,1/2))/2;

printf("B=%d x1=%f x2=%f ",B, x1,x2);

}

getch();

return 0;

}

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

Вывод: программа работает корректно при вводе чисел, удовлетворяющих условию, некорректно при вводе символа.

Заключение: в результате выполнения лабораторной работы научились использовать операторы циклов.

Похожие статьи




Изучить способы вывода на экран таблицы значений. - Циклические алгоритмы

Предыдущая | Следующая