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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 16.01.2017, 20:46   #1
RaisaR
 
Регистрация: 19.09.2016
Сообщений: 3
По умолчанию Двумерный динамический массив. В чем ошибка?

Подскажите, пожалуйста, почему не удается задать размер матрицы с клавиатуры, в чем ошибка? Программа запрашивает данные у пользователя, когда их вводишь, записываются в строку ниже, а не в переменные height и width.

Код:
#include «stdafx.h»

#include <stdio.h>
#include <conio.h>
#include <time.h>
#include <Windows.h>

#define _CRTDBG_MAP_ALLOC
#include <crtdbg.h>
int main()
{
_CrtSetDbgFlag(_CRTDBG_ALLOC_MEM_DF | _CRTDBG_LEAK_CHECK_DF);

SetConsoleCP(1251);
SetConsoleOutputCP(1251);

srand(time(NULL));

int *a = NULL;
int height = 0;
int width = 0;

printf(«Демонстрация работы с массивами\n»);
printf(«Введите размерность массива (ширина, высота): \n»);
scanf_s(«%d %d», &width, &height);

a = new int[width*height];

for (int i = 0; i < height; i = i + 1)
{
for (int j = 0; j < width; j = j + 1)
{
a[i*width + j] = rand() % 10;
}
}

for (int i = 0; i < height; i = i + 1)
{
for (int j = 0; j < width; j = j + 1)
{
printf(«%d «, a[i*width + j]);
}
printf(«\n»);
}

getchar();
getchar();
return 0;
}

Последний раз редактировалось Аватар; 17.01.2017 в 11:33.
RaisaR вне форума Ответить с цитированием
Старый 17.01.2017, 11:32   #2
Sweta
Форумчанин
 
Регистрация: 22.11.2007
Сообщений: 664
По умолчанию

Почему Вы решили, что они не вводятся? Если Вы видете на экране в следующей строке от
Код:
printf(«Введите размерность массива (ширина, высота): \n»);
, то уберите \n и получите ожидание ввода и ввод в текущей строке.
Неприятности приходят и уходят, а жизнь продолжается!
Sweta вне форума Ответить с цитированием
Старый 18.01.2017, 02:19   #3
RaisaR
 
Регистрация: 19.09.2016
Сообщений: 3
По умолчанию

Они вводятся, но записываются как обычные значения, а не как размерность матрицы.
RaisaR вне форума Ответить с цитированием
Старый 18.01.2017, 02:40   #4
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,285
По умолчанию

Ну сделайте после сканфа еще принтф и выведите текущие значения width, height.
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA вне форума Ответить с цитированием
Старый 19.01.2017, 21:10   #5
Sweta
Форумчанин
 
Регистрация: 22.11.2007
Сообщений: 664
По умолчанию

Что это значит ?
Код:
a[i*width + j] = rand() % 10;
Код:
printf(«%d «, a[i*width + j]);
Вы наверное хотели присвоить значение элементу массива, тогда д.б.
Код:
a[i][j] = rand() % 10;
и вывод
Код:
printf(«%d «, a[i][j]);
Неприятности приходят и уходят, а жизнь продолжается!
Sweta вне форума Ответить с цитированием
Старый 19.01.2017, 21:21   #6
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,285
По умолчанию

Sweta, тут двухмерный массив хранится как одномерный, а индекс вычисляется через формулу i * width + j.
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Двумерный динамический массив C++ Joesidorov Помощь студентам 3 24.12.2015 17:22
Двумерный динамический массив C++ Joesidorov Общие вопросы C/C++ 1 09.12.2015 21:50
динамический двумерный массив dart_nick Помощь студентам 0 11.12.2011 13:44
Двумерный динамический массив Inna_L Общие вопросы C/C++ 2 01.10.2010 23:27
двумерный массив..преобразование и поиск минимума..в чем ошибка? XanderXage Помощь студентам 4 02.12.2009 12:18