Как итерироваться по полям массива структуры? (С#)
Существует определённая структура:
public struct Ok
{
public string name;
public string surname;
public string lastname;
public string gender;
public string nationality;
public DateTime date_of_birth;
public string number;
public string address;
public float pension;
}
Каким образом можно проитерироваться по полю pension и найти минимальное значение, записанное в массив структуры? (arr)
using System;
namespace ConsoleApp24
{
class Program
{
public struct Ok
{
public string name;
public string surname;
public string lastname;
public string gender;
public string nationality;
public DateTime date_of_birth;
public string number;
public string address;
public float pension;
}
static void Main(string[] args)
{
Ok[] arr = new Ok[0];
for (int i = 0; ; i++)
{
Console.Write("Хотите ли вы добавить человека в реестр(+/-)?: ");
string a = Console.ReadLine();
if (a == "+")
{
Array.Resize(ref arr, arr.Length + 1);
Console.Write("Введите имя: ");
arr[i].name = Console.ReadLine();
Console.Write("Введите фамилию: ");
arr[i].surname = Console.ReadLine();
Console.Write("Введите отчество: ");
arr[i].lastname = Console.ReadLine();
Console.Write("Введите пол: ");
arr[i].gender = Console.ReadLine();
Console.Write("Введите национальность: ");
arr[i].nationality = Console.ReadLine();
Console.Write("Введите дату рождения: ");
arr[i].date_of_birth = DateTime.Parse(Console.ReadLine());
Console.Write("Введите номер: ");
arr[i].number = Console.ReadLine();
Console.Write("Введите адрес: ");
arr[i].address = Console.ReadLine();
Console.Write("Введите количество лет на пенсии: ");
arr[i].pension = float.Parse(Console.ReadLine());
}
else
{
break;
}
}
int numb = 0;
float min = arr[0].pension;
Console.WriteLine();
Console.WriteLine("Пенсионеры которые на пенсии больше 5 лет: ");
Console.WriteLine();
Console.WriteLine();
for (int i = 0; i < arr.Length; i++)
{
if (min > arr[i].pension)
{
Console.WriteLine(arr[i].name);
Console.WriteLine(arr[i].surname);
Console.WriteLine(arr[i].lastname);
Console.WriteLine(arr[i].gender);
Console.WriteLine(arr[i].nationality);
Console.WriteLine(arr[i].date_of_birth);
Console.WriteLine(arr[i].number);
Console.WriteLine(arr[i].address);
Console.WriteLine(arr[i].pension);
min = arr[i].pension;
}
}
}
}
}
Ответы (2 шт):
Автор решения: Igor
→ Ссылка
if (arr.Length > 0) {
int iMinPension = 0;
for (int i = 0; i < arr.Length; i++) {
if (arr[i].pension < arr[iMinPension].pension)
iMinPension = i;
}
Console.WriteLine("person with the smallest pension:");
Console.WriteLine(arr[iMinPension].name);
Console.WriteLine(arr[iMinPension].pension);
}