Форум программистов, компьютерный форум, киберфорум
Java SE (J2SE)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
0 / 0 / 0
Регистрация: 22.11.2009
Сообщений: 12

И снова поиск повторяющегося члена

20.03.2010, 14:56. Показов 869. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здавствуйте. У меня проблема: нужно вывести на экран повторяющиеся члены и количество их повторений, но теперь даны два массива. у меня выводит какую-то хрень, честное слово, не понимаю как сделать. Я тут накидал, может кто поможет..
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
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.Random;
 
public class Lab12 {
 
    /**
     * @param args
     * @throws Exception 
     */
    public static <BufferedReader1> void main(String[] args) throws Exception {
        int[] array, stroka;
        int k;
        System.out.println("Введите длину числового ряда 1: ");
        BufferedReader a = new BufferedReader (new InputStreamReader(System.in));
        String b = a.readLine();
        int  n= Integer.parseInt(b);
        
        System.out.println("Введите длину числового ряда 2: ");
        BufferedReader c = new BufferedReader (new InputStreamReader(System.in));
        String d = c.readLine();
        int  m= Integer.parseInt(d);
 
        
        array = new int[n];
        System.out.println("Первый числовой ряд:");
        Random random = new Random();
        for (int i = 0; i < n; i++) {
            array[i] = random.nextInt(10);
            System.out.println("#" + (i + 1) + ": " + array[i] + " ");
        }    
        stroka = new int[m];
        System.out.println("Второй числовой ряд:");
        Random random1 = new Random();
        for (int j = 0; j < m; j++) {
            stroka[j] = random1.nextInt(10);
            System.out.println("#" + (j + 1) + ": " + stroka[j] + " ");
        }
        for (int z = 0; z < (n); z++) {
            k=0;
            if(array[z] == -1) 
                continue;  
            for (int i=0;i<n;i++) {
                if (array[z]==stroka[i]){
                    k++;
                    array[i]=-1;
                }
            }
            if (k!=0) {
                System.out.println("число №" + (z+1) + array[z] + "повторяется " + k + "раз");
            }
        }}}
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
20.03.2010, 14:56
Ответы с готовыми решениями:

Поиск повторяющегося члена
Доброго времени суток. Необходимо написать программу, определяющую количество повторов каждого члена ряда. Я написал, что смог, вот:package...

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

Поиск повторяющегося(-ихся) слов в векторе
Задача:Напишите программу, в которую сначала вводится набор пар, состоящих из имени и значения, например Joe 17 и Barbara 22. Для каждой ...

3
11 / 11 / 3
Регистрация: 18.03.2010
Сообщений: 45
24.03.2010, 18:45
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
72
73
74
75
76
77
78
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.Random;
 
public class Lab12 {
 
    /**
     * @param args
     * @throws Exception
     */
    public static <BufferedReader1> void main(String[] args) throws Exception {
        int[] array, stroka;
        int[][] result;
 
        int k,i,j;
        System.out.println("Введите длину числового ряда 1: ");
        BufferedReader a = new BufferedReader (new InputStreamReader(System.in));
        String b = a.readLine();
        int  n= Integer.parseInt(b);
 
        System.out.println("Введите длину числового ряда 2: ");
        BufferedReader c = new BufferedReader (new InputStreamReader(System.in));
        String d = c.readLine();
        int  m= Integer.parseInt(d);
 
 
        array = new int[n];
        System.out.println("Первый числовой ряд:");
        Random random = new Random();
        for (i = 0; i < n; i++) {
            array[i] = random.nextInt(10);
            System.out.println("#" + (i + 1) + ": " + array[i] + " ");
        }
        stroka = new int[m];
        System.out.println("Второй числовой ряд:");
        Random random1 = new Random();
        for (j = 0; j < m; j++) {
            stroka[j] = random1.nextInt(10);
            System.out.println("#" + (j + 1) + ": " + stroka[j] + " ");
        }
 
        boolean repeat = false;
        k = 0;
        int test;
int[] arrayUnion;
arrayUnion = new int[n+m];
for (i=0; i<n+m; i++) arrayUnion[i]=(i<n)?array[i]:stroka[i-n];
        result = new int[n+m][2];
        for (i=0; i<n+m; i++) result[i][0]=-1;
 flag:       for (i=0; i<n+m; i++) {
            test=k;
            while(test>=0){
                if (result[test--][0]==arrayUnion[i]) {
                   // System.out.println("Проверка флага i "+ i+ "  "+ test + "  "+array[i]);
                    continue flag;
                }
            }
 
            for (j=i+1;j<n+m;j++) {
                if (arrayUnion[i]==arrayUnion[j]){
                    if (!repeat) {
                        result[k][0]=arrayUnion[i];
                        result[k][1]=2;
                        repeat = true;
                    }
                    else result[k][1]++;
                }
            }
            if (repeat) {
                repeat = false;
                k++;
            }
        }
        for (j=0;j<k;j++)
          System.out.println("Число: "+result[j][0]+" Встречается "+result[j][1]);
 
                    }
                }
Пришлось подумать прилично, java недавно начал изучать - возможно совсем неоптимальное решение.

Пример результата:
Введите длину числового ряда 1:
5
Введите длину числового ряда 2:
5
Первый числовой ряд:
#1: 6
#2: 8
#3: 6
#4: 3
#5: 6
Второй числовой ряд:
#1: 2
#2: 4
#3: 1
#4: 8
#5: 3
Число: 6 Встречается 3
Число: 8 Встречается 2
Число: 3 Встречается 2

Лучше проверять на больших числах - тогда все цифры повторяются
0
0 / 0 / 0
Регистрация: 22.11.2009
Сообщений: 12
26.03.2010, 12:47  [ТС]
Большое спасибо, но вот решение оптимальней:
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
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.Random;
 
public class Lab13 {
 
    /**
     * @param args
     * @throws Exception 
     */
    public static void main(String[] args) throws Exception {
        
        float[] array1;
        float[] array2;
        int[] array3;
        int e;
        System.out.println("Введите длину числового ряда 1: ");
        BufferedReader a = new BufferedReader (new InputStreamReader(System.in));
        String b = a.readLine();
        int  n = Integer.parseInt(b);
        
        System.out.println("Введите длину числового ряда 2: ");
        BufferedReader c = new BufferedReader (new InputStreamReader(System.in));
        String d = c.readLine();
        int  m = Integer.parseInt(d);
 
        
        array1 = new float[n];
        System.out.println("Первый числовой ряд:");
        Random random = new Random();
        for (int i = 0; i < n; i++) {
            array1[i] = random.nextFloat();
            System.out.println("#" + (i + 1) + ": " + array1[i] + " ");
        }    
        array2 = new float[m];
        System.out.println("Второй числовой ряд:");
        Random random1 = new Random();
        for (int j = 0; j < m; j++) {
            array2[j] = random1.nextFloat();
            System.out.println("#" + (j + 1) + ": " + array2[j] + " ");
        }
 
        if (n<m)
            e=m;
        else
            e=n;
                
        array3 = new int[e];
        for (int i = 0; i < e; i++) {
            array3[i] = 0;
        }
        
        for (int i=0;i<n;i++){
            if (array1[i]!=-1){
                for (int j=0;j<m;j++){
                    if (array1[i]==array2[j]&&array2[j]!=-1){
                        array3[i]++;
                        array2[j]=-1;
                    }
                }
            }
        
        } 
        
        
        for (int i = 0; i <e; i++) {  
            if (array3[i]!=0)
                System.out.print("Число (в первом числовом ряду № "+ (i+1) +" ) " + " (" + array1[i] +")" + " присутствует в двух рядах  " + (array3[i]+1) + " раз " + "\n");  
        
}}}
0
11 / 11 / 3
Регистрация: 18.03.2010
Сообщений: 45
26.03.2010, 17:44
В этом алгоритме ошибка.
Проверка - подставил в массивы значение 0.5.
2 массива по 10 членов - а повторений выдает 11. Нестыковка.
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
72
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.Random;
 
public class Lab14 {
 
/**
* @param args
* @throws Exception
*/
public static void main(String[] args) throws Exception {
 
float[] array1;
float[] array2;
int[] array3;
int e;
System.out.println("Введите длину числового ряда 1: ");
BufferedReader a = new BufferedReader (new InputStreamReader(System.in));
String b = a.readLine();
int n = Integer.parseInt(b);
 
System.out.println("Введите длину числового ряда 2: ");
BufferedReader c = new BufferedReader (new InputStreamReader(System.in));
String d = c.readLine();
int m = Integer.parseInt(d);
 
 
array1 = new float[n];
System.out.println("Первый числовой ряд:");
Random random = new Random();
for (int i = 0; i < n; i++) {
//array1[i] = random.nextFloat();
    array1[i] = 0.5f;
System.out.println("#" + (i + 1) + ": " + array1[i] + " ");
}
array2 = new float[m];
System.out.println("Второй числовой ряд:");
Random random1 = new Random();
for (int j = 0; j < m; j++) {
//
    array2[j] = 0.5f;
System.out.println("#" + (j + 1) + ": " + array2[j] + " ");
}
 
if (n<m)
e=m;
else
e=n;
 
array3 = new int[e];
for (int i = 0; i < e; i++) {
array3[i] = 0;
}
 
for (int i=0;i<n;i++){
if (array1[i]!=-1){
for (int j=0;j<m;j++){
if (array1[i]==array2[j]&&array2[j]!=-1){
array3[i]++;
array2[j]=-1;
}
}
}
 
}
 
 
for (int i = 0; i <e; i++) {
if (array3[i]!=0)
System.out.print("Число (в первом числовом ряду № "+ (i+1) +" ) " + " (" + array1[i] +")" + " присутствует в двух рядах " + (array3[i]+1) + " раз " + "\n");
 
}}}
Тест:
Введите длину числового ряда 1:
10
Введите длину числового ряда 2:
10
Первый числовой ряд:
#1: 0.5
#2: 0.5
#3: 0.5
#4: 0.5
#5: 0.5
#6: 0.5
#7: 0.5
#8: 0.5
#9: 0.5
#10: 0.5
Второй числовой ряд:
#1: 0.5
#2: 0.5
#3: 0.5
#4: 0.5
#5: 0.5
#6: 0.5
#7: 0.5
#8: 0.5
#9: 0.5
#10: 0.5
Число (в первом числовом ряду № 1 ) (0.5) присутствует в двух рядах 11 раз

Добавлено через 4 часа 42 минуты
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
72
73
74
75
76
77
78
79
80
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.Random;
 
public class Lab14 {
 
/**
* @param args
* @throws Exception
*/
public static void main(String[] args) throws Exception {
 
float[] array1;
float[] array2;
int[] array3;
int e;
System.out.println("Введите длину числового ряда 1: ");
BufferedReader a = new BufferedReader (new InputStreamReader(System.in));
String b = a.readLine();
int n = Integer.parseInt(b);
 
System.out.println("Введите длину числового ряда 2: ");
BufferedReader c = new BufferedReader (new InputStreamReader(System.in));
String d = c.readLine();
int m = Integer.parseInt(d);
 
 
array1 = new float[n];
System.out.println("Первый числовой ряд:");
Random random = new Random();
for (int i = 0; i < n; i++) {
array1[i] = random.nextFloat();
//    array1[i] = 0.5f;
System.out.println("#" + (i + 1) + ": " + array1[i] + " ");
}
array2 = new float[m];
System.out.println("Второй числовой ряд:");
Random random1 = new Random();
for (int j = 0; j < m; j++) {
array2[j] = random.nextFloat();
 //   array2[j] = 0.5f;
System.out.println("#" + (j + 1) + ": " + array2[j] + " ");
}
 
if (n<m)
e=m;
else
e=n;
 
array3 = new int[e];
for (int i = 0; i < e; i++) {
array3[i] = 0;
}
 
for (int i=0;i<n;i++){
if (array1[i]!=-1){
for (int j=0;j<m;j++){
if (array1[i]==array2[j]&&array2[j]!=-1){
array3[i]++;
array2[j]=-1;
}
}
for (int q=0;q<=i-1;q++){
    if ((array1[i]==array1[q])&&(array1[q]!=-1)) {
        array3[q]++;
        array1[i]=-1;
     }
}
 
}
 
 
}
 
 
for (int i = 0; i <e; i++) {
if (array3[i]!=0)
System.out.print("Число (в первом числовом ряду № "+ (i+1) +" ) " + " (" + array1[i] +")" + " присутствует в двух рядах " + (array3[i]+1) + " раз " + "\n");
 
}}}
Добавлен был код:
Java
1
2
3
4
5
6
for (int q=0;q<=i-1;q++){
    if ((array1[i]==array1[q])&&(array1[q]!=-1)) {
        array3[q]++;
        array1[i]=-1;
     }
}
Теперь все работает и в этой программе
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
26.03.2010, 17:44
Помогаю со студенческими работами здесь

Классы и массивы, поиск наиболее повторяющегося элемента
создать класс, который в непустом тексте из цифр, заканчивающийся точкой, находит наиболее часто встречающуюся в этом тексте цифру (если...

Поиск повторяющегося html кода и замена повторов на другой
Здравствуйте уважаемые знатоки! Сегодня я к вам присоединился и не успев еще влиться в коллектив, осмелюсь попросить подсказки или даже...

Снова хром, снова сапопроизвольно открывается, снова bkrfdf.xyz и казино
Здравствуйте! Собственно, проблема уже не новая, хотя, как показывают сообщения форума, за последние дни выскочившая у многих. Через...

Поиск наибольшего члена последовательности
Здравсвуйте!!! Помогите с решением пожалуйста)) (Массивы) Дана последовательность вещественных чисел a1, а2,..., ап.. Упорядочить числа...

Поиск общего члена ряда
Необходимо разложить функцию в ряд Маклорена и найти ее интеграл на отрезке с точностью \varepsilon = 0.01. Разложив до 171 члена ряда...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
Переходник USB-CAN-GPIO
Eddy_Em 20.03.2026
Достаточно давно на работе возникла необходимость в переходнике CAN-USB с гальваноразвязкой, оный и был разработан. Однако, все меня терзала совесть, что аж 48-ногий МК используется так тупо: просто. . .
Оттенки серого
Argus19 18.03.2026
Оттенки серого Нашёл в интернете 3 прекрасных модуля: Модуль класса открытия диалога открытия/ сохранения файла на Win32 API; Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru