04.06.2022, 00:10
|
Новичок на форуме
|
|
Регистрация: 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>
|
|
04.06.2022, 00:52
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,121
|
|
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>
|
|
04.06.2022, 09:33
|
Новичок на форуме
|
|
Регистрация: 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.
|
|
04.06.2022, 09:53
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,121
|
|
Сообщение от dakus
|
Не подскажете, как в данной задаче можно сделать ручной ввод массива?
|
кто писал код #1? там много лишнего, но всё есть, для формирования массива.
|
|
04.06.2022, 10:18
|
Новичок на форуме
|
|
Регистрация: 04.06.2022
Сообщений: 7
|
|
Сообщение от рони
|
кто писал код #1? там много лишнего, но всё есть, для формирования массива.
|
Это были мои попытки
Ваш вариант в разы лучше и не такой обьемный) Только не понимаю как сделать ручной ввод массива
|
|
04.06.2022, 10:20
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,121
|
|
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>
|
|
06.06.2022, 19:52
|
Новичок на форуме
|
|
Регистрация: 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>
|
Здравствуйте! Я извиняюсь,а как в данной задаче реализовать сортировку методом линейного выбора? Либо я что-то не так делаю,компирилирую,ввожу массив,печать есть,находит среднее арифметическое,сортировки не вижу
|
|
06.06.2022, 20:27
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,121
|
|
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>
|
|
|
|