Цикл перебора 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());
}
}