Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекция №3. Циклы.doc
Скачиваний:
6
Добавлен:
11.12.2018
Размер:
75.26 Кб
Скачать

Цикл перебора foreach

Цикл foreach используется для просмотра всех объектов из некоторой группы данных, например массива, списка или другого контейнера. Он будет рассмотрен при изучении тем: Контейнеры, итераторы, массивы.

Рекомендации по выбору оператора цикла

Операторы цикла взаимозаменяемы, но можно привести некоторые рекомендации по выбору наилучшего в каждом конкретном случае.

Оператор do while обычно используют, когда цикл требуется обязательно выпол­нить хотя бы раз, например, если в цикле производится ввод данных.

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

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

Пример программы

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

namespace laba

{

class Program

{

static void Main(string[] args)

{

#region Главный код

string ye="y";

while (ye=="y")

{

Console.WriteLine("Впиши номер Лабы");

string y = Console.ReadLine();

switch (Convert.ToInt16(y))

{

case 1:

laba1(); //Запуск функции лаба по работе с массивом двумерным

break;

case 2: laba2();

break;

case 3: laba3();

break;

case 4: laba4(); //Лаба одномерный массив

break;

case 5: laba5();

break;

default : Console.WriteLine("Такой лабы нету повторите попытку");

break;

}

Console.Write("еще сделаем(y/n)? ");

ye = Console.ReadLine();

}

}

#endregion

#region Лаба 1

static void laba1()

{

Console.WriteLine("Поехали делать перву лабу");

int[,] masA = new int[3, 3], masB = new int[3, 3];

Console.WriteLine("Поеxали Забивать цифирки");

int k;

for (int i = 0; i < 3; i++) //Цикл от 0 до 3

{

k = 0;

for (int j = 0; j < 3; j++)

{

string y = Console.ReadLine();

masA[i, j] = Convert.ToInt16(y);

if (masA[i,j] == 0)

{

k++;

}

}

if (k == 0)

{

for (int j = 0; j < 3; j++)

{

masB[i, j] = masA[i, j];

}

}

}

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

masWin(masA); //функция по печати массива

masWinaddr(masA);

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

masWin(masB);

masWinaddr(masB);

}

static void masWinaddr(int[,] mass)

{

unsafe // Для работы с памятью(адрес) нужен не безопасный режим

{

for (int i = 0; i < 3; i++)

{

for (int j = 0; j < 3; j++)

{

fixed (int* y = &mass[i, j])

{

IntPtr addr = (IntPtr)y; // тут запуск идет памяти осталься от старай работы если не надо могу убрать

Console.Write(addr.ToString("x") + " ");

}

}

Console.WriteLine();

}

}

}

static void masWin(int[,] mass)

{

for (int i = 0; i < 3; i++)

{

for (int j = 0; j < 3; j++)

{

Console.Write(mass[i, j]);

}

Console.WriteLine();

}

}

#endregion

static void laba4()

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

{

int i=0;

string zn;

int[] a={1,1,2,3,4,5,6,7,8,9};

int[] b=new int[10],c=new int[10];

Console.Clear();

Console.WriteLine("Лаба 4");

Console.WriteLine("Вводим значения для массива с");

while (b.Length > i) //Цикл вайл, в условии вычисляется длина массива и //сравнивается с переменной, в цикле происходит забивка цикла

{

Console.WriteLine("Элемент"+i.ToString());

zn = Console.ReadLine();

b[i] = Convert.ToInt32(zn);

i++;

}

for (int j=0; j < 10; j++) // цикл фор от 0 до 10 в внутри цикла происходит //сложение двух массивов в один

{

c[j] = a[j] + b[j];

}

foreach (int f in c) // Цикл foreach используеться для перебора переменных //массива

{

Console.WriteLine(f.ToString());

}

}