Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 12.05.2014, 23:37   #1
Sting95
Пользователь
 
Регистрация: 13.08.2013
Сообщений: 23
По умолчанию Переделать код. Указатели и массив / Cи

Задание: Повернуть матрицу симметрично относительно главной диагонали.

Написать программу, в которой введение массива выполняется в отдельной функции. Затем этот массив передается в главную функцию. Главная функция передает массив в другую функцию, которая обрабатывает массив и выводит результат. Ввод массива оформить в виде функции VVOD (), обработку и вывод массива в виде функции ОВR ().

Вот как я написал эту программу:

Код:
#include <stdio.h>
#include <stdlib.h>
int n,m;
 
void VVOD(int **A, char ch)
{
    int i, j;
    for (i = 1; i <= n; i++ )
        for (j = 1; j <= m; j++)
        {
            printf("%c%s%i%s%i%s",ch,"[",i,"][",j,"] : ");
            scanf("%i", &(A[i][j]));
        }
    printf("\n");
    for (i = 1; i <= n; i++ )
    {
        for (j = 1; j <= m; j++)
            printf("%i%s", A[i][j]," ");
        printf("\n");
    }
}
void OBR(int **A, char ch)
{
    int i, j, t;
    for (i = 1; i <= n; i++ )
        for (j = i + 1; j <= m; j++)
        {
            t = A[i][j];
            A[i][j] = A[j][i];
            A[j][i] = t;
        }
    printf("%s%c%s","Obrabotanuy massiv", ch, ":\n");
    for (i = 1; i <= n; i++ )
    {
        for (j = 1; j <= m; j++)
            printf("%i%s", A[i][j], " ");
        printf("\n");
    }
}
int main()
{
    int i;
    printf("Kolichestvo strok: ");
    scanf("%i", &n);
    printf("Kolichestvo stolbcov: ");
    scanf("%i", &m);
    int **A = malloc (sizeof(int)*(n+1));
    for (i = 0; i <= n; i++)
        A[i] = malloc (sizeof(int)*(m+1));
    VVOD(A, 'A');
    OBR(A, 'A');
    printf("\n");
    system("pause");
    return 0;
}
Но нужно переделать, чтобы было без указателя на указатель и без вот этого int **A = malloc (sizeof(int)*(n+1));
Sting95 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
переделать код С++ на С bilochka Помощь студентам 1 10.05.2013 15:48
Переделать код drzod Помощь студентам 9 27.02.2013 14:20
переделать программу через указатели Лена1308 Помощь студентам 1 27.11.2012 00:45
задача с++(переделать под указатели) Tiva Помощь студентам 2 23.11.2011 12:57
задача на с. указатели функции строки(хз как переделать) нонфактор Помощь студентам 1 12.01.2010 16:46