Форум программистов, компьютерный форум CyberForum.ru

Определить, есть ли в данной матрице строка, состоящая только из элементов, принадлежащих промежутку от А до В - C++

Восстановить пароль Регистрация
 
Twinlamb
0 / 0 / 0
Регистрация: 09.01.2013
Сообщений: 7
09.01.2013, 13:10     Определить, есть ли в данной матрице строка, состоящая только из элементов, принадлежащих промежутку от А до В #1
Определить, есть ли в данной матрице строка, состоящая только из элементов, принадлежащих промежутку от А до В. А и В вводятся с клавиатуры
Вот мой код:
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
#include <iostream.h>
#include <stdlib.h>
#include <time.h>
void main()                                                 
}
int const n=6;
int const m=4;
int C[m][n], A, B, max, min;
cout<<"Print A, B"<<endl;
cin>>A>>B>>flush;
srand((unsigned)time(NULL));
for(int i=0; i<m; i++)
{
    for(int j=0; j<n; j++) C[i][j]=rand()%15;
}
for(i=0; i<m; i++)
{
    for(j=0; j<n; j++)
   {
    if(C[i][j]<=A || C[i][j]>=B) break;
      if(j==n)
      {
        cout<<"yes";
         break;
      }
   }
}
cin>>A;
}
Но при попытке запустить программу выдаёт "out of memory".
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.01.2013, 13:10     Определить, есть ли в данной матрице строка, состоящая только из элементов, принадлежащих промежутку от А до В
Посмотрите здесь:

Определить, есть ли в данном двумерном массиве строка (столбец), состоящая только из элементов, принадлежащих промежутку от А до В. C++
Определить, есть ли в матрице строка, содержащая больше положительных элементов, чем отрицательных C++
C++ Определить есть ли в массиве строка, состоящая только из отрицательных элементов.
C++ Определить, есть ли в данном массиве строка, состоящая только из положительных чисел
C++ Определить, есть ли в данном массиве строка (столбец), состоящая только из положительных или нулевых элементов
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Alexxx7
97 / 33 / 5
Регистрация: 24.04.2012
Сообщений: 151
09.01.2013, 14:04     Определить, есть ли в данной матрице строка, состоящая только из элементов, принадлежащих промежутку от А до В #2
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
#include <iostream>// изменено немного
#include <stdlib.h>
#include <time.h>
using namespace std;// добавлено
void main()                                              
{
    int const n=6;
    int const m=4;
    int C[m][n], A, B, max, min, i, j;//добавлены переменные i, j проблема видимости во 
//втором цикле for() их там просто не видно 
    cout<<"Print A, B"<<endl;
    cin>>A>>B;// убрано flush - видно забыл стереть
    srand((unsigned)time(NULL));
    for( i=0; i<m; i++)
    {
        for( j=0; j<n; j++) C[i][j]=rand()%15;
    }
    for(i=0; i<m; i++)
    {
        for(j=0; j<n; j++)
       {
        if(C[i][j]<=A || C[i][j]>=B) break;
          if(j==n)
          {
            cout<<"yes";
             break;
          }
       }
    }
}
с алгоритмом покапайся сам, я не особо понял что ты имеешь введу под словом строка, у тебя массив int значений а не строк.
Ev[G]eN
Эксперт С++
 Аватар для Ev[G]eN
5093 / 1531 / 381
Регистрация: 23.01.2011
Сообщений: 3,148
09.01.2013, 14:15     Определить, есть ли в данной матрице строка, состоящая только из элементов, принадлежащих промежутку от А до В #3
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
#include <iostream>
#include <iomanip>
#include <cstdlib>
#include <ctime>
 
int main() 
{
    srand(time(0));
    const int rows = 5;
    const int colls = 4;
    int matrix[rows][colls];
    
    std::cout << "Matrix: " << std::endl;
    for (int i = 0; i < rows; i++) {
        for (int j = 0; j < colls; j++)
            std::cout << std::setw(5) << (matrix[i][j] = rand() % 5);
        std::cout << std::endl;
    }
    
    int a = 0;
    int b = 0;
    std::cout << "Enter [a ; b]: ";
    std::cin >> a >> b;
    
    int mark = 0;
    for (int i = 0; i < rows; i++) {
        int counter = 0;
        for (int j = 0; j < colls; j++)
            counter += (matrix[i][j] > a && matrix[i][j] < b) ? 1 : 0;
        mark = (counter == colls - 1) ? 1 : 0;
    }
    
    if (mark)
       std::cout << "True!" << std::endl;
    else
        std::cout << "False!" << std::endl;
    
    system("pause");
    return 0;
}
Alexxx7
97 / 33 / 5
Регистрация: 24.04.2012
Сообщений: 151
09.01.2013, 14:31     Определить, есть ли в данной матрице строка, состоящая только из элементов, принадлежащих промежутку от А до В #4
думаю так будет правильней
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
#include <iostream>
#include <iomanip>
#include <cstdlib>
#include <ctime>
 
int main() 
{
    srand(time(0));
    const int rows = 5;
    const int colls = 4;
    int matrix[rows][colls];
    
    std::cout << "Matrix: " << std::endl;
    for (int i = 0; i < rows; i++) {
        for (int j = 0; j < colls; j++)
            std::cout << std::setw(5) << (matrix[i][j] = rand() % 5);
        std::cout << std::endl;
    }
    
    int a = 0;
    int b = 0;
    std::cout << "Enter [a ; b]: ";
    std::cin >> a >> b;
    
    int mark = 0;
    for (int i = 0; i < rows; i++) {
        int counter = 0;
        for (int j = 0; j < colls; j++)
            counter += (matrix[i][j] >= a && matrix[i][j] <= b) ? 1 : 0;
        if(!mark)//думаю стоит тут проверить или не было ранее найдены совпадение
            //иначе мывидим только совпадение последней строки
            //а если просто написать mark++; можно даже узнать сколько
            mark = (counter == colls) ? 1 : 0;
    }
    
    if (mark)
       std::cout << "True!" << std::endl;
    else
        std::cout << "False!" << std::endl;
    
    system("pause");
    return 0;
}
Ev[G]eN
Эксперт С++
 Аватар для Ev[G]eN
5093 / 1531 / 381
Регистрация: 23.01.2011
Сообщений: 3,148
09.01.2013, 14:41     Определить, есть ли в данной матрице строка, состоящая только из элементов, принадлежащих промежутку от А до В #5
думаю я знаю, что я пишу:
C++
1
2
3
4
5
6
7
int mark = 0;
    for (int i = 0; i < rows; i++) {
        int counter = 0;
        for (int j = 0; j < colls; j++)
            counter += (matrix[i][j] > a && matrix[i][j] < b) ? 1 : 0;
        mark = (counter == colls - 1) ? 1 : 0;
    }
переменная mark вне циклов. она нигде не обнуляется. и поэтому мы так же можем видеть кол-во таких строк...

Добавлено через 1 минуту
Цитата Сообщение от Alexxx7 Посмотреть сообщение
C++
1
mark = (counter == colls) ? 1 : 0;
это условие никогда не выполнится. разве что в counter изначально будет значение 1
Alexxx7
97 / 33 / 5
Регистрация: 24.04.2012
Сообщений: 151
09.01.2013, 15:06     Определить, есть ли в данной матрице строка, состоящая только из элементов, принадлежащих промежутку от А до В #6
Сообщение было отмечено автором темы, экспертом или модератором как ответ
не сомневаюсь в том что вы знаете что пишете, объясните если я думаю не так:
- если совпадения не состоится в последнем массиве, тогда значению mark будет присвоен 0;
- да я стормозил с тем что "//а если просто написать mark++; можно даже узнать сколько", для этого стоило бы переписать так
C++
1
2
3
4
5
6
7
int mark = 0;
    for (int i = 0; i < rows; i++) {
        int counter = 0;
        for (int j = 0; j < colls; j++)
            counter += (matrix[i][j] >= a && matrix[i][j] <= b) ? 1 : 0;
            mark += (counter == colls) ? 1 : 0;
    }
- в защиту
C++
1
2
if(!mark)
mark += (counter == colls) ? 1 : 0;
могу объяснить что изначально mark = 0 (так как от и инициализирован) данное условие будет выполнятся, но только до того как будет найдено первое совпадение, что исключает то что описано в п.1.
Если я не прав объясните в чём.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.01.2013, 15:14     Определить, есть ли в данной матрице строка, состоящая только из элементов, принадлежащих промежутку от А до В
Еще ссылки по теме:

C++ Есть строка, состоящая из слов, разделенных любым количеством пробелов
C++ Определить, есть ли в матрице столбец, состоящий только из нулей
C++ Определить, есть ли в заданной динамической матрице строка с заданными значениями

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

Или воспользуйтесь поиском по форуму:
Ev[G]eN
Эксперт С++
 Аватар для Ev[G]eN
5093 / 1531 / 381
Регистрация: 23.01.2011
Сообщений: 3,148
09.01.2013, 15:14     Определить, есть ли в данной матрице строка, состоящая только из элементов, принадлежащих промежутку от А до В #7
Цитата Сообщение от Alexxx7 Посмотреть сообщение
могу объяснить что изначально mark = 0 (так как от и инициализирован) данное условие будет выполнятся, но только до того как будет найдено первое совпадение, что исключает то что описано в п.1.
согласен..

Цитата Сообщение от Ev[G
eN;3973711]
C++
1
mark = (counter == colls - 1) ? 1 : 0;
здесь ошибся. хотел += поставить
Yandex
Объявления
09.01.2013, 15:14     Определить, есть ли в данной матрице строка, состоящая только из элементов, принадлежащих промежутку от А до В
Ответ Создать тему
Опции темы

Текущее время: 01:14. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru