|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
20.10.2012, 21:03 | #1 |
Пользователь
Регистрация: 20.10.2012
Сообщений: 21
|
Преобразование матрицы
Дана матрица размера M * N и целые числа K1 и K2 (1<=K1<K2<=N). Поменять местами столбцы матрицы с номерами K1 и K2.
здесь обязательно использовать целочисленный тип данных??? Здест лучше самим вводить элементы матрицы или автоматичеки??? Что значит эта часть: K1--; K2--; if (((K2 - K1) >= 0) && (K2 <= N)) { for (int i=0; i<M; i++) { t = matr[i][K1]; matr[i][K1] = matr[i][K2]; matr[i][K2] = t; } } Текст программы: #include "stdio.h" #include <conio.h> int main() { int matr[10][10]; int M,N,K1,K2,t; printf("Vvedite razmer matrizi M x N: \n"); scanf("%d%d",&M,&N); for (int i=0; i<M; i++) { for (int j=0; j<N; j++) { matr[i][j] = (i+1)*(j+1); } } for (int i=0; i<M; i++) { for (int j=0; j<N; j++) { if (j+1 == N) printf("%d\n",matr[i][j]); else printf("%d ",matr[i][j]); } } printf("Vvedite celie chisla K1 i K2: \n"); scanf("%d%d",&K1,&K2); K1--; K2--; if (((K2 - K1) >= 0) && (K2 <= N)) { for (int i=0; i<M; i++) { t = matr[i][K1]; matr[i][K1] = matr[i][K2]; matr[i][K2] = t; } } else printf("Oschibka!!!\n"); for (int i=0; i<M; i++) { for (int j=0; j<N; j++) { if (j+1 == N) printf("%d\n",matr[i][j]); else printf("%d ",matr[i][j]); } } getch(); return 0; } |
20.10.2012, 21:23 | #2 |
МегаМодератор
СуперМодератор
Регистрация: 09.11.2010
Сообщений: 7,285
|
Во-первых, для оформления кода используйте кнопочку # (свое сообщение можно редактировать в течение 24 часов с помощью кнопочки Правка).
Во-вторых, размеры матрицы и номера столбцов - целые числа, сама матрица может быть вещественного типа. В-третьих, ввод элементов, это как удобнее: Если нужно быстро показать преподавателю работу - автоматическое заполнение Если обработка конкретной матрицы - ручное В-четвертых, т.к. по условию, нумерация с 1 до M и с 1 до N, а в Си нумерация с 0 до M-1 и с 0 до N-1, то делается K1--; K2--;. if (((K2 - K1) >= 0) && (K2 <= N)) - проверка того, что K1 левее K2 и K2 меньше количества столбцов. Я бы лучше написал: if (K1 >= 0 && K1 < K2 && K2 < N), т.к. (K2 <= N) - неверно (нужно строгое неравенство) Затем непосредственная перестановка элементов 2 столбцов.
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
Последний раз редактировалось BDA; 20.10.2012 в 21:33. |
21.10.2012, 18:13 | #3 |
Пользователь
Регистрация: 20.10.2012
Сообщений: 21
|
Спасибо!!!! Всё понятно!!!
|
Опции темы | Поиск в этой теме |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Матрицы. Преобразование (C#) | RIOs | Помощь студентам | 1 | 08.06.2012 22:13 |
преобразование матрицы. | Dmitriy_ | Помощь студентам | 0 | 25.05.2011 22:24 |
Преобразование матрицы C++ | MissFehn | Помощь студентам | 1 | 20.05.2011 07:45 |
Задача на преобразование матрицы | AnDre_rus | Общие вопросы C/C++ | 12 | 20.10.2010 23:34 |
Преобразование матрицы. | AndyShafl | Общие вопросы Delphi | 1 | 22.12.2009 13:59 |