Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.64/25: Рейтинг темы: голосов - 25, средняя оценка - 4.64
144 / 28 / 4
Регистрация: 06.05.2019
Сообщений: 1,839
Записей в блоге: 4

Как вычислить количество столбцов и строк в массиве? Какую роль выполняет size_t?

15.05.2019, 22:38. Показов 5471. Ответов 31

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

Какую роль выполняет size_t на примере этого кода?
C++
1
2
3
4
5
6
7
8
9
10
11
template<typename T> void Fun(T a[],size_t m,size_t n )
{
      
    for ( size_t i = 0; i < m; i++ )
    {
        for ( size_t j = 0; j < n; j++ ) 
            {
        cout <<(a[i * n + j ])<<" ";}
    }
cout <<endl;
}
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
15.05.2019, 22:38
Ответы с готовыми решениями:

Какую роль выполняет переменная i ?
какую роль выполняет переменная i? procedure TForm1.DrawShape(TopLeft, BottomRight: TPoint; AMode: TPenMode); var i:integer; begin ...

Какую роль в коде выполняет амперсанд
Выделенное жирным, обьясните плз как это называется, что это такое. А то препод просек что работу не я делал и зачет не ставит пока не...

Какую роль выполняет findViewById в андроиде?
ребята! подскажите пожалуйста, какую роль выполняет findViewById в андроиде? пример VideoView videoView =...

31
144 / 28 / 4
Регистрация: 06.05.2019
Сообщений: 1,839
Записей в блоге: 4
18.05.2019, 20:15  [ТС]
Студворк — интернет-сервис помощи студентам
Я валенок с вами спорить не буду но как с ними работать не знаю, и надобности в них в своих разработках пока не вижу. Информации нормальной про них тоже не нашёл, нахожу справку какую нить и вместо того чтобы объяснить в простом виде начинают туда пихать чего не лень а я валенок из этой перегруженной ерунды должен понять простое элементарное, так вы и объясните просто элементарно. Ладно проехали может через лет 40 на пенсии и пойму как с ними работать..

Добавлено через 1 минуту
Про вектора слышал, выводить нет разницы как можно и как одномерный. А как по вашей схеме запихнуть 3хмерный и одномерный.
0
2784 / 1937 / 570
Регистрация: 05.06.2014
Сообщений: 5,602
18.05.2019, 20:21
Цитата Сообщение от Nexi99 Посмотреть сообщение
Информации нормальной про них тоже не нашёл, нахожу справку какую нить и вместо того чтобы объяснить в простом виде начинают туда пихать чего не лень
Вы так говорите, как будто в каком ни будь там Питоне классы принципиально отличаются.
Цитата Сообщение от Nexi99 Посмотреть сообщение
Про вектора слышал, выводить нет разницы как можно и как одномерный. А как по вашей схеме запихнуть 3хмерный и одномерный.
Для начала уточнить программируемый алгоритм которому без разницы число размерностей массива. Напоминаю, в стартпосте разговор был про столбцы и строки, то есть про двухмерный массив онли.
0
144 / 28 / 4
Регистрация: 06.05.2019
Сообщений: 1,839
Записей в блоге: 4
18.05.2019, 20:31  [ТС]
Про двумерный массив речь не шла т.к. речь идёт обо все массивах, речь шла про " столбцы и строки", но ответа на этот вопрос тоже не дали, я показал человеку что закидываю массив в функцию и оно возвращает размер памяти только одной ячейки, а как вычислить, количество столбцов и строк так и никто и не ответил. Я пробовал их считать вот таким способом
C++
1
/*if(a[i * n + j ]==NULL)return;else*/ if(a[i * n + j ]!=NULL){n++;}
оно считает но выходит за пределы массива и выводит мусор, посчитать массив "за счёт заполнения" не получается хотя бы один уровень.
0
2784 / 1937 / 570
Регистрация: 05.06.2014
Сообщений: 5,602
18.05.2019, 20:36
Цитата Сообщение от Nexi99 Посмотреть сообщение
а как вычислить, количество столбцов и строк так и никто и не ответил
"а как вычислить, количество столбцов и строк так и никто и не ответил"
"В ответ мне прислали код с циклом в условии которого проверяется количество столбцов и строк, но циклы это для меня тоже слишком сложно".

test.size() и test[y].size() в моем коде что по-вашему возвращало, курс доллара к японской иене? Специально ведь не стал пихать foreach цикл, чтобы видно было откуда размеры массива читать.
0
Комп_Оратор)
Эксперт по математике/физике
 Аватар для IGPIGP
9007 / 4708 / 630
Регистрация: 04.12.2011
Сообщений: 14,003
Записей в блоге: 16
18.05.2019, 21:09
Цитата Сообщение от Nexi99 Посмотреть сообщение
надобности в них в своих разработках пока не вижу
А в плюсах видите надобность?
Nexi99, статическая типизация она и в сях статическая типизация. Понятие о типе нужно иметь всё едино.
Массивы это понятие многозначное. Когда говорят о последовательном размещении и адресной арифметике, имеют ввиду интерфейс позволяющий получать постоянное время доступа и логарифмическое время поиска на сортированных данных. А вот когда говорят о типе, - имеют ввиду тип. И С-массив не является типом . Это программная сущность, которая по смыслу близка к шаблону. Да-да, встроенному в язык шаблону. То есть, массивы int a[2]; и int a[3]; это конкретные инстансы "шаблона" - массивы int, но разного размера. То есть, это разные типы. Когда вы это поймёте, то нужно будет ещё понять, что захват памяти под объект делается на основании типа. А тип, это информация времени компиляции. Об этом вам пытаются говорить "то вместе, то поврозь, а то по переменно" и на все лады.
То что, работа с итерацией по шаблону не реализуема в цикле, а возможна лишь рекурсивно (об этом тоже звучало), для вас еще токсично.
Говоря общими словами, вы, Nexi99, ставите задачу не столько непосильную, сколько не решаемую. Притом термины и постановка некорректны. Это бывает, в принципе. А вот позиция "не знаю и знать не желаю" и "нигде нет объяснения квантовой механики на пальцах, - так чтобы - опа и сразу понятно ", это похоже на обсуждении переписки Энгельса с Каутским. Можете не соглашаться, - дело ваше .
1
2784 / 1937 / 570
Регистрация: 05.06.2014
Сообщений: 5,602
18.05.2019, 21:43
Цитата Сообщение от IGPIGP Посмотреть сообщение
Nexi99, статическая типизация она и в сях статическая типизация. Понятие о типе нужно иметь всё едино.
Смотрю я на MQL4 из которого пришел топикстартер и вижу там что-то подозрительно похожее на откровенный C++-клон. И явное указание типов там есть, и классы есть. Итого, ТС вероятно и в своем родном языке плавает, но зачем-то ломанулся в соседний.
1
10 / 8 / 3
Регистрация: 10.04.2019
Сообщений: 43
18.05.2019, 21:57
Цитата Сообщение от Nexi99 Посмотреть сообщение
При передаче массива в функцию нужно каждый раз указывать кол-во столбцов и строк это неудобно т.к. предполагается передача 4ёх массивов в функцию сразу разных размеренностей а также размеров, каким образом можно определить количество столбцов и строк в массиве?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <vector>
#include <iostream>
 
using namespace std;
 
using Matrix = vector<vector<int>>;
 
void function(const Matrix& m) {
    cout << "rows: " << m.size() << endl;
    cout << "columns: " << m[0].size() << endl;
}
 
int main() {
    Matrix a = {
        {1, 2, 3},
        {4, 5, 6},
        {7, 8, 9},
        {0, 0, 0}
    };
    function(a);
    
    return 0;
}
Добавлено через 2 минуты
Цитата Сообщение от Nexi99 Посмотреть сообщение
Какую роль выполняет size_t на примере этого кода?
название типа для хранения целых неотрицательных чисел
0
Комп_Оратор)
Эксперт по математике/физике
 Аватар для IGPIGP
9007 / 4708 / 630
Регистрация: 04.12.2011
Сообщений: 14,003
Записей в блоге: 16
18.05.2019, 23:33
Цитата Сообщение от Renji Посмотреть сообщение
Смотрю я на MQL4 из которого пришел топикстартер и вижу там что-то подозрительно похожее на откровенный C++-клон. И явное указание типов там есть, и классы есть. Итого, ТС вероятно и в своем родном языке плавает, но зачем-то ломанулся в соседний.
Я тоже посмотрел вступительное описание и увидел "строгой типизации". О статической типизации не удалось найти что-либо. Но более важно, мне кажется, знакомство с концепцией RAII. MQL4 - язык со сборщиком мусора и для многих пользователей операции выделения памяти - "заклинания", а освобождение можно и не делать, потому как это, всего лишь, явное "пожелание" для GC. Вполне может быть, что это транслируемый (не компилируемый) код и в таком разе объяснять чем информация для кодогенерации отличается от информации времени выполнения, - пустое дело.
0
144 / 28 / 4
Регистрация: 06.05.2019
Сообщений: 1,839
Записей в блоге: 4
23.11.2019, 12:00  [ТС]
Если я передам массив в функцию, как же всё таки посчитать, количество ячеек и его размеренность, чтобы каждый раз не указывать эту информацию вручную?
0
Комп_Оратор)
Эксперт по математике/физике
 Аватар для IGPIGP
9007 / 4708 / 630
Регистрация: 04.12.2011
Сообщений: 14,003
Записей в блоге: 16
23.11.2019, 12:16
Цитата Сообщение от Nexi99 Посмотреть сообщение
Если я передам массив в функцию, как же всё таки посчитать, количество ячеек и его размеренность, чтобы каждый раз не указывать эту информацию вручную?
Размерность массива хорошо бы знать и не делать предметом выяснения во время выполнения. Это не только потому, что это трудно представить алгоритм универсальный относительно количества измерений. Глобальные операции, где весь массив рассматривается как однородный набор (одномерный) не рассматриваем, - задачи получить сумму или ср. арифм. и пр. по всему многомерному массиву, не различают внутренней структуры (столбцов/строк). Массив это тип, а тип - информация времени компиляции.
Кроме того, хорошо бы знать размер строк. Но с этим можно побороться используя контейнеры. Вектор подойдёт:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
//код честно стащил с другого сайта чтобы самому не писать)
void f(vector<vector<int> > &v)
{
    for (i = 0; i < v.size(); ++i) {
         for (j = 0; j < v[i].size(); ++j){
            ... v[i][j] ...
         }
    }
}
int main()
{
vector<vector<int> > v;
f(v);
}
Можно любую размерность, но её надо знать наперёд, чтобы функцию написать.
0
144 / 28 / 4
Регистрация: 06.05.2019
Сообщений: 1,839
Записей в блоге: 4
23.11.2019, 16:56  [ТС]
Цитата Сообщение от IGPIGP Посмотреть сообщение
Размерность массива хорошо бы знать и не делать предметом выяснения во время выполнения. Это не только потому, что это трудно представить алгоритм универсальный относительно количества измерений. Глобальные операции, где весь массив рассматривается как однородный набор (одномерный) не рассматриваем, - задачи получить сумму или ср. арифм. и пр. по всему многомерному массиву, не различают внутренней структуры (столбцов/строк). Массив это тип, а тип - информация времени компиляции.
Кроме того, хорошо бы знать размер строк. Но с этим можно побороться используя контейнеры. Вектор подойдёт:
У меня вектор не видит(пишет идентификатор вектор не определён) наверное нужна библиотека для подключения вектора.
Пример интересной но будет происходить передача функции через библиотеку а программа в которую будет импортироваться эта функция не работает с векторами. Смысл в том что я пишу универсальную функцию и каждый раз указывать всё вручную нет возможности это вызовет лишние проверки, и программа принимающая функцию умеет определять эти вещи с помощью функций ArrayRange(массив, измерение)данная функция определяет количество элементов по каждому измерению но как не знаю может считает, ArrayDeminsion(массив), определяет ранг, я хочу реализовать что-то подобное и здесь но не знаю как это сделать. Видимо это не возможно. А нельзя ли посчитать size_t, но это же тоже идиотизм каждый раз писать строки столбцы и т.д.? Да и к тому же массивы могут быть динамическими правильно. Ваш пример увеличивает размеренности, я видел на подобное способен с++? В общем ваш пример у меня не запустился.
0
Комп_Оратор)
Эксперт по математике/физике
 Аватар для IGPIGP
