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

перемена элементов - C++

Восстановить пароль Регистрация
 
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 4.78
Кристик
0 / 0 / 0
Регистрация: 26.05.2011
Сообщений: 12
27.05.2011, 00:03     перемена элементов #1
Как можно Переставить все строки и элементы k-того столбца?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
NightmareZ
 Аватар для NightmareZ
1336 / 559 / 37
Регистрация: 31.03.2009
Сообщений: 1,907
27.05.2011, 04:34     перемена элементов #2
Цитата Сообщение от Кристик Посмотреть сообщение
Как можно Переставить все строки и элементы k-того столбца?
Куда переставить?
Кристик
0 / 0 / 0
Регистрация: 26.05.2011
Сообщений: 12
27.05.2011, 12:01  [ТС]     перемена элементов #3
Цитата Сообщение от NightmareZ Посмотреть сообщение
Куда переставить?
Это задание по си.....просто по проге контрольная.....произвольно переставить...как бы задача в общем виде
Nameless One
Эксперт С++
 Аватар для Nameless One
5753 / 3402 / 255
Регистрация: 08.02.2010
Сообщений: 7,393
27.05.2011, 12:34     перемена элементов #4
Цитата Сообщение от Кристик Посмотреть сообщение
произвольно переставить
точно-точно?
Кристик
0 / 0 / 0
Регистрация: 26.05.2011
Сообщений: 12
27.05.2011, 16:05  [ТС]     перемена элементов #5
точнее некуда)
Nameless One
Эксперт С++
 Аватар для Nameless One
5753 / 3402 / 255
Регистрация: 08.02.2010
Сообщений: 7,393
27.05.2011, 16:45     перемена элементов #6
Вот они, произвольные перестановки:
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
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
#include <stdio.h>
#include <stdlib.h>
#include <assert.h>
#include <time.h>
 
#define element_l -5
#define element_r  5
#define swaps_cnt_l 15
#define swaps_cnt_r 42
 
int random_range(int, int);
void display(int**, size_t);
 
int main()
{
    size_t n, k, i, j;
 
    size_t cnt;
    
    size_t row_cnt = 0;
    size_t k_cnt = 0;
 
    size_t row1, row2;
 
    int t;
    int* t_row;
            
    int** matrix;
 
    srand((size_t) time(NULL));
    
    puts("Введите порядок матрицы n и номер столбца k (k < n): ");
    scanf("%u %u", &n, &k);
        
    assert(k < n);
 
    matrix = malloc(n * sizeof(int*));
    assert(matrix != NULL);
 
    for(i = 0; i < n; ++i)
    {
    matrix[i] = malloc(n * sizeof(int));
    assert(matrix[i] != NULL);
 
    for(j = 0; j < n; ++j)
        matrix[i][j] = random_range(element_l, element_r);
    }
 
    printf("Сгенерированная матрица порядка %u:\n", n);
    
    display(matrix, n);
 
    cnt = random_range(swaps_cnt_l, swaps_cnt_r);
 
    printf("Будет выполнено произвольных перестановок "
       "(элементов %u-ого столбца или строк матрицы): %u\n", k, cnt);
 
    for(i = 0; i < cnt; ++i)
    {
    do
    {
        row1 = random_range(0, n - 1);
        row2 = random_range(0, n - 1);
    }
    while(row1 == row2);
    
    if(rand() % 2)
    {
        t = matrix[row1][k];
        matrix[row1][k] = matrix[row2][k];
        matrix[row2][k] = t;
        ++k_cnt;
    } else {
        t_row = matrix[row1];
        matrix[row1] = matrix[row2];
        matrix[row2] = t_row;
        ++row_cnt;
    }
    }
 
    printf("Было выполнено\n\tперестановок строк: %u\n"
       "\tперестановок элементов в %u-ом столбце: %u\n", row_cnt, k, k_cnt);
    puts("Матрица после перестановок: ");
 
    display(matrix, n);
    
    for(i = 0; i < n; ++i)
    free(matrix[i]);
    free(matrix);
    
    exit(0);
}
 
int random_range(int l_t, int r_t)
{
    return rand() % (r_t - l_t + 1) + l_t;
}
 
void display(int** matrix, size_t n)
{
    int i, j;
 
    for(i = 0; i < n; ++i, putchar('\n'))
    for(j = 0; j < n; ++j)
        printf("%4d", matrix[i][j]);
}
Кристик
0 / 0 / 0
Регистрация: 26.05.2011
Сообщений: 12
27.05.2011, 16:56  [ТС]     перемена элементов #7
а в борланде она работать будет?
Nameless One
Эксперт С++
 Аватар для Nameless One
5753 / 3402 / 255
Регистрация: 08.02.2010
Сообщений: 7,393
27.05.2011, 16:58     перемена элементов #8
Кристик, не знаю, проверь. А вообще, борланд уже давно умер.
kjahert
48 / 48 / 5
Регистрация: 08.04.2011
Сообщений: 124
27.05.2011, 17:42     перемена элементов #9
Кристик, Теперь будет
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
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
#include <stdio.h>
#include <stdlib.h>
#include <assert.h>
#include <time.h>
#include <alloc.h> 
#define element_l -5
#define element_r  5
#define swaps_cnt_l 15
#define swaps_cnt_r 42
 
int random_range(int, int);
void display(int**, size_t);
 
void main()
{
    size_t n, k, i, j;
 
    size_t cnt;
    
    size_t row_cnt = 0;
    size_t k_cnt = 0;
 
    size_t row1, row2;
 
    int t;
    int* t_row;
            
    int** matrix;
 
    srand((size_t) time(NULL));
    
    puts("Введите порядок матрицы n и номер столбца k (k < n): ");
    scanf("%u %u", &n, &k);
        
    assert(k < n);
 
    (int*)matrix = (int*)malloc(n * sizeof(int));
    assert(matrix != NULL);
 
    for(i = 0; i < n; ++i)
    {
        matrix[i] = (int*)malloc(n * sizeof(int));
        assert(matrix[i] != NULL);
 
        for(j = 0; j < n; ++j)
            matrix[i][j] = random_range(element_l, element_r);
    }
 
    printf("Сгенерированная матрица порядка %u:\n", n);
    
    display(matrix, n);
 
    cnt = random_range(swaps_cnt_l, swaps_cnt_r);
 
    printf("Будет выполнено произвольных перестановок "
           "(элементов %u-ого столбца или строк матрицы): %u\n", k, cnt);
 
    for(i = 0; i < cnt; ++i)
    {
        do
        {
            row1 = random_range(0, n - 1);
            row2 = random_range(0, n - 1);
        }
        while(row1 == row2);
        
        if(rand() % 2)
        {
            t = matrix[row1][k];
            matrix[row1][k] = matrix[row2][k];
            matrix[row2][k] = t;
            ++k_cnt;
        } else {
            t_row = matrix[row1];
            matrix[row1] = matrix[row2];
            matrix[row2] = t_row;
            ++row_cnt;
        }
    }
 
    printf("Было выполнено\n\tперестановок строк: %u\n"
           "\tперестановок элементов в %u-ом столбце: %u\n", row_cnt, k, k_cnt);
    puts("Матрица после перестановок: ");
 
    display(matrix, n);
    
    for(i = 0; i < n; ++i)
        free(matrix[i]);
    free(matrix);
    
    exit(0);
    
}
 
int random_range(int l_t, int r_t)
{
    return rand() % (r_t - l_t + 1) + l_t;
}
 
void display(int** matrix, size_t n)
{
    int i, j;
 
    for(i = 0; i < n; ++i, putchar('\n'))
        for(j = 0; j < n; ++j)
            printf("%4d", matrix[i][j]);
}
Кристик
0 / 0 / 0
Регистрация: 26.05.2011
Сообщений: 12
31.05.2011, 21:59  [ТС]     перемена элементов #10
всем спасибо! работает!)))))) по гроб жизни буду благодарна!
Nursik77
31.05.2011, 22:03
  #11

Не по теме:

Кристик, для благодарности существует соответствуещая кнопочка

Кристик
0 / 0 / 0
Регистрация: 26.05.2011
Сообщений: 12
31.05.2011, 22:06  [ТС]     перемена элементов #12
дя? где?
kjahert
48 / 48 / 5
Регистрация: 08.04.2011
Сообщений: 124
31.05.2011, 22:10     перемена элементов #13
+1 спасибо возле отзыв чуть ниже смайлика (твоего)
Nursik77
31.05.2011, 22:23
  #14

Не по теме:

Кристик, а мне зачем Nameless One-у ставь

Кристик
0 / 0 / 0
Регистрация: 26.05.2011
Сообщений: 12
31.05.2011, 23:40  [ТС]     перемена элементов #15
а если задание выглядит вот так, то программа меняется?
Составить и протестировать программу для табулирования с постоянным шагом заданной функции при любых исходных данных. Число строк в таблице должно быть n+1.
Тестировать при заданном интервале изменения аргумента [a,b] и числе шагов n=2,3 или 4.
fj= fj(xj); xj= xj-1+h; h=(b-a)/n; j=1,2,…,n; ( x0=a; xn≈b ).
Для повторения операторов (для организации циклов) использовать оператор цикла типа for. Для «досрочного» выхода из цикла использовать оператор break;.Для значений аргумента и функции использовать «двумерный динамический массив»(если имя «двумерного массива» y, то одномерный «массив» y[0] содержит значения аргумента, а y[1] – функции); сначала вычислить все значения а затем вывести. Пояснения см. в конце.
Отчёт должен содержать задание, блок-схему, программу и результат (всё, что появляется на экране в результате работы программы, включая исходные данные и таблицу − n+1 строку значений аргумента и функции).
Nameless One
Эксперт С++
 Аватар для Nameless One
5753 / 3402 / 255
Регистрация: 08.02.2010
Сообщений: 7,393
01.06.2011, 19:19     перемена элементов #16
Цитата Сообщение от Кристик Посмотреть сообщение
а если задание выглядит вот так, то программа меняется?
меняется
Кристик
0 / 0 / 0
Регистрация: 26.05.2011
Сообщений: 12
01.06.2011, 19:21  [ТС]     перемена элементов #17
а как тогда надо. а кстати ты в шаблонах разбираешься?
Nameless One
Эксперт С++
 Аватар для Nameless One
5753 / 3402 / 255
Регистрация: 08.02.2010
Сообщений: 7,393
01.06.2011, 19:23     перемена элементов #18
Кристик, более-менее
Кристик
0 / 0 / 0
Регистрация: 26.05.2011
Сообщений: 12
01.06.2011, 19:24  [ТС]     перемена элементов #19
а помочь можешь?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
01.06.2011, 19:25     перемена элементов
Еще ссылки по теме:

C++ Найти суммы четных элементов (элементов с четным номером) массива вещественных чисел A(22) и нечетных элементов
C++ в массиве . найти произведение нулевых элементов, количество элементов, превышающих значение среднего арифметического элементов массива
C++ Определить сумму указанных элементов, количество нечетных элементов и среднее арифметическое четных элементов массива

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

Или воспользуйтесь поиском по форуму:
Nameless One
Эксперт С++
 Аватар для Nameless One
5753 / 3402 / 255
Регистрация: 08.02.2010
Сообщений: 7,393
01.06.2011, 19:25     перемена элементов #20

Не по теме:

Кристик, зависит от задачи, моего настроения и фазы луны. Но только не cейчас, у меня уже ночь


А вообще, пиши свои проблемы сюда, может кто другой поможет
Yandex
Объявления
01.06.2011, 19:25     перемена элементов
Ответ Создать тему
Опции темы

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