Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 04.06.2022, 00:10
Новичок на форуме
Отправить личное сообщение для dakus Посмотреть профиль Найти все сообщения от dakus
 
Регистрация: 04.06.2022
Сообщений: 7

Найти количество эл.меньших ср.арифм.всех элементов и сортировка
Добрый день! Возникли трудности с задачей. Я так понимаю нужно задать один массив,и реализовать 3 функции которые будут обрабатывать массив,но я не понимаю как реализовать эти функции,может кто поможет,наброски прилагаю.
Условие: Ввод вектора должен осуществляться в текстовое поле через разделитель или запятую. Вывод результатов в текстовую область или консоль.(Одномерный qмассив)
Для реализации каждой из трёх условий должны быть обязательно использованы отдельные функции:
1) Дан вещественный вектор А(n). Найти количество элементов вектора, меньших
среднего арифметического всех его элементов.
2) Получить новый вектор путем умножения элементов стоящих перед минимальным элементом на максимальный элемент вектора. На печать выдавать исходный вектор, максимальный, минимальный элементы и полученный вектор.
3) Отсортировать его элементы методом линейного выбора.

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8" />
    <title>JavaScript</title>
</head>
<body>
<script>
var R = prompt("Введите размерность массива");
if (R.replace(/\s/g, '').length === 0 || isNaN(R) || R < 0) {
  alert('ERROR!! ERROR!!');
  exit();
}
var mass = [];
var oi
for(var i=0; i < R; i++) {
    oi=i+1;
     mass[i] = +prompt("Введите значение "+ oi +"-ого элемента массива");
        if (mass[i].toString().replace(/\s/g, '').length === 0 || isNaN(mass[i])) {
  alert('ERROR!! ERROR!!');
  exit();
        }
        }
var sum = 0;
for (var i=0; i<R; i++){
sum=sum + mass[i];
}
document.write("Сумма элементов массива: "+sum);
 document.write("<br>")
arif=sum/R;
document.write("Среднее арифметическое элементов массива: "+arif);
 document.write("<br>")
document.write("Полученный массив: ");
for(var i=0; i < R; ++i) {
    document.write(mass[i]+" ")
}
 document.write("<br>")
  var a = +prompt("Нажмите 1 для нахождения элементов меньше среднего ")
if (a.toString().replace(/\s/g, '').length === 0 || (isNaN(a))){
  alert('ERROR!! ERROR!!');
  exit();}
switch (a){
  case 1:
  document.write("Элементы массива меньшие среднего арифметического: ");
for (var i=0; i<R; i++){
if (mass[i] < arif)
document.write(mass[i]+" ")
}
 
  }
</script>
</body>
</html>
Ответить с цитированием
  #2 (permalink)  
Старый 04.06.2022, 00:52
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,103

dakus,
<body>
 <script>
function middle(arr)
{
  let sum = 0;
  for (let x of arr) sum += x;
  let midpoint = sum / arr.length;
  let count = 0;
  for (let x of arr) count += x < midpoint ;
  return count;
}

let arr = [1, 2, 3, 4, 5]
document.body.append(middle(arr))
</script>
<br>
<script>
function maxMin(arr)
{
  let max = arr[0], min = arr[0];
  for (let x of arr) {
  if(x > max) max = x;
  if(x < min) min = x;
  }
  let clone = [], up = true;
  for (let x of arr) {
  if(x == min) up = false;
  if(up) x *= max;
  clone.push(x);
  }
  return {arr, clone, max, min};
}

let ar = [3, 2, 1, 4, 5];
document.body.append(JSON.stringify(maxMin(ar)));
</script>

</body>
Ответить с цитированием
  #3 (permalink)  
Старый 04.06.2022, 09:33
Новичок на форуме
Отправить личное сообщение для dakus Посмотреть профиль Найти все сообщения от dakus
 
Регистрация: 04.06.2022
Сообщений: 7

Сообщение от рони Посмотреть сообщение
dakus,
<body>
 <script>
function middle(arr)
{
  let sum = 0;
  for (let x of arr) sum += x;
  let midpoint = sum / arr.length;
  let count = 0;
  for (let x of arr) count += x < midpoint ;
  return count;
}

let arr = [1, 2, 3, 4, 5]
document.body.append(middle(arr))
</script>
<br>
<script>
function maxMin(arr)
{
  let max = arr[0], min = arr[0];
  for (let x of arr) {
  if(x > max) max = x;
  if(x < min) min = x;
  }
  let clone = [], up = true;
  for (let x of arr) {
  if(x == min) up = false;
  if(up) x *= max;
  clone.push(x);
  }
  return {arr, clone, max, min};
}

let ar = [3, 2, 1, 4, 5];
document.body.append(JSON.stringify(maxMin(ar)));
</script>

</body>
Спасибо вам большое! Не подскажете, как в данной задаче можно сделать ручной ввод массива? Например через консоль или текстовую область

Последний раз редактировалось dakus, 04.06.2022 в 09:39.
Ответить с цитированием
  #4 (permalink)  
Старый 04.06.2022, 09:53
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,103

Сообщение от dakus
Не подскажете, как в данной задаче можно сделать ручной ввод массива?
кто писал код #1? там много лишнего, но всё есть, для формирования массива.
Ответить с цитированием
  #5 (permalink)  
Старый 04.06.2022, 10:18
Новичок на форуме
Отправить личное сообщение для dakus Посмотреть профиль Найти все сообщения от dakus
 
Регистрация: 04.06.2022
Сообщений: 7

Сообщение от рони Посмотреть сообщение
кто писал код #1? там много лишнего, но всё есть, для формирования массива.
Это были мои попытки
Ваш вариант в разы лучше и не такой обьемный) Только не понимаю как сделать ручной ввод массива
Ответить с цитированием
  #6 (permalink)  
Старый 04.06.2022, 10:20
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,103

dakus,
<body>
 <script>
function createArr()
{  const arr = [];
   let elem;
   while ((elem = prompt(`Введите значение ${arr.length + 1}-ого элемента массива`)) !== null) arr.push(Number(elem)||0);
   return arr
}

function middle(arr)
{
  let sum = 0;
  for (let x of arr) sum += x;
  let midpoint = sum / arr.length;
  let count = 0;
  for (let x of arr) count += x < midpoint ;
  return {arr, midpoint, count};
}

let arr = createArr();
document.body.append(JSON.stringify(middle(arr)))
</script>
<br>
<script>
function maxMin(arr)
{
  let max = arr[0], min = arr[0];
  for (let x of arr) {
  if(x > max) max = x;
  if(x < min) min = x;
  }
  let clone = [], up = true;
  for (let x of arr) {
  if(x == min) up = false;
  if(up) x *= max;
  clone.push(x);
  }
  return {arr,  max, min, clone};
}

let ar = createArr();
document.body.append(JSON.stringify(maxMin(ar)));
</script>

</body>
Ответить с цитированием
  #7 (permalink)  
Старый 06.06.2022, 19:52
Новичок на форуме
Отправить личное сообщение для dakus Посмотреть профиль Найти все сообщения от dakus
 
Регистрация: 04.06.2022
Сообщений: 7

Сообщение от рони Посмотреть сообщение
dakus,
<body>
 <script>
function createArr()
{  const arr = [];
   let elem;
   while ((elem = prompt(`Введите значение ${arr.length + 1}-ого элемента массива`)) !== null) arr.push(Number(elem)||0);
   return arr
}

function middle(arr)
{
  let sum = 0;
  for (let x of arr) sum += x;
  let midpoint = sum / arr.length;
  let count = 0;
  for (let x of arr) count += x < midpoint ;
  return {arr, midpoint, count};
}

let arr = createArr();
document.body.append(JSON.stringify(middle(arr)))
</script>
<br>
<script>
function maxMin(arr)
{
  let max = arr[0], min = arr[0];
  for (let x of arr) {
  if(x > max) max = x;
  if(x < min) min = x;
  }
  let clone = [], up = true;
  for (let x of arr) {
  if(x == min) up = false;
  if(up) x *= max;
  clone.push(x);
  }
  return {arr,  max, min, clone};
}

let ar = createArr();
document.body.append(JSON.stringify(maxMin(ar)));
</script>

</body>
Здравствуйте! Я извиняюсь,а как в данной задаче реализовать сортировку методом линейного выбора? Либо я что-то не так делаю,компирилирую,ввожу массив,печать есть,находит среднее арифметическое,сортировки не вижу
Ответить с цитированием
  #8 (permalink)  
Старый 06.06.2022, 20:27
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,103

dakus,
не копируйте сообщения целиком, если в этом нет особой надобности.
<body>
    <script>
        function createArr() {
            const arr = [];
            let elem;
            while ((elem = prompt(`Введите значение ${arr.length + 1}-ого элемента массива`)) !== null) arr.push(Number(elem) || 0);
            return arr
        }
    </script>
    <br>
    <script>
        function sort(arr) {
            const {
                length
            } = arr;
            for (let i = 0; i < length; i++) {
                let min = arr[i], k = i;
                for (let j = i + 1; j < length; j++) {
                    let el = arr[j];
                    if (el < min) {
                        min = el;
                        k = j
                    }
                }
                [arr[i], arr[k]] = [arr[k],arr[i]]
            }
            return arr;
        }
        let ar = createArr();
        document.body.append(JSON.stringify(sort(ar)));
    </script>
</body>
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Просмотрела исходик jQuery Откорректируйте где не верно taksebe jQuery 5 23.11.2018 22:42
Найти количество элементов списка jeysmook jQuery 15 18.07.2014 16:50
запретить изменение количество элементов в списке Antistas jQuery 0 05.12.2012 14:05
Сортировка элементов по количеству Dorian_bs Общие вопросы Javascript 22 10.10.2011 12:19
Как ограничить количество элементов (списков <li>) массивов Naum Элементы интерфейса 2 04.04.2011 11:56