Вывести двумерный массив в виде матрицы
Вывести все элементы массива в виде матрицы и вывести номер строки массива, в которой каждый элемент равен X.
Дан двумерный массив N=9, M=10; Вывести все элементы массива в виде матрицы и вывести номер строки.
Вывести двумерный массив на экран
Подскажите пожалуйста, что я не так в коде, не выводит двумерный массив. код: #include.

Двумерный массив: вывести имя звездочками
написать программу используя массивы что бы программа вывела имя Руслан звездочками.примерно.
737 / 542 / 416
Регистрация: 17.09.2015
Сообщений: 1,601
1 2 3 4 5
for (i=0; in; i++, putchar('\n')){ for (j=0; jm; j++){ printf (" %d", a[i][j]); } }
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
Помогаю со студенческими работами здесь
Вывести на экран массив в прямоугольном виде
Помогите с заданием. Задать двумерный массив 4*15 и заполнить его целыми числами из диапазона .
Ввести и вывести двумерный массив с помощью только указателей
Задание такое: Нужно ввести и вывести двухмерный с помощю только указателей (в коде не должно быть.

Заменить отрицательные элементы матрицы нулями и вывести на печать в общепринятом виде
Помогите написать программу, я в массивах не разбираюсь совсем 🙁 Дана матрица D(K;K), K≤10.
Заполнить массив следующими значениями и вывести в виде таблицы
1)Заполнить массив следующими значениями и вывести в виде таблицы: 1 2 3 . 9 10 11 12 13 . 19.
Двумерные массивы
Объявление int A[n] создает в памяти одномерный массив: набор пронумерованных элементов, идущих в памяти последовательно. К каждому элементу массива можно обратиться, указав один индекс — номер этого элемента. Но можно создать и двумерный массив следующим образом: int A[n][m] . Данное объявление создает массив из n объектов, каждый из которых в свою очередь является массивом типа int [m] . Тогда A[i] , где i принимает значения от 0 до n-1 будет в свою очередь одним из n созданных обычных массивов, и обратиться к элементу с номером j в этом массиве можно через A[i][j] .
Подобные объекты (массивы массивов) также называют двумерными массивами. Двумерные массивы можно представлять в виде квадратной таблицы, в которой первый индекс элемента означает номер строки, а второй индекс – номер столбца. Например, массив A[3][4] будет состоять из 12 элементов и его можно записать в виде
A[0][0] A[0][1] A[0][2] A[0][3] A[1][0] A[1][1] A[1][2] A[1][3] A[2][0] A[2][1] A[2][2] A[2][3]
Для считывания, вывода на экран и обработки двумерных массивов необходимо использовать вложенные циклы. Первый цикл – по первому индексу (то есть по всем строкам), второй цикл – по второму индексу, то есть по всем элементам в строках (столбцам). Например, вывести на экран двумерный массив в виде таблицы, разделяя элементы в строке одним пробелом можно следующим образом:
int A[n][m]; for (int i = 0; i < n; ++i) < // Выводим на экран строку i for (int j = 0; j < m; ++j) < cout cout
А считать двумерный массив с клавиатуры можно при помощи еще более простого алгоритма (массив вводится по строкам, то есть в порядке, соответствующему первому примеру):
for (i = 0; i < n; ++i) < for (j = 0; j < m; ++j) < cin >> A[i][j]; > >
Обработка двумерного массива
Обработка двумерных массивов производится аналогичным образом. Например, если мы хотим записать в массив таблицу умножения, то есть присвоить элементу A[i][j] значение i * j , это можно сделать следующим образом при помощи вложенных циклов:
for (i = 0; i < n; ++i) < for (j = 0; j < m; ++j) < A[i][j] = i * j; >>
Рассмотрим более сложную задачу и несколько способов ее решения. Пусть дан квадратный двумерный массив int A[n][n] . Необходимо элементам, находящимся на главной диагонали проходящей из левого верхнего угла в правый нижний (то есть тем элементам A[i][j] , для которых i == j ) присвоить значение 1 , элементам, находящимся выше главной диагонали – значение 0, элементам, нахощящимся ниже главной диагонали – значение 2. То есть получить такой массив (пример для n == 4 ):
1 0 0 0 2 1 0 0 2 2 1 0 2 2 2 1
Рассмотрим несколько способов решения этой задачи. Элементы, которые лежат выше главной диагонали – это элементы A[i][j] , для которых i < j , а для элементов ниже главной диагонали i >j . Таким образом, мы можем сравнивать значения i и j и по ним определять значение A[i][j] . Получаем следующий алгоритм:
for (i = 0; i < n; ++i) < for (j = 0; j < n; ++j) < if (i < j) < A[i][j] = 0; >else if (i > j) < A[i][j] = 2; >else < A[i][j] = 1; >> >
Данный алгоритм плох, поскольку выполняет одну или две инструкции if для обработки каждого элемента. Если мы усложним алгоритм, то мы сможем обойтись вообще без условных инструкций.
Сначала заполним главную диагональ, для чего нам понадобится один цикл:
for (i = 0; i
Затем заполним значением 0 все элементы выше главной диагонали, для чего нам понадобится в каждой из строк с номером i присвоить значение элементам A[i][j] для j = i+1 , . n-1 . Здесь нам понадобятся вложенные циклы:
for (i = 0; i < n; ++i) < for (j = i + 1; j < n; ++j) < A[i][j] = 0; >>
Аналогично присваиваем значение 2 элементам A[i][j] для j = 0 , . i-1 :
for (i = 0; i < n; ++i) < for (j = 0; j < i; ++j) < A[i][j] = 2; >>
Можно также внешние циклы объединить в один и получить еще одно, более компактное решение:
for (i = 0; i < n; ++i) < // Заполняем строку с номером i for (j = 0; j < i; ++j) < A[i][j] = 2; // Сначала пишем 2 ниже диагонали >A[i][j] = 1; // После завершения предыдущего цикла i==j, пишем 1 for (++j; j < n; ++j) // Цикл начинаем с увеличения j на 1 < A[i][j] = 0; // Записываем 0 выше диагонали >>
Многомерные массивы
Можно объявлять не только двумерные массивы, но и массивы с большим количеством измерений. Например, объявление int A[n][m][l] создает трехмерный массив из n*m*l элементов. Для обращения к каждому элементу такого массива необходимо указать три индекса: A[i][j][k] , при этом 0
Передача двумерных массивов в функцию
В функцию можно передавать двумерный массив в качестве параметра, если размер этого массива фиксирован и объявлен в описании функции. То есть если заранее известен размер массива, то можно определить функцию, получающую в качестве параметра двумерный массив такого размера:
void f (int A[10][10]) < . >int main()
Проблема заключается в том, что в этом случае нельзя использовать массивы произвольного размера.
Чтобы использовать массивы произвольного размера, нам на помощь прийдут указатели. Для начала разберемся, как представлять двумерный массив в виде указателей.
Одномерный массив int A[n] это почти то же самое, что указатель на переменную типа int : int * A .
Тогда двумерный массив - это массив, каждый из элементов которого является одномерным массивом, то есть указателем на какой-то адрес целого числа в памяти. То есть двумерный массив - это массив элементов типа int * или же это указатель на переменную типа int * , то есть это переменная типа int ** .
Итак, двойной указатель можно объявить так:
int ** A;
Теперь выделим память для массива A . Если мы хотим, чтобы в массиве A было n элементов, каждый из которых является указателем на тип int , то сделаем это при помощи операции new :
A = new int * [n];
Теперь A указывает на область памяти, содержащей n элементов, каждый из которых имеет тип int * и указывает на некоторую область памяти, пока еще не выделенную. Выделим эту память - сделаем все A[i] указателями на область памяти из m элементов типа int :
for (int i = 0; i
Функцию, получающую в качестве параметра двумерный массив, можно объявлять так:
void f (int ** A, int n, int m)
Как и в случае с одномерным массивом, передаваемым как указатель, нам нужно одновременно передавать размеры массива - количество строк n и количество столбцов m .
При таком способе объявления массива и выделения памяти можно сделать так, чтобы в разных строчках массива было различное число элементов.
Форматирование чисел при выводе
Допустим, мы заполним массив таблицей умножения: A[i][j]=i*j как в примере в начале раздела. Если мы теперь попробуем вывести этот массив на экран, разделяя элементы в строке одним пробелом, то из-за того, что числа имеют различную длину столбцы таблицы окажутся неровными:
0 0 0 0 0 0 0 0 0 0 0 1 2 3 4 5 6 7 8 9 0 2 4 6 8 10 12 14 16 18 0 3 6 9 12 15 18 21 24 27
Для того, чтобы получить ровные столбцы необходимо, выводить числа так, чтобы одно выводимое число имело ширину, например, ровно в 3 символа, а “лишние” позиции были бы заполнены пробелами. Тогда получится следующая таблица:
0 0 0 0 0 0 0 0 0 0 0 1 2 3 4 5 6 7 8 9 0 2 4 6 8 10 12 14 16 18 0 3 6 9 12 15 18 21 24 27
Для того, чтобы выводимое число или строка имело ровно заданную ширину, необходимо перед выводом его на экран для потока cout вызвать метод width с параметром 3 . Данный метод устанавливает ширину поля для выводимого значения. Получим следующую программу для вывода:
for(int i = 0; i < n; ++i) < for(int j = 0; j < m; ++j) < cout.width(3); cout cout
Заметим, что мы теперь не выводим пробел после каждого числа, поскольку мы добавили этот пробел к ширине выводимого поля. Функция width действует однократно, только на следующее выводимый в поток значение, поэтому ее нужно вызывать перед каждым выводом числа на экран.
Внимание! Если выводимое число или строка имеет большую длину, чем это было установлено функцией width , то это число или строка будут выведены полностью, а не будет обрезано до указанного значения. То есть предпочтительней вывести результат некрасиво, нежели неверно.
Упражнения
Общие требования к оформлению программ.
Считывание данных осуществляется функцией void Read (int **& A, int & n, int & m) . Эта функция считывает размер массива в переменные n и m , передаваемые по ссылке, выделяет память под хранение массива.
Решение задачи осуществляется функцией, получающей в качестве параметра массив (типа int ** ), его размеры, дополнительные параметры при необходимости.
Вывод массива на экран осуществляется отдельной функцией Print , получающей в качестве параметров массив и его размеры.
Типичный вид программы на примере задачи A:
void Read (int **& A, int & n) < . >void Fill (int ** A, int n) < . >void Print (int ** A, int n) < . >int main()
A: Максимум
Найдите индексы первого вхождения максимального элемента. Выведите два числа: номер строки и номер столбца, в которых стоит наибольший элемент в двумерном массиве. Если таких элементов несколько, то выводится тот, у которого меньше номер строки, а если номера строк равны то тот, у которого меньше номер столбца.
3 4
0 3 2 4
2 3 5 5
5 1 2 3
Вывод двумерного массива си
Массив у вас располагается одним куском, так что обращение к array[i][j] осуществляется просто как к j -му элементу после i строк, т.е. к элементу номер i*(число столбцов)+j , т.е. в вашем варианте - array[i*n+j], где n` - число элементов в строке.
Заметим, что у вас строк - m , так что вы фактически заполняете массив по столбцам, и точно так же пытаетесь его выводить.
Вот так будет лучше:
int rows, cols; printf("Rows pls:"); scanf_s("%d", &rows); printf("columns pls:"); scanf_s("%d", &cols); arrayl = (int*)malloc(rows * cols * sizeof(int)); for (i = 0; i < rows; i++) < for (j = 0; j < cols; j++) < printf("arrayl (%d)(%d) = ", i, j); scanf_s("%d", &arrayl[i*cols+j]); >> for (i = 0; i < rows; i++) < for (j = 0; j < cols; j++) < printf("%5d ",arrayl[i*cols+j]); >printf("\n"); >
Обратите внимание, что имена переменных - rows и cols (columns) не дают возможности спутать, что есть число строк (кстати, строка в таблице по-английски - row, но не string. ), что - столбцов. Я бы даже i и j поменял на r и c . Выбор имен переменных - куда важнее, чем кажется начинающим.
Вывод двумерного массива
Функции двумерного массива. Транспонировать матрицу через ввод вывод функции двумерного массива.
Транспонировать матрицу через ввод вывод функции двумерного массива.Сначала вывести ее,а потом.
Вывод двумерного массива
Есть у меня код: const int x = 5; int i, j, map, map_add, bot = 8, o; bot = map; for (i =.
Вывод двумерного массива
Решил попрактиковаться в работе с вложенными циклами, напоролся на проблему, которую понятия не.
Вывод двумерного массива
Нужно сделать вывод как на картинке. я пробовал но у меня возникли некоторые сложности .
1552 / 918 / 193
Регистрация: 26.03.2010
Сообщений: 3,105
1 2 3 4 5 6
const int size=7; for (int i=0; isize; i++) { for (int j=0; jsize; j++) std::cout <" "[ i][j]; std::cout:: endl; }
Регистрация: 26.05.2010
Сообщений: 3
Спасибо. А куда этот фрагмент вставить? что-то не понял(((
1552 / 918 / 193
Регистрация: 26.03.2010
Сообщений: 3,105
Когда хотите вывести массив, туда и вставляйте.
Добавлено через 2 минуты
Вот ваш первоначальный фрагмент:
1 2 3 4 5 6 7 8 9
for(i=0; i7; i++) { for(j=0; j7; j++) { mas[i][j]=rand()%100; printf("%4d", mas[i][j]); } } printf("\n");
А правильно так:
1 2 3 4 5 6 7 8 9
for(i=0; i7; i++) { for(j=0; j7; j++) { mas[i][j]=rand()%100; printf("%4d", mas[i][j]); } printf("\n"); }
Регистрация: 26.05.2010
Сообщений: 3
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56
#include #include #include #include void main() { int i, s, t, j, mas[7][7], B[49], C[49]; s=0; t=0; randomize(); for(i=0; i7; i++) { for(j=0; j7; j++) { mas[i][j]=rand()%100; } } const int size=7; for (int i=0; isize; i++) { for (int j=0; jsize; j++) std::cout <" " [ i][j]; std::cout :: endl; } for(i=0; i7; i++) { for(j=0; j7; j++) { if(mas[i][j]%2==0&&mas[i][j]!=0) { B[t]=mas[i][j]; t++; } else { C[s]=mas[i][j]; s++; } } } printf("vektor B:"); for(i=0; it; i++) { printf("%4d", B[i]); } printf("\n"); printf("vektor C:"); for(i=0; is; i++) { printf("%4d", C[i]); } printf("\n"); }
Говорит ошибки:
20: Multiple declaration for 'i';
23: Type qualifier 'std' must be a struct or class name
24: Type qualifier 'std' must be a struct or class name
Добавлено через 4 минуты
Спасибо большое! Все исправил, теперь правильно выводится)))
Регистрация: 22.01.2015
Сообщений: 3
На С будет так (можно вводить размеры матрицы вручную - думаю если надо будет, то ты сам изменишь):
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
#include #include #include using namespace std; void main() { int i, j; int a[7][7]; // размер массива srand((int)time(0)); // генератор случайных цифр for (i = 0; i 7; ++i) for (j = 0; j 7; ++j) { a[i][j] = rand() % 10; // считаем случайную цифру в пределах от 0 до 10 } for (i = 0; i 7; ++i) { for (j = 0; j 7; ++j) { cout [i][j] <' '; // вывод числа через пробел } cout <"\n"; // с новой строчки чтобы было красивее } }
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
Помогаю со студенческими работами здесь
Вывод двумерного массива
int myArr = < 0 >; // инициализация двумерного размером 5x5 нулями cout << myArr << endl;.
Вывод двумерного массива
Здравствуйте. Подскажите пожалуйста почему следующий код - функция для вывода элемента массива - не.
Создание и вывод двумерного массива
Здравствуйте, помогите пожалуйста написать программку на С++. Необходимо ввести с клавиатуры.
Создание и вывод двумерного массива
Створити и вивести двовімірній масив для зберігання кількості очок, Зроблений за 4 квартали.