Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
sad_dreamer
0 / 0 / 0
Регистрация: 06.12.2012
Сообщений: 4
#1

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

06.12.2012, 01:03. Просмотров 528. Ответов 4

Дана задача:
Даны: n - переменная величина
а(2n*2n) - матрица, разбитая на 4 равных части размером n*n
...........|...........
....1.....|.....2....
...........|...........
----------+----------
...........|...........
....3.....|....4.....
...........|..........

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

Проблема: не понимаю как вводить такие матрицы ( скорее всего надо динамическую, так как n - меняется) и проблема с функцией.
Если кто-то поможет буду благодарен.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.12.2012, 01:03
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Поменять части матрицы(из файла) местами с использованием функции (C++):

Поменять местами max и min четных строк матрицы (без функции) - C++
Сделать двумерный массив без функции на С++. Дана квадратная матрица. Размерность вводится. Поменять местами max и min четных строк. ...

Ввести матрицу с внешнего файла и поменять местами макс. и мин. элементы каждого столбца матрицы - C++
Дана матрица A . Необходимо поменять местами максимальный и минимальный элемент каждого столбца.Ввести матрицу с внешнего файла(.txt) и...

Поменять части массива местами - C++
Дан массив M, размерность задать в программе с помощью именованной константы. Указать элемент-границу (ввести номер с клавиатуры)....

Поменять местами дробную и целую части числа - C++
Дано действительное число R вида nnn. ddd (три цифровых разряда в дробной и целой частях). Поменять местами дробную и целую части числа...

Поменять местами столбец L и строку K местами квадратной матрицы 4х4 - C++
#include "stdafx.h" #include <iostream> using namespace std; #define N 4 #define M 4 int _tmain(int argc, _TCHAR* argv) {...

В функции, для каждой строки матрицы M[n][k], максимальный элемент поменять местами с первым элементом строки - C++
В функции, для каждой строки матрицы M, максимальный элемент поменять местами с первым элементом строки. Дополнительных массивов и матриц...

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

Добавлено через 1 час 42 минуты
Народ, пожалуйста помогите! Очень нужен сам код!
Заранее спасибо.
0
sad_dreamer
0 / 0 / 0
Регистрация: 06.12.2012
Сообщений: 4
06.12.2012, 12:29  [ТС] #4
Вот, что я смог пока наработать, но это все наверно неправильно. Так что очень нужна помощь.
0
Миниатюры
Поменять части матрицы(из файла) местами с использованием функции  
xtorne21st
интересующийся
304 / 275 / 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;
}
0
07.12.2012, 03:20
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
07.12.2012, 03:20
Привет! Вот еще темы с ответами:

Поменять местами значения 2 переменных с использованием указателей - C++
Здравствуйте, что-то недопонимаю.... # include &lt;iostream&gt; using namespace std; //3.Используя указатели и оператор разыменования, ...

Поменять местами первый элемент заданной матрицы с наименьшим из отрицательных элементов этой же матрицы - C++
уважаемые форумчане,помогите разобраться с задачкой:создать двумерный массив 3x3,найти min из отрицательных элементов,поменять min c...

Поменять местами элементы матрицы - C++
ЗАДАНИЕ ТАКОЕ: Дано: прямоугольные матрицы A и B. Поменять местами последние отрицательные элементы матрицы. Нахождение последнего...

Поменять местами столбцы матрицы - C++
Matrix53. Дана матрица размера M × N. Поменять местами столбец с номером 1 и последний из столбцов, содержащих только положительные...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru