Студопедия

Главная страница Случайная страница

Разделы сайта

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






Вывод элементов






Console.WriteLine(" \n " + j + " " + iArray[j]);

}

}

}

 

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

iArray[j] = Convert.ToInt32(strValue);

преобразует строковую переменную strValue в целое 32-разряд­ное число. Ввод и преобразование происходит в цикле, после завер­шения которого массив iArray содержит исходные данные.

Каждый объект (переменная), каждый операнд при вычислении выражения, в том числе и само выражение характеризуется парой (значение, тип), задающей значение выражения и его тип. В процессе вычислений зачастую возникает необходимость преобра­зования типов - необходимость преобразовать пару (значение1, тип1) к паре (значение2, тип2).

 

Исходная пара называется источником преобразования, заключительная - целью преобразова­ния. Некоторые преобразования типов выполняются автоматичес­ки. Такие преобразования называются неявными, и они часто встре­чаются при вычислении выражений. Все остальные преобразования называются явными и для них существуют разные способы таких преобразований - операция кастинга (приведение к типу), методы специального класса Convert, специальные методы ToString, Parse.

Все скалярные типы (арифметический, логический, символь­ный) имеют статический метод Parse, аргументом которого являет­ся строка, а возвращаемым результатом - объект соответствующего типа. Метод явно выполняет преобразование текстового представ­ления в тот тип данных, который был целью вызова статического метода.

Для преобразований внутри арифметического типа можно ис­пользовать кастинг - приведение типа. Для преобразований стро­кового типа в скалярный тип можно применять метод Parse, а в об­ратную сторону - метод ToString.

Однако, во всех ситуациях, когда требуется выполнить преоб­разование из одного базового встроенного типа в другой базовый тип, можно использовать методы универсального класса Convert, встроенного в пространство имен System.

Методы класса Convert поддерживают общий способ выполне­ния преобразований между типами. Класс Convert содержит 15 статических методов вида (ToInt16(), ToInt32(), ToInt64(),..., ToDouble, ToDecimal,...,). Единственным исключе­нием является тип object - метода ToObject нет по понятным причинам, поскольку для всех типов существует неявное преобра­зование к типу object. Каждый из этих 15 методов перегружен, и его аргумент может принадлежать к любому из упомянутых типов. С учетом перегрузки с помощью методов этого класса можно осу­ществить любое из возможных преобразований одного типа в дру­гой.

Пример 3.

// Заполнение массива с помощью генератора случайных

// чисел using System;

namespace Example5

{

class Example5_3

{

static void Main()

{

int j, num1, num2;

string str;

double db1, db2;

Random rnd = new Random();

int[ ] iArray1 = new int[10];

int[ ] iArray2 = new int[10];

double[ ] dArray1 = new double[10];

double[ ] dArray2 = new double[10];

for (j = 0; j < 10; j++)

{

iArray1[j] = rnd.Next(1, 101);

iArray2[j] = 50 - rnd.Next(1, 101);

}

for (j = 0; j < 10; j++)

{

num1 = rnd.Next(1, 101);

db1 = Convert.ToDouble(num1);

dArray1[j] = db1 + Convert.ToDouble(rnd.Next(1, 101)) / 100;

num2 = 50 - rnd.Next(1, 101);

db2 = Convert.ToDouble(num2);

dArray2[j] = db2 - Convert.ToDouble(rnd.Next(1, 101)) / 100;

}

Console.WriteLine(" \n ---------------------------------------- -------------------------- -------");

Console.WriteLine(" \n Массивы типа int Массивы типа double");

Console.WriteLine(" \n ---------------------------------------- ----------------------------------");

for (j = 0; j < 10; j++)

{

str = string.Format(" \n {0, 4: D} {1, 6: D} {2, 6: D} {3, 8: D} {4, 8: F2} {5, 8: F2}",

j, iArray1[j], iArray2[j], j, dArray1[j], dArray2[j], ];

Console.WniteLine(str);

Console.WriteLine(" \n ---------------------------------------- ----------------------------------");

Console.WniteLine();

}

}

}

 

В данном примере для заполнения массива используется гене­ратор случайных чисел. Для генерирования последовательного ряда случайных чисел служит класс Random. Такие последовательности чисел оказываются полезными в самых разных ситуациях включая имитационное моделирование. Начало последовательности случай­ных чисел определяется некоторым начальным числом, которое может задаваться автоматически или указываться явным образом.

 

В классе Random определяются два конструктора:

public Random ()

public Random(int seed)

 

Первый конструктор создает объект типа Random, использую­щий системное время определения начального числа. А во втором конструкторе используется начальное значение seed, задаваемое явным образом.

В первом цикле заполняются массивы iArray1 и iArray2, причем массив iArray1 заполняется числами от 0 до 100, мас­сив iArray2 заполняется числами от -50 до 50. В этих же ин­тервалах находятся и числа num1 и num2, которые в следующих строках преобразуются к типу double. Оператор Convert.ToDouble(rnd.Next(1, 101)) / 100; генерирует случайные числа, находящиеся в интервале от 0.0 до 1.0. Таким образом, массивы dArray1 и dArray2 будут содер­жать числа типа double. Основные методы класса Random пред­ставлены в таблице:

 

Метод Назначение
Public virtual int Next(int UpperBound) Возвращает следующее случайное целое число, которое будет находи­ться в пределах от 0 до UpperBound -l включительно
Public virtual int Next (int LowerBound, int UpperBound) Возвращает следующее случайное целое число, которое будет находи­ться в пределах от LowerBound до UpperBound -1 включительно
Public virtual double NextDouble (int UpperBound) Возвращает следующее случайное число с плавающей точкой, больше или равно 0, 0 и меньше 1, 0

 

 

Пример 4.

// Ввод массива в файл и вывод массива из файла

using System;

using System.IO;

namespace Example5

{

class Example5_4

{

static void Main()

{

int j;

string strValue;

int[ ] iArray1 = new int[10];

int[ ]iArray2 = new int[10];

StreamReader sRead = new StreamReader(" C: \\dat.txt");

StreamWriter sWrite = new StreamWriter (" C: \\res.txt");

for (j = 0; j < 10; j++)

{

strValue = sRead.ReadLine();

iArray1 [j] = Conveгt.ToInt32(stгValue);

iArray2[j] = 10 * iArray1 [j];

stгValue = stгing.Foгmat(" \n {0, 4: D} {1, 6: D} {2, 6: D}", j, iArray1[j],

iArray2 [j]);

Console.WriteLine(strValue);

Console.WгiteLine();

sWгite.WгiteLine(iArray2[j]);

}

sRead.Close();

sWгite.Close();

}

}

}

 

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

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

" \n {0, 4: D} {1, 6: D} {2, 6: D}",

где в первой позиции расположены цифры 0, 1 и 2, которые явля­ются соответственно указателями на j, iArray1, iArray2. Код форматирования 4: D определяет число позиций (4), отведенных в строке вывода для данного целого числа (D - формат типа deci­mal).

 


 

Пример 5.






© 2023 :: MyLektsii.ru :: Мои Лекции
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
Копирование текстов разрешено только с указанием индексируемой ссылки на источник.