Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
0 / 0 / 0
Регистрация: 28.09.2017
Сообщений: 149
1

В матрицу записать 1, если удвоенный элемент первого множества меньше элемента второго множества

17.03.2018, 11:55. Просмотров 1014. Ответов 12
Метки нет (Все метки)


Здравствуйте!
Не могу понять, где ошибка в коде...
Пользователь вводит размер первого множества, элементы, затем размер второго множества, элементы.
Мне надо, чтобы в матрицу(размер первого множества Х размер второго множества) выводилась единица, если удвоенный элемент первого множества меньше элемента второго множества. В обратном случае-выводить 0.

C++
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
#include<iostream>
#include<cstdlib>
 
using namespace std;
 
int main(){
    setlocale(LC_ALL,"rus");
    
    //первое множество
    int num1;
    cout<<"Введите размер первого множества"<<endl;
    cin>>num1;
    int *arr1=new int [num1];
    cout<<"Введите элементы первого множества"<<endl;
    for(int i=0; i<num1; i++)
    {
    cin>>arr1[i];   
    }
    
    //второе множество
    int num2;
    cout<<"Введите размер второго множества"<<endl;
    cin>>num2;
    int *arr2=new int [num2];
    cout<<"Введите элементы второго множества"<<endl;
    for(int i=0; i<num2; i++)
    {
        cin>>arr2[i];
    }
    
    
    //матрица бинарного отношения
    
 
 cout<<"Матрица бинарного отношения"<<endl;
int ** Arr = new int * [num1];
    for ( int i = 0; i < num1; ++i ) {
        Arr[i] = new int [num2];
    }
    
    
    for(int i=0; i<num1; i++)
    {
    
        for(int j=0; i<num2; i++)
        {
            if((2*arr1[i])<arr2[j]) //если удвоенный элемент первого множества меньше элемента второго множества
                Arr[i][j]=1; 
                
            
            else Arr[i][j]=0;
        }
    }
   
    
  
    for ( int i = 0; i < num1; ++i ) {
        for ( int j = 0; j < num2; ++j ) {
            cout<<Arr[i][j]<<' ';
        }
        cout<<endl;
    }
   
        
    
     for ( int i = 0; i < num1; ++i ) {
        delete [] Arr[i];
    }
    delete [] Arr;
        delete[]arr1;
    delete[]arr2;
    system("pause");
    return 0;
}
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
17.03.2018, 11:55
Ответы с готовыми решениями:

Квадрат с вершинами из первого множества накрывает все точки второго множества и имеет минимальную площадь
Даны два множества точек на плоскости. Выбрать четыре различных точки первого множества так, чтобы...

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

Выбрать 4 точки множества так, чтобы квадрат с вершинами в этих точках накрывал все точки второго множества
Даны два множества точек на плоскости. Выбрать четыре различные точки первого множества так,...

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

12
Эксперт C
25438 / 15831 / 3386
Регистрация: 24.12.2010
Сообщений: 34,627
17.03.2018, 12:01 2
Nastia_01203, На первый взгляд код правильный. А что именно плохо?
И небольшая просьбы. Не оставляйте в коде так много бессмысленных пустых строк. Это затрудняет его восприятие.
1
1105 / 840 / 388
Регистрация: 30.10.2017
Сообщений: 2,357
17.03.2018, 12:12 3
45я строка. Наверное так имелось ввиду:

C++
1
for(int j=0; j<num2; j++)
2
0 / 0 / 0
Регистрация: 28.09.2017
Сообщений: 149
17.03.2018, 17:20  [ТС] 4
Компилируется, но данные неправильные выдаёт, и ещё работает только квадратная матрица, из-за 2х3, например, программа вылетает

Добавлено через 27 секунд
Спасибо)исправила, но все равно данные неправильные получаю ...((
0
1105 / 840 / 388
Регистрация: 30.10.2017
Сообщений: 2,357
17.03.2018, 17:29 5
Nastia_01203, какие данные вводите, какие получаете, какие ожидаете?
1
Эксперт C
25438 / 15831 / 3386
Регистрация: 24.12.2010
Сообщений: 34,627
17.03.2018, 17:34 6
Цитата Сообщение от Nastia_01203 Посмотреть сообщение
исправила
И еще неплохо бы увидеть, что и как вы там наисправляли...
0
0 / 0 / 0
Регистрация: 28.09.2017
Сообщений: 149
17.03.2018, 19:24  [ТС] 7
Первое множество: 3 2
Второе множество: 5 2
Ожидаю получить это:
0 1
0 0

Но не работает ...

Добавлено через 32 секунды
Только 45-ю строку изменила так, как показано выше )
0
1105 / 840 / 388
Регистрация: 30.10.2017
Сообщений: 2,357
17.03.2018, 19:41 8
Может так?

C++
1
if ((2 * arr1[j])<arr2[i]) //если удвоенный элемент первого множества меньше элемента второго множества
Добавлено через 12 минут
Nastia_01203, а почему вы думаете, что должно быть

0 1
0 0

?

Певый ряд это i[0], второй ряд i[1]. Тогда единица становится в левый нижний угол.

Добавлено через 1 минуту
Тот вариант, что я предложил выше, ошибочен.
1
0 / 0 / 0
Регистрация: 28.09.2017
Сообщений: 149
17.03.2018, 19:50  [ТС] 9
А как тогда?(
0
1105 / 840 / 388
Регистрация: 30.10.2017
Сообщений: 2,357
17.03.2018, 19:51 10
Nastia_01203, по логике вашего комментария в этой строке, то ответ и должен быть

0 0
1 0

Разве нет?
1
0 / 0 / 0
Регистрация: 28.09.2017
Сообщений: 149
17.03.2018, 19:56  [ТС] 11
А разве не так должно выйти:
0 1
0 0
?)
0
1105 / 840 / 388
Регистрация: 30.10.2017
Сообщений: 2,357
17.03.2018, 20:07 12
Лучший ответ Сообщение было отмечено Nastia_01203 как решение

Решение

Nastia_01203, у вас в высоту Arr1 (i), в ширину Arr2 (j) (по программе). Удвоенный элемент - это Arr[1][0], который слева внизу у вас. Я не знаю как у вас в теории написано, я говорю, что по факту делает ваша программа.

Добавлено через 8 минут
Nastia_01203, вообщем если вам надо матрицу эту отобразить зеркально относительно главной диагонали, нужно менять Arr1 и Arr2 везде местами при работе с двумерным массивом.
1
0 / 0 / 0
Регистрация: 28.09.2017
Сообщений: 149
17.03.2018, 20:09  [ТС] 13
Спасибо большое)сейчас буду думать
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
17.03.2018, 20:09

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь или здесь.

Число изъять из множества А, если оно является элементом множества А, но не является элементом множества В
Введено с клавиатуры число изъять из множества А, если оно является элементом множества А, но не...

Удалить из множества А минимальный элемент множества В
Удалить из множества А минимальный элемент множества В. могу удалить из A все елементи B. а...

Множества. Сформировать множества оценок, которые есть и у первого и второго, но нет у третьего ученика
Даны по 10-бальной шкале оценки по информатике трех учеников (три массива). Сформировать множества...

Массив: Выбрать три различные точки первого множества так, чтобы треугольник с вершинами в этих точках накрывал все точки второго множества
Здравствуйте. При реализации задачи я столкнулся с некоторой трудностью (ну, по крайней мере для...


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

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.