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

Построить последовательность - C++

Восстановить пароль Регистрация
 
RAQ
0 / 0 / 0
Регистрация: 17.11.2011
Сообщений: 12
17.11.2011, 01:06     Построить последовательность #1
Дано натуральное число n и действительное квадратную матрицу порядка n. Построить последовательность b1,...,bn нулей и единиц, в которой, bi=1 ,тогда и только тогда, когда элементы i-й строки матрицы образуют последовательность , которая растет или падает.

Возникли проблемы с данной задачей .

Помогите решить плиз .
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
andreibatanov
136 / 6 / 1
Регистрация: 06.07.2011
Сообщений: 61
17.11.2011, 16:52     Построить последовательность #2
bi - случайное число из строки? просто я так думаю, что если это так, то оно будет равно еденице, если либо до него толькоко единицы, либо после него

Добавлено через 16 минут
Или bi не включены в матрицу?
RAQ
0 / 0 / 0
Регистрация: 17.11.2011
Сообщений: 12
17.11.2011, 17:52  [ТС]     Построить последовательность #3
включены они в матрицу .
типа i-строка;
j - столбец ;

по определению матрицы .
я думаю чем заполнят матрицу .
У нас получается квадратная матрица , то есть i=j (количество строк = количеству столбцов )
i=j=(коэффициенту n , при вводе которого мы зададим размер матрицы )

Но проблема в том , что если ми зададим матрицу 10х10 , то это придется вводит 100 значений , а это бред

Короче походу без рандома не обойтись :ъ

Оригинал
vklyucheni oni v matricu .
tipa i-stroka;
j - stolbec ;

po opredeleniyu matrici .
ya dumayu chem zapolnyat matricu .
U nas poluchaetsya kvadratnaya matrica , toest' i=j (kolichestvo strok = kilochestvu stolbcov )
i=j=(koeficientu n , pri vvode kotorogo mi zadadim rozmer matrici )

No problema v tom , chto esli mi zadadim matricu 10x10 , to eto priydetsya vvodit 100 znacheniy , a eto bred

Koroche pohodu bez randoma ne oboytis' :#


 Комментарий модератора 
Во-первых, для перевода с транслита на русский есть специальные сервисы, транслитом же вы нарушаете пункт правил 4.4. Во-вторых, не выделяйте текст таким образом, это только отталкивает от его чтения. А также нарушает пункт 2.9. Ну и в-третьих, вам не помешает перечитать пункт 2.14. В следующий раз за подобное вы уже получите не устное предупреждение, а карточку.
andreibatanov
136 / 6 / 1
Регистрация: 06.07.2011
Сообщений: 61
18.11.2011, 07:17     Построить последовательность #4
ну я думаю что если в школе или универе задали рассчитывается что матрица не будет большой:-)
вот если я правильно понял (еще пару раз перечитав) тебе дают матрицу, любую, тебе надо проверять строки, и если строка возрастает или убывает, добавлять в массив (например) последовательности 1, если нет - 0.

Добавлено через 48 минут
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
int i,j,n,m[][],p[];
bool bv=false, by=false;
//ввод данных i,j - индексы для цикла, n - размерность массива, by - условие убывающей последовательности, bv - возрастающей
for (i=0;i<n;i++)
{
    by=true;
    bv=true;
    for (j=0;j<n;j++)
    {
         if (m[i][j]>m[i][j+1]) 
         else by=false;
         if (m[i][j]<m[i][j+1]) 
         else bv=false;
    }
    if (by&&bv) p[i]=1 else p[i]=0;
}
что то в этом роде, сори если ошибки

Добавлено через 9 часов 31 минуту
Кстати, там в конце в операторе if вместо логического и (&&) поставь или(¦¦) одним словом утро вечера мудренее
taras atavin
Ушёл с форума.
 Аватар для taras atavin
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
18.11.2011, 07:30     Построить последовательность #5
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
void check(float **a, int n, int *b)
{
 float **ia;
 float *ib;
 float j;
 bool flag1;
 bool flag2;
 for (ia=a+n-1, ib=a+n-1; ia>=a; --ia, --ib)
 {
  for (flag1=true; j=*ia+n-1; j>*ia; --j)
  {
   if ((*j)>=(*(j-1)))
   {
    flag1=false;
    break;
   }
  }
  for (flag2=true; j=*ia+n-1; j>*ia; --j)
  {
   if ((*j)<=(*(j-1)))
   {
    flag2=false;
    break;
   }
  }
  if (Flag1||Flag2)
  {
   *ib=1;
  }
  else
  {
   *ib=0;
  }
 }
}
RAQ
0 / 0 / 0
Регистрация: 17.11.2011
Сообщений: 12
20.11.2011, 23:54  [ТС]     Построить последовательность #6
m[][],p[];

ni odin kompilyator ne ponimaet etu strochku :#
andreibatanov
136 / 6 / 1
Регистрация: 06.07.2011
Сообщений: 61
21.11.2011, 17:15     Построить последовательность #7
там обычно размерность массива пишется, я по пьяне писал, вот и не решил чего то написать, подумал что в курсе как массивы объявляются. так что как говорилось выше - "сори если что не так"
RAQ
0 / 0 / 0
Регистрация: 17.11.2011
Сообщений: 12
22.11.2011, 04:26  [ТС]     Построить последовательность #8
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <iostream>
#include <conio.h>
using namespace std ;
 
