Top.Mail.Ru
Ответы
Аватар пользователя
6мес
Аватар пользователя
Аватар пользователя
Аватар пользователя
Программирование
+4

Основы программирования на C#, 1 курс

Составить программу, предусматривающую обработку значений одномерного массива. Ввод/вывод осуществлять с использованием компонентов классов TextBox.

Даны вещественный массив А размером n и вещественный массив X размером m. Найти минимум и максимум функции Y=ai xj для различных пар элементов массивов (i = 1..n; j = 1..m).


Желательно побольше пояснений и поменьше замудрений в коде. Хотелось бы не тупо копи пасту делать , а еще понять что я делаю.

По дате
По рейтингу
Аватар пользователя
Новичок
6мес
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
   private List<float> a_array = new(); // Массив А 
  private List<float> b_array = new(); // Массив B 
  private bool isSign = false; 
  public Form1() 
  { 
      InitializeComponent(); 
      textBox1.Text = "Введите элементы массива А через пробел, затем поставьте ; и через пробел введите элементы массива В."; 
  } 
 
  private void textBox1_KeyDown(object sender, KeyEventArgs e) 
  { 
      if (e.KeyCode == Keys.Enter) // если клавиша Enter нажата 
      { 
          if (textBox1.Text.Length > 0) // если пользователь ввел хоть какой-то символ 
          { 
              string buff = ""; // строка для записи числа перед тем как его "отправить" в массив 
              // читаем все сиволы строки в TextBox 
              for (int i = 0; i < textBox1.Text.Length; i++) 
              { 
                  if (textBox1.Text[i] == ';') 
                  { 
                      isSign = true; // мы закончали вводить элементы в массив А 
                      a_array.Add(float.Parse(buff)); // у нас в буффере явно будет "валяться" число, которое 
                                                      // стоит перед точкой запятой, а оно принадлежит массиву А 
                      buff = ""; // очищаем буффер 
                      continue; // и начинаем новую итерацию цикла 
                  } 
                  buff += textBox1.Text[i] != ' ' ? textBox1.Text[i] : ""; // считываем символ 
 
                  if (textBox1.Text[i] == ' ' && !isSign) // если точка с запятой еще не считана 
                  { 
                      a_array.Add(float.Parse(buff)); // добавляем число в буффере в массив 
                      buff = ""; // а затем очищаем сам буффер 
                  } 
 
                 else if (textBox1.Text[i] == ' ' && isSign) // если же мы считали точку запятую, которая говорит, что пора вводить элементы для массива B 
                 { 
                      b_array.Add(float.Parse(buff)); // добавляем число в буффере в массив B 
                      buff = ""; // очищаем сам буфер 
                 } 
              } 
              b_array.Add(float.Parse(buff)); // в конце цикла буфер все еще будет заполнен каким-то числом 
              // так как это число находится за точкой запятой, то оно принадлежит массиву B, так что добавляем это число в массив B 
          } 
          // если в обоих массивах находятся какие-то числа, то применяем формулу Y = ai * bj 
          if (a_array.Count > 0 && b_array.Count > 0) 
          { 
              // минимальное значение функции Y будет тогда и только тогда, когда сами множители  
              // ai и bj минимальны, та же логика и для  максимального значения. 
              textBox1.Text = $"minY и maxY соответственно равны: " + 
                  $"{a_array.Min(i => i) * b_array.Min(j => j)} ; " + 
                  $"{a_array.Max(i => i) * b_array.Max(j => j)}" ; 
              // Вы могли бы пройтись циклом по массивам а и b и найти минимальные и максимальные значения, 
              // но это слишком громоздко, поэтому я здесь чутка применил LINQ. 
 
          } 
          else { textBox1.Text = "Ошибка!";  } // если же в каком-то массиве нет элементов выводим ошибку 
 
      } 
  } 
Аватар пользователя
Знаток
6мес

Это же элементарно. Но за бабки.

Аватар пользователя
Профи
6мес

Братан если ты собрался стать программистом но просишь решения с первого курса, ты станешь максимум сисадмином

Аватар пользователя
Профи
6мес

За бесплатно зам делай за 400р подумаю

Аватар пользователя
Знаток
6мес

За бесплатно никто это делать не будет