wikail

Comp

Dec 2nd, 2020
505
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. using System;
  2. using System.Collections.Generic;
  3.  
  4. //Описать структуру для записи данных о компьютерах,
  5. //должна быть возможность редактировать логические диски (добавлять, удалять, менять размер).
  6. //Создать функцию которая будет принимать на вход одномерный массив таких компов
  7. //и возвращать тот у которого больше памяти.
  8.  
  9. //1. Создаем структуру SComp - описание компьютера.
  10. //2. Создаем подструктуру SDrive - описание логического диска
  11. //3. В структуре SComp создаем список дисков (т.к. есть задача добавлять/удалять, массив не подойдет).
  12. //4. В функции проходимся двумя вложенными циклами: сначала по компам, потом по дискам в одном компе
  13.  
  14. namespace Comp
  15. {
  16.     class Program
  17.     {
  18.         public struct SComp
  19.         {
  20.             public int Num;
  21.             public int RAM;
  22.             public string Proc;
  23.             public List<SDrive> Drives;//чтобы можно было удалять/добавлять
  24.  
  25.            //Подструктура, описывающая логический диск
  26.             public struct SDrive
  27.             {
  28.                 public string DriveName;
  29.                 public int DriveSize;
  30.  
  31.                 //конструктор
  32.                 public SDrive(string newDriveName, int newDriveSize)
  33.                 {
  34.                     DriveName = newDriveName;
  35.                     DriveSize = newDriveSize;
  36.                 }
  37.             }
  38.             //конструктор
  39.             public SComp(int newNum, int newRAM, string newProc, List<SDrive> newDrives)
  40.             {
  41.                 Num = newNum;
  42.                 RAM = newRAM;
  43.                 Proc = newProc;
  44.                 Drives = newDrives;
  45.             }
  46.         }
  47.  
  48.         static void Main(string[] args)
  49.         {
  50.             SComp a = new SComp(1, 8, "Intel Core 1.5", new List<SComp.SDrive>());
  51.             SComp b = new SComp(2, 16, "Intel Core 1.6", new List<SComp.SDrive>());
  52.             SComp c = new SComp(3, 16, "Intel Core 1.7", new List<SComp.SDrive>());
  53.  
  54.             SComp[] arr = new SComp[3];
  55.             arr[0] = a;
  56.             arr[1] = b;
  57.             arr[2] = c;
  58.  
  59.             arr[0].Drives.Add(new SComp.SDrive("C", 512));
  60.             arr[0].Drives.Add(new SComp.SDrive("D", 256));
  61.             arr[1].Drives.Add(new SComp.SDrive("C", 256));
  62.             arr[1].Drives.Add(new SComp.SDrive("D", 256));
  63.             arr[2].Drives.Add(new SComp.SDrive("C", 1024));
  64.  
  65.             CalculateMemory(arr);
  66.             Console.WriteLine("The largest memory in computer " + CalculateMemory(arr).Num);
  67.         }
  68.  
  69.         public static SComp CalculateMemory(SComp[] arr)
  70.         {
  71.             SComp rightComp = arr[0];//нужный комп (с большей памятью)
  72.             int temp = 0;//храним промежуточное значение наибольшей памяти
  73.  
  74.             for (int i = 0; i < arr.Length; i++) //проходимся по компам
  75.             {
  76.                 int memory = 0;
  77.  
  78.                 for (int j = 0; j < arr[i].Drives.Count; j++)//проходимся по списку дисков
  79.                 {
  80.                     memory += arr[i].Drives[j].DriveSize;
  81.                 }
  82.  
  83.                 if (memory > temp)//подразумеваем, что компов с одинаковой памятью нет
  84.                 {
  85.                     rightComp = arr[i];
  86.                     temp = memory;
  87.                 }
  88.  
  89.             }
  90.  
  91.             return rightComp;
  92.         }
  93.     }
  94. }
  95.  
RAW Paste Data