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

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

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

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

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

Закрытая тема
Ваша тема закрыта, почему это могло произойти? Возможно,
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу.
Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста".
Название темы слишком короткое или не отражает сути вашего вопроса.
Тема исчерпала себя, помните, один вопрос - одна тема
Прочитайте правила и заново правильно создайте тему.
 
Опции темы Поиск в этой теме
Старый 05.12.2010, 23:08   #1
Markuss
 
Регистрация: 05.12.2010
Сообщений: 8
По умолчанию Двумерный динамический массив

Здравствуйте!
Помогите пожалуюста разобраться в данном задании
"Дана матрица NxM.Упорядочить её строки по возростанию их максимальных элементов"

вот мой код, но программа не работает, можете показать где у меня допущена ошибка и обьяснить работу 3-ей части программы, т.е "Построение строк матрицы по возрастанию их максимальных членов". Заранее большое спасибо.


Код:
#include <iostream.h>
#include <iomanip.h>
#include <math.h>
#include <stdlib.h>
#include <time.h>

int main()
{
	int *b;
int i,j,n,m,k,g,t;


//--- Ввод двумерного динамического массива NxM


cout <<"Vvedite kolichestvo strok (N): ";
cin >> n;
cout <<"Vvedite kolichestvo stolbcov (M): ";
cin >> m;

//--- Выделение памяти
int **massiv = new int*[n];
for(k= 0; k < n; k++)
massiv[k] = new int[m];

//--- Тут  massiv[i][j]
for(i = 0; i < n; i++)
for(j = 0; j < m; j++)
{
cout <<"s["<<i<<"]["<<j<<"]:";
cin >> massiv[i][j];
}
// --- Построение строк матрицы по возрастанию их максимальных членов

for (i=0;i<n;i++)
{
	b[i]=massiv[i][0];
	for (j=1;j<m;j++)
		if (massiv[i][j]>b[i]) b[i]=massiv[i][j];
}
for (i=0;i<n-1;i++)
for (j=i+1;j<n;j++)
if (b[i]>b[j])
{
	t=b[i];
	b[i]=b[j];
	b[j]=t;
	for (g=0;g<m;g++)
	{
		t=massiv[i][g];
		massiv[i][g]=massiv[j][g];
		massiv[j][g]=t;
	}
}    
// --- Вывод двумерного массива  NxM
for (i=0;i<n;i++)
{
	for (j=0;j<m;j++)
		cout <<setiosflags(ios::fixed)<<setw(10)<<setprecision(3)<<
		massiv[i][j]<<
		" ";
	cout<<endl;
}


//--- Освобождение выделенной памяти
for (int s = 0; s <n; s++)
delete[]massiv[s];
delete[]massiv;

return 0;
}

Последний раз редактировалось Markuss; 05.12.2010 в 23:53.
Markuss вне форума
Старый 06.12.2010, 00:48   #2
pacniwassano
Пользователь
 
Регистрация: 02.12.2010
Сообщений: 81
По умолчанию

где именно не работает? что выдает компилятор?
pacniwassano вне форума
Старый 06.12.2010, 17:12   #3
Markuss
 
Регистрация: 05.12.2010
Сообщений: 8
По умолчанию

Ошибка
warning C4700: local variable 'b' used without having been initialized

не работает на строке b[i]=massiv[i][0];

Последний раз редактировалось Stilet; 07.12.2010 в 09:31.
Markuss вне форума
Старый 06.12.2010, 17:19   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Код:
int *b=new int[m];
После того как m введешь.
и
Код:
delete[] b;
не забудь.
I'm learning to live...
Stilet вне форума
Старый 06.12.2010, 17:30   #5
Markuss
 
Регистрация: 05.12.2010
Сообщений: 8
По умолчанию

поставил, уже нет ошибки программа запускается но после ввода массива выдает ошибку,т.е на выводе или на сортировке происходит сбой

Сделал небольшие изменения в программе но толком ничего не изменилось при счете выбивает ошибку


Код:
#include <iostream.h>
#include <iomanip.h>

