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

последовательность чисел b1,...bn - C++

Восстановить пароль Регистрация
 
tontb
0 / 0 / 0
Регистрация: 19.10.2010
Сообщений: 9
20.10.2010, 22:23     последовательность чисел b1,...bn #1
Дана последовательность чисел b1,...bn. Получить квадратную матрицу порядка n, элементами которой являются числа b1,...,bn^n, расположенные по схеме:
Изображения
 
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.10.2010, 22:23     последовательность чисел b1,...bn
Посмотрите здесь:

C++ Задана последовательность из n чисел. Найти количество чисел больше своего номера
Дана последовательность чисел. Найти количество различных чисел в этой последовательности C++
Дана последовательность чисел. Найти количество различных чисел в этой последовательности C++
Вводится последовательность из N вещественных чисел. Определить наименьшее число, среди чисел больших 20. C++
C++ Вводить последовательность вещественных чисел, пока следующее вводимое число не окажется меньше предыдущего. Вывести полученую последовательность.
C++ Вводится последовательность из N вещественных чисел. Определить наименьшее число, среди чисел больших 20
C++ Построить последовательность из 20 чисел, образованную цифрами пятеричного представления последовательности натуральных чисел
C++ Дана последовательность из М чисел. Вычислить сумму и количество чисел, которые меньше 5

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
TrenAr
21 / 20 / 2
Регистрация: 21.06.2010
Сообщений: 80
21.10.2010, 02:07     последовательность чисел b1,...bn #2
Цитата Сообщение от tontb Посмотреть сообщение
Дана последовательность чисел b1,...bn. Получить квадратную матрицу порядка n, элементами которой являются числа b1,...,bn^n, расположенные по схеме:
Набросал на С. Код содержит логическую ошибку - не могу понять какую. Он когда первый раз начинает выходить за границу для продолжения алгоритма - делает вид, что закончил, правда непонятно почему

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
78
79
80
81
82
83
84
#include <stdio.h>
 
#define SIZE 7
 
void printIt( short mF[ SIZE ][ SIZE ] );
void fillIt( short mF[ SIZE ][ SIZE ], short *x, short *y, short *value );
 
int main()
{
    short x = 0, y = 0, value = 1;
    short m[ SIZE ][ SIZE ] = { 0 };
    
    while ( ( x != SIZE - 1 ) && ( y != SIZE - 1 ) )
    {
          fillIt( m, &x, &y, &value );
          printIt( m );
    }
    
    getch();
    return 0;
}
 
//Zigzag
//x and y is inversy!
void fillIt( short mF[ SIZE ][ SIZE ], short *x, short *y, short *value )
{
     //Current point
     if ( ( *x >= 0 ) && ( *x <= SIZE - 1 )
        && ( *y >= 0 ) && ( *y <= SIZE - 1 ) )
        mF[ *x ][ *y ] = *value;
     //Step down
     (*x)++;
     if ( *x <= SIZE - 1 )
     {
          (*value)++;
          mF[ *x ][ *y ] = *value;
     }
     //Diagonal': up and right
     do
     {
          (*x)--;
          (*y)++;
          if ( ( *x >= 0 ) && ( *x <= SIZE - 1 )
             && ( *y >= 0 ) && ( *y <= SIZE - 1 ) )
          {
                (*value)++;
                mF[ *x ][ *y ] = *value;
          }
     } while ( ( *x > 0 ) && ( *y < SIZE - 1 ) );
     //Step to right
     (*y)++;
     if ( *y <= SIZE - 1 )
     {
          (*value)++;
          mF[ *x ][ *y ] = *value;
     }
     //Diagonal': down and left
     do
     {
          (*x)++;
          (*y)--;
          if ( ( *x >= 0 ) && ( *x <= SIZE - 1 )
             && ( *y >= 0 ) && ( *y <= SIZE - 1 ) )
          {
                (*value)++;
                mF[ *x ][ *y ] = *value;
          }
     } while ( ( *x < SIZE - 1 ) && ( *y > 0 ) );
}
 
//Print massive     
void printIt( short mF[ SIZE ][ SIZE ] )
{
     short i, j;
     
     for ( i = 0 ; i <= SIZE - 1 ; i++ )
     {
         for ( j = 0 ; j <= SIZE - 1 ; j++ )
             printf( "%2hd ", mF[ i ][ j ] );
         printf( "\n" );
     }
     printf( "\n" );
     getch();
}
Mr.X
Эксперт С++
 Аватар для Mr.X
2807 / 1583 / 248
Регистрация: 03.05.2010
Сообщений: 3,696
21.10.2010, 14:24     последовательность чисел b1,...bn #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
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 <algorithm>
#include <iostream>
#include <vector>
////////////////////////////////////////////////////////////////////////////////////
typedef std::vector<int>    T_row;
typedef std::vector<T_row>  T_matr;
////////////////////////////////////////////////////////////////////////////////////
void  print(const T_matr&  matr)
{
    for(size_t  i = 0; i < matr.size(); ++i)
    {
        for(size_t  j = 0; j < matr.size(); ++j)
        {
            std::cout << matr[i][j]
                      << '\t';
        }
        std::cout << std::endl
                  << std::endl
                  << std::endl;
    }
}
////////////////////////////////////////////////////////////////////////////////////
bool  go
    (
        int&  i, 
        int&  j,         
        int   n
    )
{
    int remainder = (i + j) % 2;
    int& ii = remainder ? j : i;
    int& jj = remainder ? i : j;
 
    if(ii == n - 1)
    {
        if(jj == n - 1)
        {
            return  false;
        }
        ++jj;
    }
    else 
    {
        ++ii;        
        if(jj)
        {
            --jj;
        }     
    } 
    return  true;
}
////////////////////////////////////////////////////////////////////////////////////
void  fill(T_matr&  matr)
{   
    int val  = 1;
    int i    = 0;
    int j    = 0;
    do
    {
        matr[i][j] = val++;
    }while(go(i, j, matr.size()));
}
////////////////////////////////////////////////////////////////////////////////////
int main()
{
    std::cout << "n = ";    
    int n = 0;
    std::cin >> n;
    std::cout << std::endl;
    T_matr  matr(n, T_row(n));
    fill(matr);
    print(matr);
}
Yandex
Объявления
21.10.2010, 14:24     последовательность чисел b1,...bn
Ответ Создать тему
Опции темы

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