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

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

02.10.2016, 10:21. Показов 3213. Ответов 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
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
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
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
02.10.2016, 19:31
Помогаю со студенческими работами здесь

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
Преобразование полей (элементов управления содержимым) в обычный текст
РоΜа 23.01.2025
Возникла необходимость преобразовать поля в текст (те, что на вкладке разработчик добавляются) . Помучившись родил следующее: Sub ПоляВТекст() Преобразует все поля в текст (даты, текст,. . .
Как проверить существование директории в скрипте Bash
bt_guru 23.01.2025
При разработке скриптов Bash одной из ключевых задач является корректная работа с файловой системой, где особое место занимает проверка существования директорий. Эта операция становится критически. . .
Как работают срезы (slice) в Python
bytestream 23.01.2025
Python предоставляет разработчикам мощный и гибкий инструмент для работы с последовательностями данных - срезы (slices). Эта функциональность позволяет извлекать, модифицировать и управлять. . .
Как удалить подмодуль (submodule) в Git
bytestream 23.01.2025
При работе с крупными проектами в системе контроля версий Git разработчики часто сталкиваются с необходимостью управления зависимостями и внешними компонентами. Подмодули (submodules) представляют. . .
В чем разница между @staticmethod и @classmethod в Python. Декораторы методов
bytestream 23.01.2025
В Python декораторы методов представляют собой мощный инструмент, позволяющий модифицировать поведение функций и методов без изменения их исходного кода. Эта возможность является одной из. . .
Как преобразовать InputStream в String в Java
bytestream 23.01.2025
В мире Java-разработки работа с потоками данных является одной из ключевых операций при создании современных приложений. InputStream, как фундаментальный класс для обработки входных потоков данных,. . .
Как обновить форк (ответвление) репозитория в Git
bytestream 23.01.2025
Одним из наиболее мощных инструментов Git для организации совместной работы является механизм форкинга репозиториев, который позволяет создавать независимые копии проектов для дальнейшей разработки. . . .
Как работает async/await в C#. Асинхронное программировани­е в .NET
bytestream 23.01.2025
Введение в асинхронное программирование Асинхронное программирование представляет собой важнейшую концепцию современной разработки программного обеспечения, особенно в контексте создания. . .
КуМир: полное руководство
bytestream 23.01.2025
Введение в КуМир: история создания и назначение КуМир (Комплект Учебных МИров) представляет собой образовательную среду программирования, которая была создана для обучения основам алгоритмизации и. . .
Что такое OLAP. Где и как использовать многомерный анализ данных
bytestream 23.01.2025
Введение в OLAP-технологии В современном мире бизнес-аналитика и обработка больших массивов данных играют ключевую роль в принятии стратегических решений. Организации накапливают огромные объемы. . .
MongoDB: что это, для чего нужна и как использовать
bytestream 23.01.2025
Введение в MongoDB: современная документоориентированная СУБД В современном мире разработки программного обеспечения выбор правильной системы управления базами данных является критически важным. . .
Как использовать закрытый ключ шифрования в Git. Шифрование в Git
bytestream 23.01.2025
Установка и настройка закрытых ключей в Git предоставляет дополнительный уровень безопасности для работы с репозиториями. Для начала необходимо создать пару ключей, обычно это осуществляется с. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru