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

Поменять части матрицы(из файла) местами с использованием функции - C++

Восстановить пароль Регистрация
 
sad_dreamer
0 / 0 / 0
Регистрация: 06.12.2012
Сообщений: 4
06.12.2012, 01:03     Поменять части матрицы(из файла) местами с использованием функции #1
Дана задача:
Даны: n - переменная величина
а(2n*2n) - матрица, разбитая на 4 равных части размером n*n
...........|...........
....1.....|.....2....
...........|...........
----------+----------
...........|...........
....3.....|....4.....
...........|..........

Нужно поменять местами блоки 1 и 4 без использования дополнительных матриц.
Все преобразования матрицы оформить как функцию, а все данные для нее передаются параметрами.
Ввод и вывод данных из файла.

Проблема: не понимаю как вводить такие матрицы ( скорее всего надо динамическую, так как n - меняется) и проблема с функцией.
Если кто-то поможет буду благодарен.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
xtorne21st
интересующийся
300 / 271 / 19
Регистрация: 25.09.2010
Сообщений: 1,056
06.12.2012, 02:25     Поменять части матрицы(из файла) местами с использованием функции #2
Просто представьте матрицу (можно динамически, а можно и статически), как массив указателей на строку. У вас получится 4 строки. Функция должна иметь тип void, так как она ни какого значения не передаёт, а лишь совершает определённую манипуляцию.
sad_dreamer
0 / 0 / 0
Регистрация: 06.12.2012
Сообщений: 4
06.12.2012, 11:02  [ТС]     Поменять части матрицы(из файла) местами с использованием функции #3
Цитата Сообщение от xtorne21st Посмотреть сообщение
Просто представьте матрицу (можно динамически, а можно и статически), как массив указателей на строку. У вас получится 4 строки. Функция должна иметь тип void, так как она ни какого значения не передаёт, а лишь совершает определённую манипуляцию.
В том-то все и дело - никак не могу понять как все это делать. Я самоучка и мне проще посмотреть пример чтобы разобраться самому, а примеры в учебниках которые я нашел не особо делу помогли.
если не сложно, хотелось бы на код посмотреть, особенно с функцией и параметрами.

Добавлено через 1 час 42 минуты
Народ, пожалуйста помогите! Очень нужен сам код!
Заранее спасибо.
sad_dreamer
0 / 0 / 0
Регистрация: 06.12.2012
Сообщений: 4
06.12.2012, 12:29  [ТС]     Поменять части матрицы(из файла) местами с использованием функции #4
Вот, что я смог пока наработать, но это все наверно неправильно. Так что очень нужна помощь.
Миниатюры
Поменять части матрицы(из файла) местами с использованием функции  
xtorne21st
интересующийся
300 / 271 / 19
Регистрация: 25.09.2010
Сообщений: 1,056
07.12.2012, 03:20     Поменять части матрицы(из файла) местами с использованием функции #5
терпение, только терпение, вечером, если только кто-то первый не запостит - покажу))

Добавлено через 14 часов 43 минуты
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
#include <stdio.h>
#include <stdlib.h>
 
/* Функция mx() не возвращает ни каких значений (имеет тип void)
   и принимает один аргумент размер матрицы n.
   Функция генерирует матрицу размером 4 * n^2 произвольными
   целочисленными значениями (что соответстует
   декртовой системе) и отображает данные на экране. Затем
   производит перестановку 1-го и 4-го сектора и отображает новое
   значение матрицы. Данные помещаются и читаются с файла temp_mx.txt, который
   находится в одном каталоге с программой.
   При каждом новом вызове файл создаётся заного. */
void mx( const int n );
 
int main( void )
{
    unsigned n;
    printf( "Input matrix size: " );
    scanf( "%d", &n );
    mx( n );
    
    return 0;
}
 
void mx( const int n )
{
    const int ROW = n; // количество элементов в строке
    const int COL = n; // количество элементов в столбце
    const int decart = 4; // 4
    int matrix[decart][COL][ROW];
    int a, b, c, temp, i;
    FILE *p;
    
    /* Попытка создания файла */
    if( (p = fopen( "temp_mx.txt", "w+" )) == NULL ) {
    printf( "Error: cann't write file %s", "temp_mx.txt\n"  );
    exit( EXIT_FAILURE );
    }
    
    /* Генерация матрицы случайными значениями */
    fputs( "*** Befor sort ***\n", p );
    for( a = 0; a < decart; ++a )
    for( b = 0; b < COL; ++b )
        for( c = 0; c < ROW; ++c ) {
        matrix[a][b][c] = rand() % 100; // гнерируем значениями не больше 99
        fprintf( p, "%d%s%c%s", matrix[a][b][c],
             matrix[a][b][c] > 9 || matrix[a][b][c] < 0 ? " " : "  " ,
             ( c % ROW == ROW - 1) ? '\n' : ' ',
             ( b == COL - 1 && c == ROW - 1 ) ? "\n" : "" );
        }
    /* Поменяем местами 1-й и 4-й блок */
    fputs( "*** After sort ***\n", p );
    for( a = 0; a < decart; ++a )
    for( b = 0; b < COL; ++b )
        for( c = 0; c < ROW; ++c ) {
        if( a == 0) {
            temp = matrix[a][b][c];
            matrix[a][b][c] = matrix[decart-1][b][c];
            matrix[decart-1][b][c] = temp;
        }
        fprintf( p, "%d%s%c%s", matrix[a][b][c],
             matrix[a][b][c] > 9 || matrix[a][b][c] < 0 ? " " : "  " ,
             ( c % ROW == ROW - 1) ? '\n' : ' ',
             ( b == COL - 1 && c == ROW - 1 ) ? "\n" : "" );
        }
    
    /* Выведем полученый файл на стандартный поток stdout */
    rewind( p ); // поместим указатель в начало файла
    
    c = fgetc( p );
    while( !feof(p) ) {
    fputc( c, stdout );
    c = fgetc( p );
    }
    fclose( p );
    
    return;
}
Yandex
Объявления
07.12.2012, 03:20     Поменять части матрицы(из файла) местами с использованием функции
Ответ Создать тему

Метки
использованием, матрицыиз, местами, Поменять, файла, функции, части
Опции темы

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