- •Введение
- •Контрольная работа № 1 разработка приложений в microsoft visual studio 2008
- •Теоретические сведения Интерфейс Microsoft Visual Studio 2008
- •Создание консольного приложения
- •Построение xml-отчета по выполненному проекту
- •Создание приложения Windows Forms
- •Контрольные вопросы
- •Содержание и порядок выполнения работы
- •Контрольная работа № 2
- •Теоретические сведения Структура программы. Переменные и выражения
- •Литеральные константы
- •Операции и их старшинство
- •Операторы c#
- •If(выражение1) if(выражение2) if(выражение3) ...
- •Контрольные вопросы
- •Содержание и порядок выполнения работы
- •Примеры решения задач
- •Контрольная работа № 3 техника работы с массивами. Процедуры и функции
- •Теоретические сведения
- •Базовый класс для массивов
- •Процедуры и функции
- •Синтаксис методов
- •Формальные и фактические аргументы
- •Соответствие формальных и фактических аргументов
- •Функции с побочным эффектом
- •Функция Main()
- •Контрольные вопросы
- •Содержание и порядок выполнения работы
- •Примеры решения задач
- •Контрольная работа № 4 перечисления и структуры
- •Теоретические сведения
- •Базовый класс перечислений - System.Enum
- •Структуры
- •Контрольные вопросы
- •Содержание и порядок выполнения работы
- •Пример решения задачи
- •Контрольная работа № 5 обработка символов и строк
- •Теоретические сведения
- •Контрольные вопросы
- •Содержание и порядок выполнения работы
- •Примеры решения задачи
- •Контрольная работа № 6 проектирование классов. Составление программ с использованием ооп
- •Теоретические сведения
- •Контрольные вопросы
- •Содержание и порядок выполнения работы
- •Пример решения задачи
- •Заключение
- •Библиографический список
- •Оглавление
- •394026 Воронеж, Московский просп., 14
Примеры решения задач
Проверить, является ли двоичная запись натурального числа N палиндромом. N задано, и не должно превосходить 100. Палиндром - число, которое имеет одинаковое чтение слева направо и справа налево.
static int Main(string[] args)
{
int numb, kRazr, work;
bool flag=false;
Console.WriteLine("Введите натуральное число до 100");
numb= Convert.ToInt32(Console.ReadLine());
if (numb>100) return 0;
// посчитаем, сколько двоичных разрядов в числе
work=numb; kRazr=0;
while (work>0)
{ work>>=1; kRazr++; }
Console.WriteLine("Двоичных разрядов {0}",kRazr);
if ((numb&1)==0)
{ Console.WriteLine("Не палиндром"); return 0; }
for (int i=0; i<kRazr/2; i++)
{
// младший разряд (numb>>i)&1
// Старший разряд (numb>>(kRazr-i-1))&1
if (((numb>>i)&1)!=((numb>>(kRazr-i-1))&1))
{ flag=false; break; }
flag=true;
}
if (flag) Console.WriteLine("Палиндром");
else Console.WriteLine("Не палиндром");
return 0;
}
Среди последовательности вводимых натуральных чисел определить количество чисел содержащих цифру N. Количество вводимых чисел заранее не известно.
namespace ConsoleApplication3
{
class Class1
{
// процедура подсчета необходимых цифр
static int schet(int zifra,int N){
int k=0;
while (zifra>10){
// поиск цифры происходит через проверку остатка от деления на 10
double ost=zifra%10;
if (ost==N)
{
k=k+1;
break;
}
zifra=zifra/10;
}
if (zifra==N)
{ k=k+1; }
return k;
}
static void Main(string[] args)
{
Console.WriteLine("Какую цифру будем искать? ");
int N=Convert.ToInt32(Console.ReadLine());
Console.WriteLine("Вводите числа, выход - 0");
int rez=0;
int zifra;
bool usl_vix=true;
// числа вводятся пока пользователь не введет 0
while (usl_vix){
zifra=Convert.ToInt32(Console.ReadLine());
if (zifra!=0)
{
rez=rez+schet(zifra,N);}
else { usl_vix=false; }
}
Console.WriteLine(" Чисел, содержащих цифру = {0} равно = {1}",N,rez);
}
}
}
Контрольная работа № 3 техника работы с массивами. Процедуры и функции
Цель работы состоит в получении навыков использования одномерных и многомерных массивов, разработке функций.
Теоретические сведения
Массив представляет собой список индексированных переменных. Доступ к конкретному элементу осуществляется по индексу
<имяМассива>[<индекс>]
Индекс – целое число, начинается с 0.
Определяются массивы так:
<базовыйТип> [ ] <имя>;
Базовый тип может быть произвольным, в том числе перечислимым или структурой.
Прежде чем получить доступ к массиву, его надо инициализировать. Инициализировать массивы можно двумя способами:
1) задать его содержимое в литеральной форме;
2) указать размер массива и использовать для инициализации всех его элементов ключевое слово new.
Рассмотрим 1-й способ:
int [] myArr = {1, 4, 7, 99 };
Получили описание массива из 4 целых элементов со значениями, перечисленными в {}.
Объявление массива 2-м способом:
int [] myArr = new int[4];
Описали массив из 4-х целых элементов. По умолчанию элементы обнуляются.
Важное различие между массивами С++ и С# заключается в том, что в С# элементам массива автоматически присваиваются значения по умолчанию в зависимости от их типа. Например, для целочисленных элементов – 0, для объектов – null.
По желанию можно использовать оба способа
int [] myArr = new int[4] {1, 4, 7, 99 };
В этом случае размеры массива должны совпадать с количеством элементов в списке. Инициализировать массив можно и не в строке объявления
int [] myArr;
myArr = new int[4];
string[] firstName = new string[5];
firstName[0]=”Федя”;
firstName[1]=”Вася”;
firstName[2]=”Дима”;
firstName[3]=”Татьяна”;
firstName[4]=”Света”;
Если размерность массива задается с помощью переменной, то она должна объявляться со словом const.
Цикл foreach позволяет обращаться ко всем элементам массива очень просто:
foreach( <базовыйТип> <имя> in <массив>)
{
// можно использовать для доступа к очередному элементу
}
Например:
string[] myStrings = {"AAA","bbb","CCCC","dd"};
foreach( string s in myStrings)
{
Console.WriteLine(s);
}
Рис. 13. Результаты работы цикла foreach
Помимо простых массивов (одномерных) в C# имеется еще 2 основных типа массивов: многомерные и ломаные (jagged).
Многомерные массивы образуются простым сложением нескольких измерений. При этом все строки и все столбцы будут одинаковых длин.
Объявление и заполнение такого массива производится так:
1) double [,] matr = { {1,2,3}, {2,3,4}, {3,4,5} };
2) double [,] matr = new double [3,3] { {1,2,3}, {2,3,4}, {3,4,5} };
3) int [,] myMatrix;
myMatrix = new int[6,6];
for (int i=0; i<myMatrix.Length/6; i++)
{
for (int j=0; j<myMatrix.Length/6; j++)
{
myMatrix[i,j]=i*j;
Console.Write(myMatrix[i,j]+"\t");
}
Console.WriteLine();
}
Рис. 14. Вывод матрицы
Ломаный (или неровный, или ступенчатый) многомерный массив содержит в качестве своих внутренних элементов некоторое число внутренних массивов, каждый из которых может иметь свой внутренний уникальный размер. Например:
int [][] div1To10= { new int[] {1},
new int[] {1,2},
new int[] {1,3},
new int[] {1,2,4},
new int[] {1,5},
new int[] {1,2,3,6},
new int[] {1,7},
new int[] {1,2,4,8},
new int[] {1,3,9},
new int[] {1,2,5,10}};
// теперь пройтись по каждому элементу ломаного массива можно так
foreach( int[] divOfInt in div1To10)
{
foreach(int i in divOfInt)
{
Console.Write(i+" ");
}
Console.WriteLine();
}
Рис. 15. Вывод ломаного массива
int [][] myJagArray = new int[5][];
//Создаем ломаный массив
for (int i=0; i<myJagArray.Length; i++)
{
myJagArray[i] = new int[i+7];
}
//Выводим каждую строку массива. По умолчанию все элементы=0
for (int i=0; i<5; i++)
{
Console.Write("Длина {0}-й строки равна {1}:\t",i,myJagArray[i].Length);
for (int j=0; j<myJagArray[i].Length; j++)
{
Console.Write(myJagArray[i][j]+" ");
}
Console.WriteLine(); }
Рис. 16. Вывод размера строки и элементов ломаного массива