9007 / 4708 / 630
Регистрация: 04.12.2011
Сообщений: 14,003
Записей в блоге: 16
23.11.2019, 19:04
Цитата Сообщение от Nexi99 Посмотреть сообщение
В общем ваш пример у меня не запустился.
C++
1
#include<vector>
везде через полную квалификацию:
C++
1
void f(std::vector<std::vector<int> > &v)
И лучше шаблон написать, а для типов вроде string или char* перегрузить.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
23.11.2019, 19:04

Какую роль выполняет в этой программе переменная t?
Какую роль выполняет в этой программе переменная t? Что она делает? ЧТО ТАКОЕ T? Я всё понимаю в этой программе, но что t делает и что это...

Какую роль выполняет смещение в языке assembler?
Пример: mov eax,

Что такое dup и какую роль выполняет в приведенной строке кода
подскажите пожалуйста, что создает эта строка tabl db 48 dup (0),0,1,2,3,4,5,6,7,8,9,7 dup (0),0ah,0bh,0ch,0dh,0eh,0fh,26 dup...

В двумерном массиве A из m строк и n столбцов вычислить сумму и количество элементов выше главной диагонали
Не могу понять,как сделать сложение по строкам,вот что у меня есть: var a:array of integer; i,j:integer; sum:integer; begin...

В двумерном массиве A из m строк и n столбцов вычислить сумму и количество элементов выше главной диагонали
В двумерном массиве A из m строк и n столбцов вычислить сумму и количество элементов выше главной диагонали. Проверьте,пожалуйста ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
32
Ответ Создать тему
Новые блоги и статьи
Вангую, что это не пройдёт модерацию, и на неделе я запущу свой сервер.
Hrethgir 19.07.2026
Эта публикация сейчас в песочнице и ждёт приглашения. https:/ / habr. com/ ru/ sandbox/ 295048/ начало и оглавление - Как «пернатого» заставить осваивать новые горизонты опыта через масштабирование. . .
сукцессия 33. открытые вопросы от клауде
anaschu 19.07.2026
"Что накопилось за эту часть А — тринадцать правок, из которых шесть пришли из ваших вопросов и каждая оказалась реальной ошибкой, а не калибровкой: односторонний симбиоз, отсутствующий листопад,. . .
32 сукцессия
anaschu 19.07.2026
сукцессия 28‑мерное ядро стабилизировано Коллеги, фиксирую разбор инженерных правок и их изоморфную проекцию на экономику, меметику и половой отбор. Модель теперь не «подкручивает» сходимость —. . .
сукцессия 31: модель микоризы - это модель ещё нескольких явлений, социальных и экономических
anaschu 18.07.2026
Теория «Всего»: апдейт v1. 1. 2 — 28‑мерное ядро стабилизировано Коллеги, фиксирую разбор инженерных правок и их изоморфную проекцию на экономику, меметику и половой отбор. Модель теперь не. . .
сукцессия 30. Массив проверяющих друг друга моделей
anaschu 18.07.2026
Архитектура сети взаимопроверяющих моделей микоризной сукцессии (v2. 0) Развитие тензорного ОДУ-ядра и создание кросс-платформенного калибровочного полигона Уважаемые коллеги! В продолжение. . .
Грибы - это женщины, деревья - это мужчины. Анти инь янь для союза мужчины и женщины.
anaschu 18.07.2026
ГЛАВНЫЙ НАУЧНО-ФИЛОСОФСКИЙ ВЫВОД: Сексуально-Репродуктивный Капитализм против Государства Моногамии Коллеги, мы вышли на финишную прямую 20-мерного ОДУ-моделирования вековой сукцессии (ветка. . .
Текстовый слайдер с нумерацией страниц и кроссбраузерность.
russiannick 18.07.2026
Один мой друг написал текстовый слайдер с нумерацией страниц. Сегодня я расскажу как он умудрился подружить его с кроссбраузерностью. Очевидно сложно угодить с шириной каждому браузеру. Один крадет. . .
Грибы - это мемы, дерево - это человек. Применение микоризной модели к теории меметики Докинза.
anaschu 18.07.2026
Меметический изоморфизм теории «всего»: Грибная сукцессия как модель эволюции идей Докинза Базовый код системы ОДУ микоризной сукцессии описывает не просто биологию, а универсальную. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru