Форум программистов, компьютерный форум, киберфорум
C для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.72/18: Рейтинг темы: голосов - 18, средняя оценка - 4.72
2 / 2 / 1
Регистрация: 01.10.2016
Сообщений: 28
1

Ввести с клавиатуры матрицу MxN, выдать на печать её и транспонированную матрицу

02.10.2016, 10:21. Показов 3197. Ответов 5
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте, прошу у Вас помощи! Учусь на 1 курсе ВУЗа, не объяснив ничего и не прочитав лекций, задали написать программы на Си. Я абсолютный новичок в Си, да и вообще в программировании знаниями не блещу. Здесь вот мои наработки, компилятор выводит матрицу, а потом вместо транспонированной выводит опять первую матрицу. Пожалуйста, помогите найти ошибки
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
#include <stdio.h>
#include <conio.h>
 
int main()
{
int i=0, j=0, N=0, M=0, k=0;
printf ("Chiclo strok=");
scanf ("%d", &M);
printf ("Chiclo stolbcov=");
scanf ("%d", &N);
 
int A[M][N];
printf ("\nVvedite elementi matrici=");
for (i=0; i<M; i++)
{
    for (j=0; j<N; j++)
    {
        printf ("\nA[%d][%d]=", i, j);
        scanf ("%d", &(A[i][j]));
    }
}
printf ("\nVivod matrici");
for (i=0; i<M; i++)
{
    for (j=0; j<N; j++)
    {
        printf ("\nA[%d][%d]= %d\n", i, j, A[i][j]);
    }
}
for (i=1; i<M; i++)
{
    for (j=1; j<N; j++)
    {
        k=A[i][j];
        A[i][j]=A[j][i];
        A[j][i]=k;
    }
}
printf ("\nVivod trans matrici");
for (i=0; i<M; i++)
{
    for (j=0; j<N; j++)
    {
        printf ("\nA[%d][%d]= %d\n", i, j, A[i][j]);
    }
}
getch ();
return 0;
}
[/CLANG]
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
02.10.2016, 10:21
Ответы с готовыми решениями:

Программа вводит целую матрицу А(mxn) и выводит транспонированную к ней матрицу А’
Программа вводит целую матрицу А(mxn) и выводит транспонированную к ней матрицу А’, все элементы...

Ввести матрицу, заменить удвоенным значением первый и последний элемент матрицы, матрицу вывести на печать
Ввести матрицу А(n,m) вещественного типа найти среднее арифметическое положительных элементов...

Ввести с клавиатуры матрицу размерностью M x N. Вывести исходную матрицу, номер строки или столбца с заданны
Условие: Столбец с минимальным произведением всех нечетных элементов. Поменять местами: Все ...

Дано квадратную матрицу размера n x n. Получить транспонированную матрицу
Дано квадратную матрицу размера n x n. Получить транспонированную матрицу.

5
738 / 543 / 416
Регистрация: 17.09.2015
Сообщений: 1,601
02.10.2016, 10:40 2
ну дык у вас элемент,например A[1][2] меняется с A[2][1],а при переходе цикла на строку 2 элемент A[2][1] обратно меняется с A[1][2].И все остаются на своих местах.
0
2 / 2 / 1
Регистрация: 01.10.2016
Сообщений: 28
02.10.2016, 11:14  [ТС] 3
Большое спасибо! Опять же глупая ошибка... Я исправил ее, но теперь возник такой вот вопрос: при вводе матрицы 2х2 программа работает нормально, при вводе же матриц других размерностей возникают ошибки. Например, вот здесь матрица 3х3, в транспонированной элемент А [2] [1] должен быть равен 5, а он равен 14
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
#include <stdio.h>
#include <conio.h>
 
int main()
{
int i=0, j=0, N=0, M=0;
printf ("Chiclo strok=");
scanf ("%d", &M);
printf ("Chiclo stolbcov=");
scanf ("%d", &N);
 
int A[M][N];
printf ("\nVvedite elementi matrici=");
for (i=0; i<M; i++)
{
    for (j=0; j<N; j++)
    {
        printf ("\nA[%d][%d]=", i, j);
        scanf ("%d", &(A[i][j]));
    }
}
printf ("\nVivod matrici");
for (i=0; i<M; i++)
{
    for (j=0; j<N; j++)
    {
        printf ("\nA[%d][%d]= %d\n", i, j, A[i][j]);
    }
}
for (i=1; i<M; i++)
{
    for (j=1; j<N; j++)
    {
        A[i][j]=A[j][i];
    }
}
printf ("\nVivod trans matrici");
for (i=0; i<M; i++)
{
    for (j=0; j<N; j++)
    {
        printf ("\nA[%d][%d]= %d\n", i, j, A[j][i]);
    }
}
getch ();
return 0;
}
Миниатюры
Ввести с клавиатуры матрицу MxN, выдать на печать её и транспонированную матрицу  
0
738 / 543 / 416
Регистрация: 17.09.2015
Сообщений: 1,601
02.10.2016, 13:42 4
годится только для квадратных матриц.
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <stdio.h>
#include <stdlib.h>
#define N 7
int main()
{
    int i, j, x = 1, temp, A[N][N];
    for(i = 0; i < N; i++, putchar('\n'))
        for(j = 0; j < N; j++, x++)
            printf("%3d", A[i][j] = x);
    for(i = 0; i < N; i++){
        for(j = i; j < N; j++){
            temp = A[i][j];
            A[i][j] = A[j][i];
            A[j][i] = temp;
        }
    }
    putchar('\n');
    for(i = 0; i < N; i++, putchar('\n'))
        for(j = 0; j < N; j++)
            printf("%3d", A[i][j]);
    return 0;
}
Добавлено через 9 минут
для неравносторонних требуется динамическое выделение памяти,которое вы наверное еще не изучали,чтоб выделить память под новую матрицу.
А можно просто вывести на экран транспонированную матрицу,не транспонируя ее саму:
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <stdio.h>
#include <stdlib.h>
#define N 7
#define M 12
int main()
{
    int i, j, x = 1, A[N][M];
    for(i = 0; i < N; i++, putchar('\n'))
        for(j = 0; j < M; j++, x++)
            printf("%3d", A[i][j] = x);
    putchar('\n');
    for(j = 0; j < M; j++, putchar('\n'))
        for(i = 0; i < N; i++)
            printf("%3d", A[i][j]);
    return 0;
}
0
2 / 2 / 1
Регистрация: 01.10.2016
Сообщений: 28
02.10.2016, 19:29  [ТС] 5
Большое спасибо Вам за помощь! А почему в директиве #define у Вас стоят для M и N именно числа 7 и 12?
0
738 / 543 / 416
Регистрация: 17.09.2015
Сообщений: 1,601
02.10.2016, 19:31 6
просто от фонаря...можете подставлять туда любые свои значения,поэкспериментируйте
0
02.10.2016, 19:31
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
02.10.2016, 19:31
Помогаю со студенческими работами здесь

Ввести матрицу А(n,n)произвольным образом, транспонировать ее. Исходную и транспонированную матрицы вывести на экран монитора
Ввести матрицу А(n,n)произвольным образом, транспонировать ее. Исходную и транспонированную матрицы...

Создать матрицу и вывести на экран транспонированную матрицу
Помогите, пожалуйста, с выполнением задания, суть которого заключается в том, что бы создать...

Заполнить случайными числами матрицу А(mxn) и В(mxn) и вывести их на экран в виде таблицы
Заполнить случайными числами матрицу А(mxn) и В(mxn) и вывести их на экран в виде таблицы, окрасив...

Ввести матрицу с клавиатуры
Обработка и поиск в двумерном массиве Hеобходимо организовать ввод двумерного массива указанным...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru