27.01.2020, 08:20 [+3 UTC]
в нашей команде: 4 172 чел. | участники онлайн: 3 (рекорд: 21)

:: РЕГИСТРАЦИЯ

задать вопрос

все разделы

правила

новости

участники

доска почёта

форум

блоги

поиск

статистика

наш журнал

наши встречи

наша галерея

отзывы о нас

поддержка

руководство

Версия системы:
7.80 (15.01.2020)
JS-v.1.35 | CSS-v.3.36

Общие новости:
06.01.2020, 22:45

Форум:
13.01.2020, 16:40

Последний вопрос:
26.01.2020, 12:17
Всего: 151486

Последний ответ:
26.01.2020, 15:31
Всего: 259689

Последняя рассылка:
26.01.2020, 22:46

Писем в очереди:
0

Мы в соцсетях:

Наша кнопка:

RFpro.ru - здесь вам помогут!

Отзывы о нас:
26.10.2019, 21:25 »
dar777
Это самое лучшее решение! [вопрос № 196791, ответ № 279005]
27.04.2011, 17:21 »
novij2011
Спасибо за быстрый ответ! ВЫ очень мне помогли. [вопрос № 182956, ответ № 266869]

РАЗДЕЛ • С / С++

Создание программ на языках C и C++.

[администратор рассылки: Андрей Кузнецов aka Dr_Andrew (Старший модератор)]

Лучшие эксперты в этом разделе

Коцюрбенко Алексей Владимирович
Статус: Модератор
Рейтинг: 741
Gluck
Статус: Студент
Рейтинг: 337
solowey
Статус: Специалист
Рейтинг: 274

Перейти к консультации №:
 

Консультация онлайн # 144793
Раздел: • С / С++
Автор вопроса: Dragonlio
Отправлена: 23.09.2008, 18:33
Поступило ответов: 3

C++
Разместить в динамической памяти ЭВМ матрицу 5х5 случайных целых чисел в диапазоне от -60 до 60. Напечатать ее. Предусмотреть оба варианта работы с матрицей – один указатель на всю матрицу и массив указателей.

Состояние: Консультация закрыта

Ответ # 230048 от Баранов Владимир aka C4tnt

Здравствуйте, Dragonlio!

Вариант с одним указателем:

//Ширина и высота матрицы
#define MWidth 5
#define MHeight 5

//Матрица
int Matrix[MWidth*MHeight];

int main()
{
int i;
int j;
for (i = 0;i<MWidth*MHeight;i++)
{
Matrix[i] = (rand() / (RAND_MAX/120))-60; //Наполняем матрицу
}

for (i = 0;i<MHeight;i++) //Печатаем матрицу
{
for (j = 0;j<MWidth;j++)
{
printf("%i ",Matrix[i*MWidth+j]);
}
printf("\n"); //Новая строка
}
}

Вариант с массивом указателем:

#include <stdlib.h>

#define MWidth 5
#define MHeight 5

//Матрица
int Matrix[MWidth][MHeight];
int _tmain(int argc, _TCHAR* argv[])
{
int i;
int j;
for (i = 0;i<MHeight;i++)
{
for (j = 0;j<MWidth;j++)
{
Matrix[j][i] = (rand() / (RAND_MAX/120))-60;
}
}
for (i = 0;i<MHeight;i++)
{
for (j = 0;j<MWidth;j++)
{
printf("%i ",Matrix[j][i]);
}
printf("\n");
}
return 0;
}


Консультировал: Баранов Владимир aka C4tnt
Дата отправки: 23.09.2008, 19:45

Рейтинг ответа:

0

[подробно]

Сообщение
модераторам

Отправлять сообщения
модераторам могут
только участники портала.
ВОЙТИ НА ПОРТАЛ »
регистрация »

Ответ # 230057 от Sk0rp

Здравствуйте, Dragonlio!
Непосредственно данные указанными в задаче способами лежат в MatrixPlain и MatrixInd соответственно.
Для удобства и унификации работы, написана общая обертка Matrix

