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

syap

.pdf
Скачиваний:
17
Добавлен:
12.04.2015
Размер:
2.16 Mб
Скачать

Программа

#include <math.h>

математические

 

функции

main()

 

чтобы не было

модуль

{

 

округления

 

 

int

c, z;

вещественног

при делении

 

числа

float S, a;, b;

 

 

 

S = 0; z = -1;

 

 

 

 

b = 1; c = 2;

 

 

 

 

while (fabs(a) > 0.001) {

 

 

 

S += a;

увеличение

 

 

к

a = z * b

 

 

 

расчет элемента

z = - z;

последовательност

b ++;

 

 

 

 

и

 

 

 

 

 

c *= 2;

 

 

 

 

}

 

 

 

? Что плохо?

printf ("S = %10.3f", S);

 

}

 

 

 

 

 

Цикл с постусловием

Задача: Ввести целое положительное число (<2000000) и определить число цифр в нем.

Проблема: Как не дать ввести отрицательное число или ноль?

Решение: Если вводится неверное число, вернуться назад к вводу данных (цикл!).

Особенность: Один раз тело цикла надо сделать в любом случае Þ проверку условия цикла надо делать в конце цикла (цикл с постусловием).

Цикл с постусловием – это цикл, в котором проверка условия выполняется в конце цикла.

Программа

main()

{

int n;

do {

printf("Введите положительное число\n");

scanf("%d", &n);

услови

}

е

while ( n <= 0 );

 

... // основной алгоритм

}

Особенности:

тело цикла всегда выполняется хотя бы один раз

после слова while («пока…» ) ставится условие продолжения цикла

Сколько раз выполняется цикл?

a = 4; b = 6;

do { a ++; } while (a <= b);

a = 4; b = 6;

do { a += b; } while ( a <= b );

a = 4; b = 6;

do { a += b; } while ( a >= b );

a = 4; b = 6;

do b = a - b; while ( a >= b );

a = 4; b = 6;

do a += 2; while ( a >= b );

3 раза

a= 7

1 раз a = 10

зацикливани

е

2 раза b = 6

зацикливани

е

Массивы в C#

Массивы в C# несколько отличаются от других C-подобных языков. Начнем сразу с примеров. Пример первый:

int[] k; //k - массив

k=new int [3]; //Определяем массив из 3-х целых k[0]=-5; k[1]=4; k[2]=55; //Задаем элементы массива

//Выводим третий элемент массива

Console.WriteLine(k[2].ToString());

Смысл приведенного фрагмента ясен из комментариев. Обратите внимание на некоторые особенности. Во-первых, массив определяется именно как

int[] k;

Во-вторых, так как массив представляет из себя ссылочный объект, то для создания массива необходима строка

k=new int [3];

Именно в ней мы и определяем размер массива. Хотя, вообще говоря, возможны конструкции вида

int[] k = new int [3];

Элементы массива можно задавать сразу при объявлении. Вот пример: int[] k = {-5, 4, 55};

Разумеется, приведенные конструкции применимы не только к типу int и не только к массиву размера 3.

В C#, как и в C/C++, нумерация элементов массива идет с нуля. Таким образом в нашем примере начальный элемент массива – это k[0], а последний – k[2]. Элемента k[3], разумеется, нет.

Теперь переходим к многомерным массивам. Вот так задается двумерный массив: int[,] k = new int [2,3];

Обратите внимение, что пара квадратных скобок только одна. Естественно, что в нашем примере у массива 6 (=2*3) элементов (k[0,0] – первый, k[1,2] – последний).

Аналогично мы можем задавать многомерные массивы. Вот пример трехмерного массива: int[,,] k = new int [10,10,10];

А вот так можно сразу инициализировать многомерные массивы: int[,] k = {{2,-2},{3,-22},{0,4}};

Приведенные выше примеры многомерных массивов называются прямоугольными. Если их представить в виде таблицы (в двумерном случае), то массив будет представлять из себя прямоугольник.

Функции класса System.Array

Массивы в C# основаны на классе System.Array. У этого класса, как и у любого другого, есть разные полезные методы.

