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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 12.12.2013, 14:58   #1
Foxlin
Пользователь
 
Регистрация: 05.12.2013
Сообщений: 16
По умолчанию Помогите переделать программу на динамический массив C++

Помогите переделать программу с использованием динамической памяти!
Код:
#include <stdio.h>
#include <conio.h>
#include <clocale>
#include <iostream>

using namespace std;
 
int main ()
{
	setlocale (LC_ALL,"");
        const int
        N1 = 10,
        M1 = 10,
        N2 = 10;
    int a[N1][M1],i,j,n,m;
    int b[N2];
    
    printf ("Введите размер: ");
    scanf ("%d%d",&n,&m);
    
    printf ("Введите эллименты:\n");
    for (i = 0; i < n; i++)
        for (j = 0; j < m; j++)
            scanf ("%d",&a[i][j]);

	printf("\nВывод матрицы: \n");
 
    for (i = 0; i < m; i++)
	{
		for (j = 0; j < n; j++)
			printf ("%d\t",a[i][j]);
		cout << endl;
	}

	int sum1=0,sum2=0,maxsum=0,minsum=0,i_,j_;
    
    for (j = 0, sum1 = 0, maxsum = 0, j_ = 0; j < m; j++)
    {
        for (i = 0; i < n; i++)
            sum1 += a[i][j];
 
        if (sum1 > maxsum)
        {
            maxsum = sum1;
            j_ = j+1;
        }
        sum1 = 0;
    }
 
    for (j = 0; j<n; j++)
        minsum+=a[0][j];
    
    for (i = 0, sum2 = 0, i_ = 0; i < n; i++)
    {
        for (j = 0; j < m; j++)
            sum2 += a[i][j];
 
        if (sum2 <= minsum)
        {
            minsum = sum2;
            i_ = i + 1;
        }
        sum2 = 0;
    }
 
    printf ("\n\nСтрока = %d\nСтолбец = %d",i_,j_);
 
    
    for (j = 0; j < n; j++)
        b[j] = a[(i_)-1][j];
 
    for (j = 0, i = 0; j < n, i < n; j++, i++)  
        a[(i_) - 1][j]=a[i][(j_) - 1];
 
    for (j = 0, i = 0; j < n, i < n; j++, i++)
        a[i][(j_)-1]=b[j];
 
    printf("\n\nИзмененная матрица: \n");
 
    for (i = 0; i < m; i++)
	{
		for (j = 0; j < n; j++)
			printf ("%d\t",a[i][j]);
		cout << endl;
	}
 
    getch ();
 
    return 0;
}

Последний раз редактировалось Stilet; 12.12.2013 в 16:13.
Foxlin вне форума Ответить с цитированием
Старый 12.12.2013, 16:15   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Код:
    int i,j,n,m;
    int *b = new int[N2];
    int **a= new int*[N1]; for(int i=0;i<N1;i++) a[i]=new int[M1];
И в конце:
Код:
delete[] b;
for(int i=0;i<N1;i++) delete[] a[i]; delete[] a;
Если не ошибаюсь больше ничего менять не нужно.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 12.12.2013, 16:29   #3
Foxlin
Пользователь
 
Регистрация: 05.12.2013
Сообщений: 16
По умолчанию

Выходит так?!
Код:
#include <stdio.h>
#include <conio.h>
#include <clocale>
#include <iostream>

using namespace std;
 
int main ()
{
    setlocale (LC_ALL,"");
    const int
        N1 = 10,
        M1 = 10,
        N2 = 10;
    int i,j,n,m;
    int *b = new int[N2];
    int **a= new int*[N1];

	for(int i=0;i<N1;i++)
		a[i]=new int[M1];
    
    printf ("Введите размер: ");
    scanf ("%d%d",&n,&m);
    
    printf ("Введите эллименты:\n");
    for (i = 0; i < n; i++)
        for (j = 0; j < m; j++)
            scanf ("%d",&a[i][j]);

	printf("\nВывод матрицы: \n");
 
    for (i = 0; i < m; i++)
	{
		for (j = 0; j < n; j++)
			printf ("%d\t",a[i][j]);
		cout << endl;
	}

	int sum1=0,sum2=0,maxsum=0,minsum=0,i_,j_;
    
    for (j = 0, sum1 = 0, maxsum = 0, j_ = 0; j < m; j++)
    {
        for (i = 0; i < n; i++)
            sum1 += a[i][j];
 
        if (sum1 > maxsum)
        {
            maxsum = sum1;
            j_ = j+1;
        }
        sum1 = 0;
    }
 
    for (j = 0; j<n; j++)
        minsum+=a[0][j];
    
    for (i = 0, sum2 = 0, i_ = 0; i < n; i++)
    {
        for (j = 0; j < m; j++)
            sum2 += a[i][j];
 
        if (sum2 <= minsum)
        {
            minsum = sum2;
            i_ = i + 1;
        }
        sum2 = 0;
    }
 
    printf ("\n\nСтрока = %d\nСтолбец = %d",i_,j_);
 
    
    for (j = 0; j < n; j++)
        b[j] = a[(i_)-1][j];
 
    for (j = 0, i = 0; j < n, i < n; j++, i++)  
        a[(i_) - 1][j]=a[i][(j_) - 1];
 
    for (j = 0, i = 0; j < n, i < n; j++, i++)
        a[i][(j_)-1]=b[j];
 
    printf("\n\nИзмененная матрица: \n");
 
    for (i = 0; i < m; i++)
	{
		for (j = 0; j < n; j++)
			printf ("%d\t",a[i][j]);
		cout << endl;
	}

	delete[] b;
	for(int i=0;i<N1;i++) 
		delete[] a[i]; 
	delete[] a;

    getch (); 
    return 0;
}



___________
Код по правилам нужно оформлять не тегом цитирования,
а тегом [CODE]..[/СODE] (кнопочка на панели форматирования с решёточкой #)

Не забывайте об этом!

Модератор.

Последний раз редактировалось Serge_Bliznykov; 12.12.2013 в 16:33.
Foxlin вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Немогу переделать программу что бы массив вводился с руки! GreyF Общие вопросы C/C++ 2 27.11.2012 11:32
Как переделать под динамический двумерный массив? Kroleg C++ Builder 2 20.10.2011 13:36
переделать массив из статического в динамический Saka Помощь студентам 13 21.12.2009 21:01
Помогите переделать программу на VS C++ Many man Помощь студентам 1 16.10.2009 19:26
Помогите переделать программу. Valentin49 Помощь студентам 1 26.03.2009 13:58