Приложение:


Консультировал: Sk0rp
Дата отправки: 23.09.2008, 20:09

Рейтинг ответа:

0

[подробно]

Сообщение
модераторам

Отправлять сообщения
модераторам могут
только участники портала.
ВОЙТИ НА ПОРТАЛ »
регистрация »

Ответ # 230085 от realbustard

Здравствуйте, Dragonlio!
Код требуемого вопроса в приложении!

Приложение:


Консультировал: realbustard
Дата отправки: 24.09.2008, 00:01

Рейтинг ответа:

0

[подробно]

Сообщение
модераторам

Отправлять сообщения
модераторам могут
только участники портала.
ВОЙТИ НА ПОРТАЛ »
регистрация »

Мини-форум консультации № 144793
ElGeminy

# 1

= общий = | 23.09.2008, 19:52

Вот вам еще....

#include "iostream"
#include "stdlib.h"
#include "time.h"
#include "assert.h"

void Create_OneForAll (int *& matrix, unsigned size)
{
	assert (size > 0);
	matrix = new int [size];

	for (unsigned i = 0; i < size; i++)
		matrix [i] = (rand () % 61) * ((rand () % 2) ? 1 : -1);
}

void Print_OneForAll (int * matrix, unsigned size)
{
	for (unsigned i = 1; i <= size; i++)
		wprintf (L"Element % 02u: % 03d\n", i, *matrix++);
}

void Delete_OneForAll (int * matrix)
{
	delete [] matrix;
}

int ** Create_TwoDimArray (unsigned size_h, unsigned size_v)
{
	assert (size_h > 0 && size_v > 0);
	int ** matrix = new int * [size_v];

	for (unsigned i = 0; i < size_v; i++)
	{
		matrix [i] = new int [size_h];

		for (unsigned j = 0; j < size_h; j++)
			matrix [i][j] = (rand () % 61) * ((rand () % 2) ? 1 : -1);
	}

	return matrix;
}

void Print_TwoDimArray (int ** matrix, unsigned size_h, unsigned size_v)
{
	for (unsigned i = 0; i < size_v; i++)
	{
		wprintf (L"Line's % 02u elements: ", i + 1);
		for (unsigned j = 0; j < size_h; j++)
			wprintf (L"% 03d\t", matrix [i][j]);
		wprintf (L"\n");
	}
}

void Delete_TwoDimArray (int ** matrix, unsigned size_v)
{
	for (unsigned i = 0; i < size_v; i++)
		delete [] matrix [i];
	delete [] matrix;
}

int main()
{
	srand (time (NULL));

	const unsigned size_h = 5;
	const unsigned size_v = 6;

	int * matrix1 = NULL;
	Create_OneForAll (matrix1, size_h * size_v);
	Print_OneForAll (matrix1, size_h * size_v);
	Delete_OneForAll (matrix1);
	wprintf (L"\n");
	int ** matrix2 = Create_TwoDimArray (size_h, size_v);
	Print_TwoDimArray (matrix2, size_h, size_v);
	Delete_TwoDimArray (matrix2, size_v);

	return 0;
}

ElGeminy

# 2

= общий = | 23.09.2008, 20:23

Это означает, что вы не потрудились указать свою среду разработки в вопросе так же, как и уточнить, к кому этот вопрос был. Пишем на С++ Билдере, или я ошибаюсь?
Замените и откорректируйте вывод с wprintf на std::cout либо подключите правильный для вашей среды заголовок

неизвестный

# 3

= общий = | 24.09.2008, 20:19

подскажите куда добавить system ("pause") чтобы просмотреть рез.-т

 

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

Яндекс Rambler's Top100

главная страница | поддержка | задать вопрос

Время генерирования страницы: 0.18203 сек.

© 2001-2020, Портал RFPRO.RU, Россия
Калашников О.А.  |  Гладенюк А.Г.
Версия системы: 7.80 от 15.01.2020
Версия JS: 1.35 | Версия CSS: 3.36