Вот пример: using System; namespace test

{

class Test

{

static void Main(string[] args)

{

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

int [] num = {4, -5, 2, 0, 23};

//Выводим массив. foreach (int i in num)

{

Console.WriteLine(i.ToString());

}

//Переворачиваем массив. Console.WriteLine("Перевернутый массив");

Array.Reverse(num); foreach (int i in num)

{

Console.WriteLine(i.ToString());

}

//Сортируем массив.

Array.Sort(num);

Console.WriteLine("Отсортированный массив"); foreach (int i in num)

{

Console.WriteLine(i.ToString());

}

//Обнуляем массив.

Array.Clear(num, 0, 5); Console.WriteLine("Обнуленный массив"); foreach (int i in num)

{

Console.WriteLine(i.ToString());

}

}

}

}

Тут мы используем статические методы класса Array для сортировки, переворачивания и очистки массива. Разумеется, эти методы не единственные. В классе Array есть, например, еще встроенный статический метод IndexOf

предназначенный для поиска

элемента

в массиве. Вот

пример его использования:

...

 

 

 

int

 

 

k=-5;

Console.WriteLine("Число {0}

находится

на {1} месте.",

k, Array.IndexOf(num, k));

...

Этот метод возвращает индекс искомого элемента (нумерация с нуля). Если такого элемента нет, то возвращается -1. Обратите внимание, что эти методы действуют для встроенных типов (в нашем примере массив был типа int). Для пользовательских типов данных их применение тоже возможно, но для этого на приложить некоторые дополнительные усилия.

Справка по классу Array

Array - класс

Предоставляет методы для создания, изменения, поиска и сортировки массивов, то есть выступает в роли базового класса для всех массивов в среде CLR.

Иерархия наследования

System.Object

 

 

System.Array

 

 

Пространство

имен:

System

Сборка: mscorlib (в mscorlib.dll)

 

 

Синтаксис

 

 

C#

[SerializableAttribute] [ComVisibleAttribute(true)]

public abstract class Array : ICloneable,

IList, ICollection, IEnumerable, IStructuralComparable, IStructuralEquatable

Тип Array предоставляет следующие члены.

Свойства

Имя Описание

IsFixedSize Получает значение, показывающее, имеет ли список Array фиксированный размер.

IsReadOnly Получает значение, указывающее, доступен ли объект Array только для чтения.

Length Получает 32-разрядное целое число, представляющее общее число элементов во всех измерениях массива Array.

LongLength Получает 64-разрядное целое число, представляющее общее число элементов во всех измерениях массива Array.

Rank Получает ранг (размерность) объекта Array.

Методы

 

Имя

 

Описание

 

 

 

 

 

BinarySearch(Array,

 

Выполняет поиск заданного элемента во всем

 

 

Object)

 

отсортированном одномерном массиве Array,

 

 

 

 

используя для этого интерфейс IComparable,

 

 

 

 

реализуемый каждым элементом массива Array и

 

 

 

 

заданным объектом.

 

 

 

 

 

 

 

BinarySearch(Array,

 

Выполняет поиск значения во всем отсортированном

 

 

Object, IComparer)

 

одномерном массиве Array, используя заданный

 

 

 

 

интерфейс IComparer.

 

 

 

 

 

BinarySearch(Array, Int32, Выполняет поиск значения в диапазоне элементов

 

 

Int32, Object)

 

отсортированного одномерного массива Array,

 

 

 

 

используя для этого интерфейс IComparable,

 

 

 

 

реализуемый каждым элементом массива Array и

 

 

 

 

заданным значением.

 

BinarySearch(Array, Int32, Выполняет поиск значения в диапазоне элементов Int32, Object, IComparer) отсортированного одномерного массива Array,

используя заданный интерфейс IComparer.

BinarySearch(Of T)(T(), T)

Выполняет поиск заданного элемента во всем

 

 

 

отсортированном одномерном массиве Array,

 

 

 

используя для этого универсальный интерфейс

 

 

 

IComparable(Of T), реализуемый каждым элементом

 

 

 

массива Array и заданным объектом.

 

 

 

 

BinarySearch(Of T)(T(), T,

Выполняет поиск значения во всем отсортированном

IComparer(Of T))

 

одномерном массиве Array, используя заданный

 

 

 

универсальный интерфейс IComparer(Of T).

 

 

 

 

BinarySearch(Of

T)(T(),

Выполняет поиск значения в диапазоне элементов

Int32, Int32, T)

 

отсортированного одномерного массива Array,

 

 

 

используя для этого универсальный интерфейс

 

 

 

IComparable(Of T), реализуемый каждым элементом

 

 

 

массива Array и заданным значением.

 

 

 

 

 

BinarySearch(Of

T)(T(),

Выполняет поиск значения в диапазоне элементов

Int32,

Int32,

T,

отсортированного одномерного массива Array,

IComparer(Of T))

 

используя

заданный универсальный

интерфейс

 

 

 

IComparer(Of T).

 

 

 

 

 

 

 

 

Clear

 

 

Задает диапазон элементов массива Array равным

 

 

 

нулю, false или Nothing в зависимости от типа

 

 

 

элемента.

 

 

 

 

 

 

 

 

 

 

Clone

 

 

Создает неполную копию массива Array.

 

 

 

 

ConstrainedCopy

 

Копирует диапазон элементов из массива Array,

 

 

 

начиная с заданного индекса источника, и вставляет

 

 

 

его в другой массив Array, начиная с заданного

 

 

 

индекса назначения.Гарантирует, что в случае

 

 

 

невозможности успешно скопировать весь диапазон,

 

 

 

все изменения будут отменены.

 

 

 

 

 

ConvertAll(Of

TInput,

Преобразует массив одного типа в массив другого

TOutput)

 

 

типа.

 

 

 

 

 

 

 

Copy(Array, Array, Int32)

Копирует диапазон элементов из массива Array,

 

 

 

начиная с первого элемента, и вставляет его в другой

 

 

 

массив

Array,

также

начиная

с

первого

 

 

 

элемента.Длина задается как 32-разрядное целое

 

 

 

число.

 

 

 

 

 

 

 

Copy(Array, Array, Int64)

Копирует диапазон элементов из массива Array,

 

 

 

начиная с первого элемента, и вставляет его в другой

 

 

 

массив

Array,

также

начиная

с

первого

 

 

 

элемента.Длина задается как 64-разрядное целое

 

 

 

число.

 

 

 

 

 

 

 

 

 

Copy(Array,

Int32,

Array,

Копирует диапазон элементов из массива Array,

Int32, Int32)

 

 

начиная с заданного индекса источника, и вставляет

 

 

 

его в другой массив Array, начиная с заданного

 

 

 

индекса назначения.Длина

и индексы

задаются как

 

 

 

 

 

 

 

 

 

 

32-разрядные целые числа.

 

 

 

 

Copy(Array, Int64, Array,

Копирует диапазон элементов из массива Array,

Int64, Int64)

начиная с заданного индекса источника, и вставляет

 

его в другой массив Array, начиная с заданного

 

индекса назначения.Длина и индексы задаются как

 

64-разрядные целые числа.

 

 

CopyTo(Array, Int32)

Копирует все элементы текущего одномерного

 

массива Array в заданный одномерный массив Array,

 

начиная с указанного индекса в массиве назначения

 

Array.Индекс задается как 32-разрядное целое число.

 

 

CopyTo(Array, Int64)

Копирует все элементы текущего одномерного

 

массива Array в заданный одномерный массив Array,

 

начиная с указанного индекса в массиве назначения

 

Array.Индекс задается как 64-разрядное целое число.

 

 

CreateInstance(Type,

Создает одномерный массив Array заданного типа

Int32)

Type и длины, индексация которого начинается с

 

нуля.

 

 

CreateInstance(Type,

Создает многомерный массив Array заданного типа

Int32())

Type с заданными длинами по измерениям и

 

индексацией, начинающейся с нуля.Длины по

 

измерениям задаются в массиве 32-разрядных целых

 

чисел.

 

 

 

 