int main()
{
int n,m,i,j,k;
double t;

// Ввод размерности массива
cout << "Vvedite razmer n m" << endl;
cin >> n >> m;

// Выделение памяти под массив
double  **umas2;
umas2=new double*[n];  
for(i=0; i<n; i++) 
umas2[i]=new double[m];

// Тут ввод массива
for (i=0; i<n; i++) 
for (j=0; j<m; j++) 
{
cout << "Vvedite umas2[" << i << "][" << j << "]: " ;
cin >> umas2[i][j];
}

// Выделение памяти под массив b
double  *b;
b=new double[n]; 

	

// Действия
for (i=0; i<n; i++) 
{
              
b[i]=umas2[i][0];
for (j=1;j<m;j++)
if (umas2[i][j]>b[i]) b[i]=umas2[i][j];
}
for (i=0;i<n-1;i++)
for (j=i+1;j<n;j++)
if (b[i]>b[j])
{
t=b[i];
b[i]=b[j];
b[j]=t;
for (k=0;k<m;k++)
{
t=umas2[i][k];
umas2[i][k]=umas2[j][k];
umas2[j][k]=t;
}
}

//  Вывод на экран
for (i=0; i<n; i++) 
{
for (j=0; j<m; j++) 
cout << setw (9) << umas2[i][k] << " "; 
cout << endl;
}

// Очистка выделенной под umas2 памяти
for(i=0; i<n; i++) 
delete []umas2[i];
delete []umas2;
umas2=NULL;
 
// Очистка выделенной под b памяти
delete []b; 
b=NULL;
return 0;
}
видите у меня ошибку в коде,я уже 3 час втыкаю в монитор но не могу сообразить

Последний раз редактировалось Stilet; 07.12.2010 в 09:32.
Markuss вне форума
Старый 07.12.2010, 00:40   #6
Hacker19_90
Delphi Warrior
Старожил
 
Аватар для Hacker19_90
 
Регистрация: 15.08.2008
Сообщений: 2,502
По умолчанию

А так
Код:
#include <iostream.h>
#include <iomanip.h>
#include <conio.h>

int main()
{
int n,m,i,j,k, flag = 0;
double t;

// ???? ??????????? ???????
cout << "Vvedite razmer n m" << endl;
cin >> n >> m;

// ????????? ?????? ??? ??????
double **umas2;
umas2=new double*[n]; 
for(i=0; i<n; i++) 
umas2[i]=new double[m];

// ??? ???? ???????
for (i=0; i<n; i++) 
for (j=0; j<m; j++) 
{
cout << "Vvedite umas2[" << i << "][" << j << "]: " ;
cin >> umas2[i][j];
}

// ????????? ?????? ??? ?????? b
double *b;
b=new double[n]; 



// ????????
for (i=0; i<n; i++) 
{

b[i]=umas2[i][0];
for (j=1;j<m;j++)
if (umas2[i][j]>b[i]) b[i]=umas2[i][j];
}
do
{
flag = 0;
for (i=0;i<n-1;i++)
if (b[i]>b[i+1])
{
    flag = 1;
    t=b[i];
    b[i]=b[i+1];
    b[i+1]=t;
    for (k=0;k<m;k++)
    {
        t=umas2[i][k];
        umas2[i][k]=umas2[i+1][k];
        umas2[i+1][k]=t;
    }
}
} while (flag == 1);

// ????? ?? ?????
for (i=0; i<n; i++) 
{
for (j=0; j<m; j++) 
cout << setw (9) << umas2[i][j] << " "; 
cout << endl;
}

// ??????? ?????????? ??? umas2 ??????
for(i=0; i<n; i++) 
delete []umas2[i];
delete []umas2;
umas2=NULL;

// ??????? ?????????? ??? b ??????
delete []b; 
b=NULL;
getch();
return 0;
}
Mess with the best, die like the rest. (с) Hackers
Лабораторные, курсовые на Delphi\Pascal\C++
ya.flex-freelance@yandex.ru Icq - 636-954-303
Hacker19_90 вне форума
Закрытая тема


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
двумерный динамический массив amandra Общие вопросы Delphi 16 30.07.2013 22:56
перевернуть двумерный массив.(динамический) Arcueid1691 Общие вопросы C/C++ 0 29.11.2010 21:04
Двумерный динамический массив Inna_L Общие вопросы C/C++ 2 01.10.2010 23:27
Двумерный динамический массив С++ UnknownVirus Помощь студентам 7 20.06.2010 01:48
Двумерный динамический массив IceExecutioner Общие вопросы Delphi 1 04.06.2009 08:41