int main ()
{ 
 
int i,j,n;
cout << "n=";
cin >> n;
int** a =new int*[n];
for (int i = 0; i<n; i++) a[i] = new int[n];
for (i=0;i<=n-1;i++)
  for (j=0;j<n;j++)
  for (i=0;i<n;i++)
  cin>>a[i][j];
  for (j=0;j<n;j++)
 { for (i=0;i<n;i++)
 cout<<a[i][j]<<' ';
 cout<<endl;
 }
getch ();
return 0;
а дальше , я хз никак не получается
RAQ
0 / 0 / 0
Регистрация: 17.11.2011
Сообщений: 12
23.11.2011, 18:06  [ТС]     Построить последовательность #9
на правах аппа .
voral
345 / 325 / 46
Регистрация: 16.03.2008
Сообщений: 1,694
23.11.2011, 18:17     Построить последовательность #10
0. Заводим переменную хранящую направление
1. Создаем цикл по строкам в котором:
2. Создаем цикл по столбцам
3. Сравниваем текущий с следующим элементом. Если это первый со вторым столбиком то просто присваиваем нашей переменной значение, например -1 для уменьшения и 1 для увличения.
Если это сравнения послдующих столбиков так же сравниваем два элемента (узнаем направление) и сравниваем с предыдущим. Если направление изменилось выводим 0 и выходим из цикла по столбикам. Если дошли до последниего столбика ни чего не сравниваем - просто выводим 1
RAQ
0 / 0 / 0
Регистрация: 17.11.2011
Сообщений: 12
24.11.2011, 03:02  [ТС]     Построить последовательность #11
Цитата Сообщение от voral Посмотреть сообщение
0. Заводим переменную хранящую направление
1. Создаем цикл по строкам в котором:
2. Создаем цикл по столбцам
3. Сравниваем текущий с следующим элементом. Если это первый со вторым столбиком то просто присваиваем нашей переменной значение, например -1 для уменьшения и 1 для увличения.
Если это сравнения послдующих столбиков так же сравниваем два элемента (узнаем направление) и сравниваем с предыдущим. Если направление изменилось выводим 0 и выходим из цикла по столбикам. Если дошли до последниего столбика ни чего не сравниваем - просто выводим 1

писал такую штуку , всегда выводило что ф-ыя возростает ;#

Добавлено через 12 минут
Цитата Сообщение от RAQ Посмотреть сообщение
писал такую штуку , всегда выводило что ф-ыя возростает ;#
если можно скинь код :#
voral
345 / 325 / 46
Регистрация: 16.03.2008
Сообщений: 1,694
24.11.2011, 09:13     Построить последовательность #12
Лучше (для тебя же) было бы привести этот самый неправильно рабочий код здесь (если на самом деле делал

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
75
76
77
#include <iostream>
#include <conio.h>
using namespace std ;
 
int compare(int a1, int a2)
{
    if (a1==a2) return 0;
    return (a1 > a2) ?  1 : -1;
}
int main ()
{ 
    int i,j,n;
    cout << "n=";
    cin >> n;
    if (n<2) 
    {
        return 1;
    }
    int** a = new int*[n];
    if (a == NULL)
    {
        return 2; 
    };
    for (int i = 0; i < n; ++i) 
    {
        if ((a[i] = new int[n]) == NULL)
        {
            delete [] a;
            return 2;
        }
    }
    for (i=0; i<n; ++i)
          for (j=0; j<n; ++j)
        {
            cout << "n[" << i << "][" << j << "] = ";
              cin>>a[i][j];
        }
    cout<<endl;
    for (i=0; i<n; ++i)
    {
        for (j=0;j < n; ++j)
        {
             cout<<a[i][j]<<' ';
        }
         cout<<endl;
    }
    cout<<endl;
    int direct;
    for (i=0; i < n; ++i)
    {
        direct = 0;
        cout << "b[" <<  i << "] = ";
        for (j=0;j < n; ++j)
        {
            if (j == n-1)
            {
                cout << ((direct != 0) ? 1 : 0);
            }
            else if (j==0)
            {
                direct = compare(a[i][j],a[i][j+1]);
            }
            else
            {
                if (compare(a[i][j],a[i][j+1]) != direct)
                {
                    cout << 0;
                    break;
                }
            }    
        }
         cout<<endl;
    }
    getch();
    delete [] a;
    return 0;
 }
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.11.2011, 20:22     Построить последовательность
Еще ссылки по теме:

C++ Цикл: Построить последовательность целых чисел a1, ..., a30, где a1=1, a2=1, a[i]=a[ i/2 ]+ a[i – 2] (i=3, ..., 30).
C++ Построить последовательность, образованную цифрами семеричного представления
C++ Построить последовательность действительных чисел a1,..., an по правилу

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

Или воспользуйтесь поиском по форуму:
RAQ
0 / 0 / 0
Регистрация: 17.11.2011
Сообщений: 12
24.11.2011, 20:22  [ТС]     Построить последовательность #13
делал , только делал через фор и иф елс в цыкле , мб поетому и не получалось =) .
на пост выше
oi sps tebe , krasivo , chotko , ponyatno :#
Yandex
Объявления
24.11.2011, 20:22     Построить последовательность
Ответ Создать тему
Опции темы

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