CreateInstance(Type,

Создает многомерный массив Array заданного типа

Int64())

Type с заданными длинами по измерениям и

 

индексацией, начинающейся с нуля.Длины по

 

измерениям задаются в массиве 64-разрядных целых

 

чисел.

 

 

CreateInstance(Type, Int32,

Создает двумерный массив Array заданного типа

Int32)

Type с заданными длинами по измерениям и

 

индексацией, начинающейся с нуля.

 

 

CreateInstance(Type,

Создает многомерный массив Array заданного типа

Int32(), Int32())

Type с заданными длинами по измерениям и нижними

 

границами.

 

 

CreateInstance(Type, Int32,

Создает трехмерный массив Array заданного типа

Int32, Int32)

Type с заданными длинами по измерениям и

 

индексацией, начинающейся с нуля.

 

 

Equals(Object)

Определяет, равен ли заданный объект Object

 

текущему объекту Object. (Унаследовано от Object.)

 

 

Exists(Of T)

Определяет, содержит ли заданный массив элементы,

 

удовлетворяющие условиям указанного предиката.

 

 

Finalize

Позволяет объекту попытаться освободить ресурсы и

 

выполнить другие операции очистки, перед тем как

 

 

 

 

объект будет утилизирован в процессе сборки мусора.

 

 

(Унаследовано от Object.)

 

 

 

Find(Of T)

 

Выполняет поиск элемента, удовлетворяющего

 

 

условиям указанного предиката, и возвращает первое

 

 

найденное вхождение в пределах всего списка Array.

 

 

 

FindAll(Of T)

 

Извлекает все элементы, удовлетворяющие условиям

 

 

указанного предиката.

 

 

 

FindIndex(Of

T)(T(),

Выполняет поиск элемента, удовлетворяющего

Predicate(Of T))

 

условиям указанного предиката, и возвращает

 

 

отсчитываемый от нуля индекс первого найденного

 

 

вхождения в пределах всего списка Array.

 

 

FindIndex(Of T)(T(), Int32,

Выполняет поиск элемента, удовлетворяющего

Predicate(Of T))

 

условиям указанного предиката, и возвращает

 

 

отсчитываемый от нуля индекс первого вхождения в

 

 

диапазоне элементов списка Array, начиная с

 

 

заданного индекса и заканчивая последним

 

 

элементом.

 

 

FindIndex(Of T)(T(), Int32,

Выполняет поиск элемента, удовлетворяющего

Int32, Predicate(Of T))

условиям указанного предиката, и возвращает

 

 

отсчитываемый от нуля индекс первого вхождения в

 

 

диапазоне элементов списка Array, начинающемся с

 

 

заданного индекса и содержащем указанное число

 

 

элементов.

 

 

 

FindLast(Of T)

 

Выполняет поиск элемента, удовлетворяющего

 

 

условиям указанного предиката, и возвращает

 

 

последнее найденное вхождение в пределах всего

 

 

списка Array.

 

 

 

FindLastIndex(Of

T)(T(),

Выполняет поиск элемента, удовлетворяющего

Predicate(Of T))

 

условиям указанного предиката, и возвращает

 

 

отсчитываемый от нуля индекс последнего

 

 

найденного вхождения в пределах всего списка

 

 

Array.

 

 

 

FindLastIndex(Of

T)(T(),

Выполняет поиск элемента, удовлетворяющего

Int32, Predicate(Of T))

условиям указанного предиката, и возвращает

 

 

отсчитываемый от нуля индекс последнего вхождения

 

 

в диапазоне элементов списка Array, начиная с

 

 

первого элемента и заканчивая элементом с заданным

 

 

индексом.

 

 

 

FindLastIndex(Of

T)(T(),

Выполняет поиск элемента, удовлетворяющего

Int32, Int32, Predicate(Of

условиям указанного предиката, и возвращает

T))

 

отсчитываемый от нуля индекс последнего вхождения

 

 

в диапазоне элементов списка Array, содержащем

 

 

указанное число элементов и заканчивающемся

 

 

элементом с заданным индексом.

 

 

 

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]