Форум программистов, компьютерный форум, киберфорум
Java SE (J2SE)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/3: Рейтинг темы: голосов - 3, средняя оценка - 4.67
 Аватар для иван я
17 / 17 / 16
Регистрация: 15.12.2012
Сообщений: 536

Исправить код

20.09.2015, 13:05. Показов 743. Ответов 18
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
В целочисленном векторе vectorn найти минимальный и максимальный элементы. Предусмотреть случай, когда таких элементов нет (все элементы вектора равны между собой). Перевернуть элементы вектора, расположенные между ними (выполнить “поплавок”).
Входные данные:
n=10
v_min=-5
v_max=10
Исходный вектор:
7 -5 1 3 -2 5 2 0 10 1

Выходные данные:
min=-5 n_min=2
max=10 n_max=9
Выходной вектор:
7 -5 0 2 5 -2 3 1 10 1

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
package lab{
public static void main(String[] args){
Scanner sc=new Scanner(System.in);
System.out.println("v_min");
int vmin=sc.nextInt();
System.out.println("v_max");
int vmax=sc.nextInt();
System.out.println("n");
int n=sc.nextInt();
Random r=new Random();
        int[] m=new int[n+1];
        for(int i=1;i<=n;i++){
        m[i]=r.nextInt(vmax-vmin+1)+vmin;
        }
        int max1=m[1],mini=1,maxi=1,min1=m[1];
        for(int i=2;i<=n;i++){
        if(m[i]>max1){
        maxi=i;
        max1=m[i];
        }
        if(m[i]<min1){
        mini=i;
        min1=m[i];
        }
        }
        
        for(int i=1;i<=n;i++){
        System.out.println(m[i]+"  ");
        }
        
        int j=0,v;
        if(maxi>mini){
        for(int i=mini;i>=(maxi/2);i--){
        v=m[i];
        m[i]=m[maxi-j];
        m[maxi-j]=v;
        j++;
        }
        }else{
        for(int i=maxi;i>=(mini/2);i--){
        v=m[i];
        m[i]=m[maxi-j];
        m[maxi-j]=v;
        j++;}}
 
       System.out.println("min="+min1+"n_min="+mini+"\n max="+max1+"n_max="+maxi);
for(int i=1;i<=n;i++){
System.out.println(m[i]+" ")}}}
Помогите найти ошибку в коде.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
20.09.2015, 13:05
Ответы с готовыми решениями:

Исправить код
Есть программа для определения корректно или не корректно расставлены скобкиimport java.util.Stack; public class Exercise4 { ...

Исправить код
Всем Привет помогите пожалуйста с исправлением кода, есть вот такой код: class C { public static void main(String ...

Исправить код
У меня результат получается не совсем такой как надо, в конечном итоге вместо того чтобы сравнить слова между собой, он сравнивает не текст...

18
6 / 6 / 1
Регистрация: 03.02.2013
Сообщений: 38
20.09.2015, 13:40
А вектор то где? Vector!!!
0
 Аватар для иван я
17 / 17 / 16
Регистрация: 15.12.2012
Сообщений: 536
20.09.2015, 14:04  [ТС]
maximyep,
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
package lab{
public static void main(String[] args){
Scanner sc=new Scanner(System.in);
System.out.println("v_min");
int vmin=sc.nextInt();
System.out.println("v_max");
int vmax=sc.nextInt();
System.out.println("n");
int n=sc.nextInt();
Random r=new Random();
        int[] m=new int[n+1];
        for(int i=1;i<=n;i++){
        m[i]=r.nextInt(vmax-vmin+1)+vmin;
        }
        int max1=m[1],mini=1,maxi=1,min1=m[1];
        for(int i=2;i<=n;i++){
        if(m[i]>max1){
        maxi=i;
        max1=m[i];
        }
        if(m[i]<min1){
        mini=i;
        min1=m[i];
        }
        }
        System.out.println(" Исходный вектор");
        for(int i=1;i<=n;i++){
        System.out.println(m[i]+"  ");
        }
        
        int j=0,v;
        if(maxi>mini){
        for(int i=mini;i>=(maxi/2);i--){
        v=m[i];
        m[i]=m[maxi-j];
        m[maxi-j]=v;
        j++;
        }
        }else{
        for(int i=maxi;i>=(mini/2);i--){
        v=m[i];
        m[i]=m[maxi-j];
        m[maxi-j]=v;
        j++;}}
 
       System.out.println("min="+min1+"n_min="+mini+"\n max="+max1+"n_max="+maxi);
System.out.println(" Выходной вектор");
for(int i=1;i<=n;i++){
System.out.println(m[i]+" ");}}}
Вот так надеюсь будет понятней где какой вектор. Вектор у меня это одномерный массив состоящий из n элементов.

Добавлено через 19 минут
сгенерированый рандомно в заданном диапазоне
0
6 / 6 / 1
Регистрация: 03.02.2013
Сообщений: 38
20.09.2015, 14:08
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
import java.util.Random;
import java.util.Vector;
 
/**
 *
 * @author maksym
 */
public class v {
 
    public static void main(String[] args) {
        Vector<Integer> v = new Vector<Integer>();
        Vector<Integer> vOut = new Vector<Integer>();
        Random r = new Random();
        Integer n = 10;
        Integer min;
        Integer max;
        int x = 0;
        int y = 0;
        for (int i = 0; i < n; i++) {
            v.add(r.nextInt());
        }
 
        for (Integer k : v) {
            System.out.println(k);
        }
        min = v.get(0);
 
        max = v.get(0);
 
        for (int i = 1; i < n; i++) {
            if (max < v.get(i)) {
                max = v.get(i);
                x = i;
            }
            if (min > v.get(i)) {
                min = v.get(i);
                y = i;
            }
        }
        System.out.println("min=" + min);
        System.out.println("max=" + max);
 
        for (int i = 0; i < n; i++) {
            if ((i > x) && (i < y)) {
                vOut.add(v.get(i));
                y--;
                continue;
            }
            vOut.add(v.get(i));
        }
 
        for (Integer k : vOut) {
            System.out.println(k);
        }
    }
}
0
6 / 6 / 1
Регистрация: 03.02.2013
Сообщений: 38
20.09.2015, 14:09
0
 Аватар для иван я
17 / 17 / 16
Регистрация: 15.12.2012
Сообщений: 536
20.09.2015, 14:17  [ТС]
maximyep, Это что? Вы читали задание? там даже пример есть того что должно получиться
Входные данные:
n=10
v_min=-5
v_max=10
Исходный вектор:
7 -5 1 3 -2 5 2 0 10 1

Выходные данные:
min=-5 n_min=2
max=10 n_max=9
Выходной вектор:
7 -5 0 2 5 -2 3 1 10 1
Добавлено через 1 минуту
maximyep, У меня ошибка в сортировке методом "поплавок" Он не переворачивает элементы находящиеся между максимальным и минимальным элементом массива

Добавлено через 2 минуты
тут был мой недочет что я не сказал где искать ошибку
0
6 / 6 / 1
Регистрация: 03.02.2013
Сообщений: 38
20.09.2015, 16:16
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
import static java.lang.Integer.max;
import static java.lang.Integer.min;
import static java.lang.Math.abs;
import java.util.Random;
import java.util.Scanner;
 
 
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("v_min");
        int vmin = -5;
        System.out.println("v_max");
        int vmax = 10;
        System.out.println("n");
        int n = 10;
 
        //      n=10
//v_min=-5
//v_max=10
        Random r = new Random();
        //  int[] m = new int[n + 1];
        //    for (int i = 1; i <= n; i++) {
        //        m[i] = r.nextInt(vmax - vmin + 1) + vmin;
        //    }
        int[] m = new int[]{-7, -5, 2, 9, 5, 12, 30, 9, 8, 3};
        int max1 = m[1], mini = 1, maxi = 1, min1 = m[1];
        for (int i = 0; i < n; i++) {
            if (m[i] > max1) {
                maxi = i;
                max1 = m[i];
            }
            if (m[i] < min1) {
                mini = i;
                min1 = m[i];
            }
        }
        System.out.println(" Исходный вектор");
        for (int i = 0; i < n; i++) {
            System.out.print(m[i] + "; ");
        }
        System.out.println("\nmin= " + min1 + " n_min= " + mini + "\nmax= " + max1 + " n_max= " + maxi);
        int j = 0, v;
        //   maxi = abs(maxi - mini);
        int stop = max(maxi, mini) - 1;
        int start = min(maxi, mini) + 1;
        System.out.println(stop / 2);
        for (int i = start; i < stop; i++) {
            v = m[i];
            m[i] = m[stop - j];
            m[stop - j] = v;
            j++;
            if (j>stop/2) break;
        }
 
        System.out.println(" Выходной вектор");
        for (int i = 0; i < n; i++) {
            System.out.print(m[i] + "; ");
        }
        System.out.println();
    }
}
0
 Аватар для иван я
17 / 17 / 16
Регистрация: 15.12.2012
Сообщений: 536
20.09.2015, 16:43  [ТС]
maximyep,почему то когда я ввожу свои числа то программа меняет только два крайних числа(находящихся между минимальным и максимальным элементами вектора) между собой
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package javaapplication109;
 
import java.util.Random;
import java.util.Scanner;
/**
 *
 * @author admin
 */
public class JavaApplication109 {
 
    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
    Scanner sc = new Scanner(System.in);
        System.out.println("v_min");
        int vmin =sc.nextInt();
        System.out.println("v_max");
        int vmax = sc.nextInt();
        System.out.println("n");
        int n =sc.nextInt();
 
        //      n=10
//v_min=-5
//v_max=10
        Random r = new Random();
       int[] m = new int[n + 1];
            for (int i = 1; i <= n; i++) {
              m[i] = r.nextInt(vmax - vmin + 1) + vmin;
          }
       // int[] m = new int[]{-7, -5, 2, 9, 5, 12, 30, 9, 8, 3};
        int max1 = m[1], mini = 1, maxi = 1, min1 = m[1];
        for (int i = 0; i < n; i++) {
            if (m[i] > max1) {
                maxi = i;
                max1 = m[i];
            }
            if (m[i] < min1) {
                mini = i;
                min1 = m[i];
            }
        }
        System.out.println(" Исходный вектор");
        for (int i = 0; i < n; i++) {
            System.out.print(m[i] + "; ");
        }
        System.out.println("\nmin= " + min1 + " n_min= " + mini + "\nmax= " + max1 + " n_max= " + maxi);
        int j = 0, v;
        //   maxi = abs(maxi - mini);
        int stop = Math.max(maxi, mini) - 1;
        int start = Math.min(maxi, mini) + 1;
        System.out.println(stop / 2);
        for (int i = start; i < stop; i++) {
            v = m[i];
            m[i] = m[stop - j];
            m[stop - j] = v;
            j++;
            if (j>stop/2) break;
        }
 
        System.out.println(" Выходной вектор");
        for (int i = 0; i < n; i++) {
            System.out.print(m[i] + "; ");
        }
        System.out.println();
    }
}
Добавлено через 8 минут
корректно работает только при том векторе который вы задали, а при остальных случаях или меняет только два элемента между собой или чуть больше но не так как надо.

Добавлено через 1 минуту
мне надо чтобы она работала при любых введенных мной значениях
0
6 / 6 / 1
Регистрация: 03.02.2013
Сообщений: 38
20.09.2015, 17:08
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
 public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("v_min");
        int vmin = -5;
        System.out.println("v_max");
        int vmax = 10;
        System.out.println("n");
        int n = 10;
 
        //      n=10
//v_min=-5
//v_max=10
        Random r = new Random();
        int[] m = new int[n];
        for (int i = 0; i < n; i++) {
            m[i] = r.nextInt(vmax - vmin + 1) + vmin;
        }
 
        int max1 = m[0], mini = 1, maxi = 1, min1 = m[0];
        for (int i = 0; i < n; i++) {
            if (m[i] > max1) {
                maxi = i;
                max1 = m[i];
            }
            if (m[i] < min1) {
                mini = i;
                min1 = m[i];
            }
        }
        System.out.println(" Исходный вектор");
        for (int i = 0; i < n; i++) {
            System.out.print(m[i] + "; ");
        }
        System.out.println("\nmin= " + min1 + " n_min= " + mini + "\nmax= " + max1 + " n_max= " + maxi);
        int j = 0, v;
        //   maxi = abs(maxi - mini);
        int stop = max(maxi, mini) - 1;
        int start = min(maxi, mini);
        System.out.println((stop - start) / 2);
        for (int i = start; i < stop; i++) {
 
            v = m[i];
            m[i] = m[stop - j];
            m[stop - j] = v;
            j++;
            if (j >(stop - start) / 2) {
                break;
            }
        }
 
        System.out.println(" Выходной вектор");
        for (int i = 0; i < n; i++) {
            System.out.print(m[i] + "; ");
        }
        System.out.println();
    }
Проблема 1. Массив должен начинаться с 0
Проблема 2. В одном из мест поправил индекс
0
 Аватар для иван я
17 / 17 / 16
Регистрация: 15.12.2012
Сообщений: 536
20.09.2015, 17:14  [ТС]
maximyep,
Миниатюры
Исправить код  
0
 Аватар для иван я
17 / 17 / 16
Регистрация: 15.12.2012
Сообщений: 536
20.09.2015, 17:15  [ТС]
maximyep, не сработало опять же
0
 Аватар для иван я
17 / 17 / 16
Регистрация: 15.12.2012
Сообщений: 536
20.09.2015, 17:18  [ТС]
maximyep, вот еще одно неправильное действие программы
Миниатюры
Исправить код  
0
6 / 6 / 1
Регистрация: 03.02.2013
Сообщений: 38
20.09.2015, 18:03
Ну как-то и сам должен думать.
Перед сортировкой сделать проверку, а нужна ли она:
Java
1
2
if ((stop - start) / 2 != 0) 
{ for (int i = start; i < stop; i++) {
0
 Аватар для иван я
17 / 17 / 16
Регистрация: 15.12.2012
Сообщений: 536
20.09.2015, 18:28  [ТС]
maximyep,все равно не работает, или я что-то не понял. В чужом коде мне сложно разобраться
Миниатюры
Исправить код  
0
 Аватар для иван я
17 / 17 / 16
Регистрация: 15.12.2012
Сообщений: 536
20.09.2015, 18:31  [ТС]
maximyep,в этом случае он переместил даже тот элемент который не должен был перемещать. т.е. "-5"
0
 Аватар для иван я
17 / 17 / 16
Регистрация: 15.12.2012
Сообщений: 536
20.09.2015, 18:32  [ТС]
вот скрин
Миниатюры
Исправить код  
0
 Аватар для иван я
17 / 17 / 16
Регистрация: 15.12.2012
Сообщений: 536
20.09.2015, 18:35  [ТС]
maximyep, вообщем при этом условии он начал переставлять один не нужный элемент, хоть не всегда но он это делает. Причем это максимальный или минимальный элемент находящийся слева
0
6 / 6 / 1
Регистрация: 03.02.2013
Сообщений: 38
27.09.2015, 14:04
Решил?
0
 Аватар для иван я
17 / 17 / 16
Регистрация: 15.12.2012
Сообщений: 536
27.09.2015, 14:11  [ТС]
maximyep, решил, переделывал все занова

Добавлено через 1 минуту
maximyep, там я так и не понял в чем причина
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
27.09.2015, 14:11
Помогаю со студенческими работами здесь

Исправить код программы
Здравствуйте! Помогите пожалуйста,вот программа на Jave. import java.util.Arrays; import java.util.Comparator; import...

Нужно исправить код
Помогите исправить код на Джаве. Написала, но уже запуталась с скобками и ифами/елсами. public class program { public static...

Прошу исправить код
Нужно чтобы программа убирала строку и столбец из исходной матрицы на пересечении которых стоит элемент с максимальным значением, вот мой...

Нарисовать окружности. Исправить код
Надо создать новую окружность 2 штука(a,b) не могу найти ошибку помогите исправить package aaaa; class Circle { public...

Исправить код. Двумерный массив
Добрый день. У меня такой вопрос. Как можно исправить данный код, чтобы кол-во столбцов задавалось с клавиатуры, а не было равно 5? ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
19
Ответ Создать тему
Новые блоги и статьи
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои. А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20% kYBz3eJf3jQ
Дальние перспективы сервера - слоя сети с космологическим дизайном интефейса карты и логики.
Hrethgir 07.04.2026
Дальнейшее ближайшее планирование вывело к размышлениям над дальними перспективами. И вот тут может быть даже будут нужны оценки специалистов, так как в дальних перспективах всё может очень сильно. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru