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

Переворот массива относительно главной диагонали (транспонирование) - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ вещественная матрица http://www.cyberforum.ru/cpp-beginners/thread357441.html
нужна помощь с решением двух задач не как не получается их решить, на язык С 1)Задана вещественная матрица размером N×M. Определить сумму максимальных элементов всех столбцов матрицы. 2)Написать программу ввода информации по студенту (Ф.И.О.,группа,факультет,курс). фамилия, имя, отчество (строки по 15 символов); курс (целое число от 1 до 5); средний балл (вещественное число от 1 до...
C++ Как одну функцию использовать в двух проектах Есть функция которую нужно вызывать в двух проектах Я поместил ее в отдельный .cpp файл Проблема в том что в двух разных проектах свои хедер файлы(.h) которые нужно включать в .cpp c этой функцией Как можно в зависимости от проекта делать разные #include в этом .cpp файле ? или может есть другие способы использовать одну функцию в двух проектах ? http://www.cyberforum.ru/cpp-beginners/thread357407.html
Написать функцию, которая в массиве char ищет цифры и заменяет их символом "#" C++
Простите за наглость... Но в С++ вообще плыву. Просьба - помогите пожалуйста в написании программки, если вас не слишком затруднит...!!! Задание:В главной программе следует описать два массива S\ и S2. Элементы первого массива следует задать при описании, второго-ввести с клавиатуры. Обработать каждый из массивов с помощью составленной функции и результаты вывести на экран. Написать функцию,...
3 метода соотировка C++
написать 3 метода соотировка
C++ Уроки по C++ для самых маленьких http://www.cyberforum.ru/cpp-beginners/thread357386.html
Приветствую всех. Размещаю ссылку на уроки по C++ для новичков. Описание из meta description: Данный раздел предназначен для тех, кто совершенно не знаком с какими либо языками программирования, но хочет познакомиться. Здесь будут выкладываться подробные статьи о языке программирования C/C++, но особое внимания будет уделено последнему. Мы начнем с основных принципов и закончим данный...
C++ АТД список. Замена элементов в списке Здравствуйте. Нужна ваша помощь! Подскажите пожалуйста как заменить элементы в списке которые стоят на четных позициях? Суть примера такова!! Пользователь вводит символ 'Х' и если есть такой символ на четных позициях в списке, то его заменить на "Y". подробнее

Показать сообщение отдельно
alkagolik
 Аватар для alkagolik
1510 / 616 / 79
Регистрация: 15.07.2011
Сообщений: 3,552
28.09.2011, 17:15     Переворот массива относительно главной диагонали (транспонирование)
задача 2
единственное что мне не дает покоя, так это то, что строка 18 эквивалентна NULL чего быть не должно кто подскажет в чем дело?
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
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
 
int main()
{
    srand(time(NULL));
    int i, k, **arr, N, M;
 
    printf("введите количество строк\n");
    scanf("%d", &N);
    printf("введите количество столбцов\n");
    scanf("%d", &M);
 
    arr = (int**) malloc(N * sizeof(int*));
 
    for (i = 0; i != N; ++i)
        arr[i] = (int*) malloc(M * sizeof(int));
 
    for (i = 0; i != N; ++i)
        for (k = 0; k != M; ++k)
            arr[i][k] = rand() % 10;
 
    printf("\nисходная матрица\n");
    for(i = 0; i < N; ++i){
        for(k = 0; k < M; ++k)
            printf(" %d", arr[i][k]);
        printf("\n");
    }
    
    printf("\nтранспонированная матрица\n");
    for(i = 0; i < M; ++i){
        for(k = 0; k < N; ++k)
            printf(" %d", arr[k][i]);
        printf("\n");
    }
 
    for(i = 0; i != N; ++i)
        free(arr[i]);
    free(arr);
    return 0;
}
результат работы
Код
введите количество строк
4
введите количество столбцов
5
(null) #errno в условии if ((arr[i] = (int*) malloc(M * sizeof(int))) == NULL)
(null)
(null)
(null)
заполнение матрицы значениями

исходная матрица
 9 3 9 5 0
 5 9 3 5 0
 4 9 8 7 4
 4 6 3 7 9

транспонированная матрица
 9 5 4 4
 3 9 9 6
 9 3 8 3
 5 5 7 7
 0 0 4 9


Добавлено через 1 час 18 минут
nxnx, любой n мерный массив в машине преобразуется в одномерный. это факт. а в данном примере двумерный массив arr[N][M] преобразуется при компиляции в массив arr[N * M] логическое следствие: мнимый (мнимый потому что массив фактически одномерный) &arr[0][0] это &arr[0] , т.е. &arr
или я ошибаюсь?
 
Текущее время: 22:15. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru