Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
15
Добавлен:
09.04.2015
Размер:
212.99 Кб
Скачать

Операции отношений (операции сравнений)

Операции сравнений ( <, <=, >=, >, ==, != ) применимы к указателям также как и к обычным переменным. Таким образом, указатели можно использовать в отношениях. Но сравнивать указатели можно только с другими указателями того же типа или с константойNULL, обозначающей значение условного нулевого адреса, или с адресами переменных того же типа.

С использованием операции сравнения программу –3 (program-3) можно переписать в следующем виде:

// program – 3m

#include<stdio.h>

#include<conio.h>

void main ()

{

float y1 = 1.2345, y2 = 2.3456, y3 = 3.4567;

float *p;

clrscr();

for(p = &y1; p >= &y3; p--)

printf (" *p = %7.4f \n", *p);

getch();

}

1.3. Массивы Массивы и переменные с индексами

Понятие “массив” соответствует математическим понятиям “матрица” и ее частному случаю “вектору”. Элементы матриц принято обозначать с использованием индексов. Существенно, что все элементы матрицы одинаковы: либо целые числа, либо вещественные, либо символы, либо другие объекты, введенные программистом (об этом позднее). Такая “однородность” элементов свойственна и массиву, объявление которого описывает тип элементов, имя массива и его размерность и размер, т. е. число индексов и количество значений, принимаемых каждым индексом. Таким образом, массив можно определить как набор однотипных, пронумерованных объектов, располагающихся в соседних участках оперативной памяти.Обращение к элементам массива – с помощью индексов (номеров): а[i] – для одномерного массива, x[i][j] – для двумерного массива. Примеры объявлений массивов представлены ниже:

Int z[100]; // одномерный массив из 100 элементов типа int char s[80]; // одномерный массив из 80 элементов типа char (строка) float y[3][4];// двумерный массив из 12 элементов типа float

Нумерация любого индекса начинается с нуля. Таким образом, элементы массива Z обозначаются:Z[0], Z[1], Z[2], … Z[99],элементы массиваSобозначаются:S[0], S[1],…S[79],элементы массиваyобозначаются:y[0][0], y[0][1], y[0][2], …y[2][3]. При обращении к элементам массива используются переменные с индексами. Например: Z[i], Z[1], y[i][j], y[1][2]. При этом следует помнить, что транслятор не проверяет правильность значений индексов. Эта обязанность возлагается на программиста.

Рассмотрим примеры программ на создание и обработку массивов.

Задача – 1

Для заданного массива вещественных чисел с количеством элементов не более 20 составить программу получения суммы элементов массива и суммы квадратов элементов массива.

Математическая постановка задачи

Дано: вектор вещественных чиселX[n],n<= 20.Определить:

Программа на Си

// program – 4

#include<stdio.h>

#include<conio.h>

void main ()

{int n,i;

float X[20];

float s1,s2; clrscr(); //ввод n while (1) { printf(“\n n = ”);

scanf(“%d”,&n); if ( n > 0 && n < =20) break; printf (“\n Ошибка! ”); printf (“\n Необходимо, чтобы ”); printf (“n > 0 && n < 20\n”); }

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

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

for (i = 0; i < n; i++) {printf (“X[%d] =”,i); scanf (“%f”, &X[i]); }

// обработка массива

for (s1 =0,s2 =0, i = 0; i < n; i++)

{s1 +=X[i]; s2 +=X[i]* X[i];

}

//вывод результата printf(“\n s1=%7.2fs2=%7.2f\n”,s1,s2);

getch();

}

Алгоритм на АЯРН:

Начало цикл для ввода n ввод n если n > 0 и n <=20

то прервать цикл

конец-если сообщить об ошибке конец цикла по вводу n

цикл по i от 0 с шагом 1 до n -1 ввод Xi конец цикла по I

s1 = 0 s2 = 0 цикл по i от 0 с шагом 1 до n –1 s1 = s1 +Xi s2 = s2 + Xi * Xi

конец цикла по I печать s1, s2 Конец

Напомним, что оператор while (1) { } означает бесконечный цикл (1 –всегда истинное выражение). Выход из этого цикла осуществляется операторомbreak, в том случае, если введенное значениеnокажется в допустимом диапазоне. В математической постановке индексiменяется от 1 доN. Поскольку в Си элементы массива нумеруются с нуля, то в алгоритме и программе этот же индекс меняется от 0 доN– 1. Обратите внимание на тот факт, что и в алгоритме, и в программе используются два цикла: один для ввода массива, другой для обработки, несмотря на то, что можно было ввод и обработку выполнить в одном цикле. И хотя в таком варианте программа была бы короче,

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

Соседние файлы в папке attachments_05-09-2012_18-55-54