Как проверить пустой ли массив c
Перейти к содержимому

Как проверить пустой ли массив c

  • автор:

Как проверить, пустой ли массив?

Author24 — интернет-сервис помощи студентам

Проверить пустой массив или нет
Мне надо проверить есть хоть что-то в массиве $array или нет. Как это можно сделать?

как проверить пустой ли файл.
пустой, т.е. не содержит букв и цифр, но может содержать пробелы. файлы doc, txt. может есть.

Как проверить пустой ли входной файл?
Если входной файл пустой, то программа должна сообщить об этом. Что нужно подставить в if для.

Как проверить пустой отчет или нет?
Идея такая на главной форме есть флажки которые должны указывать есть ли данные в отчете или нет.

Проверка пуст ли массив?

Author24 — интернет-сервис помощи студентам

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

Глобальный вектор. Почему на выходе этот массив пуст?
юзаю либу вектор. почему на выходе этот массив пуст? std::vector<int> qw;//global int main()

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

Эксперт С++

6609 / 4028 / 401
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
перед тем как освобождать память по указателю с помощью delete, проверять его на 0 нет необходимости
Регистрация: 13.10.2012
Сообщений: 454

ЦитатаСообщение от Jupiter Посмотреть сообщение

перед тем как освобождать память по указателю с помощью delete, проверять его на 0 нет необходимости

а если в наглую удалять то ошибка лезет.

Добавлено через 24 секунды

ЦитатаСообщение от Jupiter Посмотреть сообщение

перед тем как освобождать память по указателю с помощью delete, проверять его на 0 нет необходимости
И вопроса это не снимает.

Эксперт С++

6609 / 4028 / 401
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1

tramp_1-3, держите свой указатель в двух состояних:
1) указатель инициализирован и при этом занулен
2) указатель инициализирован и указывает на выделенную через new память

ЦитатаСообщение от tramp_1-3 Посмотреть сообщение

а если в наглую удалять то ошибка лезет.

телепатией не владею

Добавлено через 1 минуту

ЦитатаСообщение от tramp_1-3 Посмотреть сообщение

Проверка пуст ли массив?
кстати, мы ещё не видели что за массив. как объявлен этот arr ?
1256 / 1005 / 74
Регистрация: 24.07.2012
Сообщений: 2,002

ЦитатаСообщение от tramp_1-3 Посмотреть сообщение

а если в наглую удалять то ошибка лезет.
Следовательно, ошибка где-то в другом месте.

Эксперт С++

4773 / 3267 / 497
Регистрация: 19.02.2013
Сообщений: 9,046

tramp_1-3, после удаления присвоить указателю nullptr и больше не беспокоиться о возможности двойного удаления.

Регистрация: 13.10.2012
Сообщений: 454

ЦитатаСообщение от Jupiter Посмотреть сообщение

кстати, мы ещё не видели что за массив. как объявлен этот arr ?

кусок класса.
typedef int numtype;
class DNumArray < //Dynamic Numeric Array
private:
unsigned int length;
numtype * arr;
>;

ЦитатаСообщение от Jupiter Посмотреть сообщение

телепатией не владею

Необработанное исключение по адресу 0x51A14F98 (msvcr110d.dll) в algo_arrays.exe: 0xC0000005: нарушение прав доступа при чтении по адресу 0xCCCCCCC0.

и как занулять указатели?

Эксперт С++

4773 / 3267 / 497
Регистрация: 19.02.2013
Сообщений: 9,046

ЦитатаСообщение от tramp_1-3 Посмотреть сообщение

и как занулять указатели?

1 2 3
ptr = 0; ptr = NULL; ptr = nullptr;

Регистрация: 13.10.2012
Сообщений: 454

ЦитатаСообщение от Tulosba Посмотреть сообщение

Выбирайте:
Код C++
1
2
3
ptr = 0;
ptr = NULL;
ptr = nullptr;

Теперь можно обходиться без условия, благодаря одной строчке в коде =) Так почему же всё-же проверка так странно работает?

Эксперт С++

4773 / 3267 / 497
Регистрация: 19.02.2013
Сообщений: 9,046

ЦитатаСообщение от tramp_1-3 Посмотреть сообщение

Так почему же всё-же проверка так странно работает?
Как? Первое Ваше сообщение вообще не понял.
Регистрация: 13.10.2012
Сообщений: 454

ЦитатаСообщение от Tulosba Посмотреть сообщение

Как? Первое Ваше сообщение вообще не понял.

if (any.arr == NULL) delete [] any.arr;

при ТАКОМ коде он НЕ очищает пустой массив, то есть подтверждает, что тот ПУСТ, а не наоборот. Стоит добавить ! перед условием и он уже пытается очистить пустой указатель.

Эксперт С++

4773 / 3267 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
tramp_1-3, что Вы понимаете под фразой «пустой массив»?

Эксперт С++

6609 / 4028 / 401
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
пустой если length == 0

Эксперт С++

4773 / 3267 / 497
Регистрация: 19.02.2013
Сообщений: 9,046

ЦитатаСообщение от Jupiter Посмотреть сообщение

пустой если length == 0
не понятно причем тут проверка тогда any.arr == NULL
Регистрация: 13.10.2012
Сообщений: 454

ЦитатаСообщение от Tulosba Посмотреть сообщение

tramp_1-3, что Вы понимаете под фразой «пустой массив»?

До этого писал в MVSE 2012. Проверил логически верный код в wxDev-C++ — всё сработало=) я думаю не инициализированный.

Добавлено через 1 минуту

ЦитатаСообщение от Tulosba Посмотреть сообщение

не понятно причем тут проверка тогда any.arr == NULL

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

Эксперт С++

4773 / 3267 / 497
Регистрация: 19.02.2013
Сообщений: 9,046

ЦитатаСообщение от tramp_1-3 Посмотреть сообщение

я думаю не инициализированный.
и под который не выделено память? так, если вы при определении не напишите, что-то типа:

int* ptr = 0;

то ptr может указывать куда угодно. И понятно, что никакие проверки делать бессмысленно. На NULL, не на NULL, на что угодно.

Добавлено через 58 секунд
Короче говоря, приведите компилируемый код, который вызывает у Вас сомнения. А то много воды, а смысла мало.

Регистрация: 13.10.2012
Сообщений: 454

ЦитатаСообщение от Tulosba Посмотреть сообщение

то ptr может указывать куда угодно. И понятно, что никакие проверки делать бессмысленно. На NULL, не на NULL, на что угодно.

вот это я и хотел услышать, благодарю Вас!
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
Помогаю со студенческими работами здесь

Массив: если массив пуст, ничего не выводить
Есть массив ошибок $err, в котором собираются все ошибки которые допустил пользователь, при вводе.

Как проверить пуст ли массив?
это продолжение темы. интересует грамотность записи If Массив(0) = "" Then ‘ вот эта проверка мне.

Как грамотно проверить: пуст ли массив?
Создал массив, инициализировал его. Нужно его заполнить сведениями из другого массива, который.

Или воспользуйтесь поиском по форуму:

click fraud protection

В языке программирования C++ массив представляет собой структуру данных, состоящую из связанных элементов данных, которые сохраняются по соответствующим адресам памяти. Это будет получено случайным образом с помощью индексов массива. Они будут использоваться для хранения набора элементов с различными типами данных, включая целочисленные, плавающие, символьные и т. д.

Массив C++ может содержать зависимые типы данных, такие как векторы, ссылки и т. д. «Массив» в стандартной библиотеке шаблонов C++ — это в основном класс, но они более эффективны, проще в обращении и проще в настройке. Модуль «массив» предоставляет несколько встроенных функций, поэтому интеграция операций происходит быстрее при использовании его вместо массивов C-Style.

Чтобы использовать «массив» и его функции, программы должны интегрировать заголовочный файл «массива». В этой статье мы рассмотрим служебный метод empty() класса массива, который будет применяться для определения того, является ли требуемый массив пустым.

Используйте метод array:: empty(), чтобы проверить, пуст ли массив:

array:: empty() — это встроенный метод в стандартной библиотеке шаблонов C++, который анализирует, является ли определенный массив пустым. Этот метод не изменяет элементы массива. Вместо этого он проверяет, является ли массив пустым или нет, то есть, возможно, размер массива равен нулю. Если размер массива становится равным нулю, возвращается 1, что означает истину. В противном случае возвращается 0, что означает ложь. В этом случае мы применяем условие if-else вместе с функцией empty().

#включают
#включают
с использованием пространство имен стандарт ;

Здесь мы собираемся интегрировать заголовочные файлы а также . заголовочный файл, который включает объявления объектов, такие как cout, cin и многие другие. Заголовочный файл имеет дело с массивами фиксированной длины в программе. Наряду с этим мы использовали стандартное пространство имен.

Теперь мы вызываем функцию main(). Здесь мы объявляем четыре разных массива. Мы указываем размер этих массивов, а затем устанавливаем элементы массивов. Первый массив с именем «массив1» содержит три элемента. Второй массив с именем «массив2» не содержит элементов. Третий массив с именем «массив3» также пуст. Последний массив содержит 5 случайных значений. Чтобы распечатать эти четыре массива, мы использовали оператор «cout». Для этих массивов отдельно вызывается функция empty(). Мы проверяем и печатаем сообщение сейчас.

Если условие выполнено, оператор cout выводит, что определенный массив пуст. В противном случае оператор cout выводит, что массив не пуст. Команда endl используется для перемещения курсора на следующую строку кода. В конце мы ввели «return 0», чтобы завершить программу.

Используйте функцию empty(), чтобы проверить, пуст ли массив:

Массивы в C++ намного эффективнее, прозрачнее и надежнее, чем массивы в стиле C в целом. Метод empty() используется для определения того, пуст ли массив. Эта функция не принимает аргументов. Если массив пуст, функция предоставит True; иначе это вернет False. Это гарантирует, что исключения не будут генерироваться.

Всякий раз, когда предоставляется аргумент, отображается ошибка. В этой программе, если размер массива равен 0, он будет считаться пустым массивом, поэтому функция возвращает «Истина» в качестве вывода.

#включают
#включают
с использованием пространство имен стандарт ;

инт главный ( )
<
массив обр ;
если ( обр. пустой ( ) ) <
cout >
еще <
cout >
возвращаться 0 ;
>

На старте программы две библиотеки а также включены. Перед вызовом функции main() используется стандартное пространство имен. В теле функции main() мы сначала объявляем массив, имеющий целочисленный тип данных. Мы определяем условие здесь. Нулевые размеры массива «arr» показывают, что в этом массиве нет элементов. Мы применяем условие if-else и также вызывается метод empty().

Если требуемый массив пуст, оператор «cout» печатает «True», иначе оператор «cout» печатает «False». Чтобы завершить код, мы интегрировали команду «rerun 0».

Используйте условие if-else:

Мы собираемся использовать условие if-else, чтобы проверить, является ли указанный массив пустым или нет. Здесь размер массива «arr» равен 10, а оператор «cout» вернет «arr не пуст».

#включают
#включают

с использованием пространство имен стандарт ;

инт главный ( пустота )
<
множество < инт , 10 >обр ;

Во-первых, два заголовочных файла а также были введены. Мы также внедрили стандартное пространство имен. Была вызвана функция main(). Сначала массив будет объявлен с целочисленным типом данных. Здесь мы указываем размер. В этом массиве 9 элементов. Затем применяется условие if-else.

Кроме того, мы используем функцию empty(). Если определенный массив пуст, команда «cout» отображает «True» или «False». Мы только что использовали команду «endl», чтобы переместить курсор на следующую строку в программе.

Вывод:

В этой статье мы подробно рассмотрели, как использовать функцию empty() для проверки того, является ли массив пустым. Для демонстрации этого были использованы три иллюстрации. Примеры хорошо объяснены и выполнены так хорошо. Переберите элементы и сопоставьте их с нулевым символом (/0), чтобы определить, является ли определенный массив пустым или нет. Мы можем использовать array[]=<> для определения пустого массива. Затем укажите размер массива, чтобы определить, является ли массив пустым. Если массив определен, но еще не заполнен, необходимо указать индексацию или количество элементов, которые он может содержать.

Как проверить массив на пустоту?

Оказалось это не работает.
С ARRAY[0]= работает. Но стоит пявиться ARRAY[1]= и всё.

Как же проверить за один раз, пустой ли массив?
Столько скриптов переписано, а этого не знаю, вернее, был уверен, что знаю, а оказалось вон оно как.
Должно же быть какое-то элементарное решение.

teod0r ★★★★★
02.09.21 20:51:00 MSK

[ $ -eq 0 ] 

$ — возвращает длину массива

anonymous
( 02.09.21 21:16:24 MSK )

еще $ преобразует массив в строку, тогда возможно -z сработает.

anonymous
( 02.09.21 21:18:34 MSK )
Ответ на: комментарий от anonymous 02.09.21 21:16:24 MSK

Мне не количество элементов узнать нужно, а проверить, что все элементы пустые, т.е. что они ARRAY[0]= ARRAY[1]= ARRAY[2]= . , а не ARRAY[0]=iuy4tv8q ARRAY[1]=’ ‘ ARRAY[2]=1

teod0r ★★★★★
( 02.09.21 21:20:29 MSK ) автор топика
Ответ на: комментарий от anonymous 02.09.21 21:18:34 MSK

тоже не работает

teod0r ★★★★★
( 02.09.21 21:20:54 MSK ) автор топика
Ответ на: комментарий от teod0r 02.09.21 21:20:29 MSK

IFS='' -z "$" 

Только IFS нужно сохранять/восстанавливать или sub-shell.

А вобще, пустой массив и массив из пустых элементов это разные вещи.

mky ★★★★★
( 02.09.21 21:31:31 MSK )
Ответ на: комментарий от teod0r 02.09.21 21:20:54 MSK

Я поигрался, вроде работает:

IFS=»; ARRAY[0]= ARRAY[1]=aaa ARRAY[2]=»; echo «$»; echo; [ -z «$» ]; echo $?

anonymous
( 02.09.21 21:44:00 MSK )
Ответ на: комментарий от mky 02.09.21 21:31:31 MSK

работает, но какое-то не очевидное решение

teod0r ★★★★★
( 02.09.21 21:53:44 MSK ) автор топика
Ответ на: комментарий от teod0r 02.09.21 21:53:44 MSK

Это чисто теоретический вопрос или практический?

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

firkax ★★★★★
( 02.09.21 22:15:37 MSK )

Столько скриптов переписано, а этого не знаю, вернее, был уверен, что знаю, а оказалось вон оно как.

Это и есть главная проблема помойки под названием bash (и другие shеллов тоже касается по большей части). На этом невозможно нормально программировать, нет нормального синтаксиса, куча edge кейсов, старое легаси, да и язык построен так, чтобы интерпретатору было удобно, а не человеку

Использовать какие-то структуры данных на баше это боль, и как только они появляются в коде, проще сразу все переписать все на питон. Единственный плюс баша это возможность быстро строить пайплайны и вызывать экзешники, без всякой сторонней мишуры как в том же пайтоне.

Не, можно конечно постичь все тонкости, знать все подводные камни, но один вопрос: зачем на это тратить свое время?

Fizzika ★★
( 02.09.21 22:35:36 MSK )
Ответ на: комментарий от Fizzika 02.09.21 22:35:36 MSK

Использовать какие-то структуры данных на баше это боль, и как только они появляются в коде, проще сразу все переписать все на питон. Единственный плюс баша это возможность быстро строить пайплайны и вызывать экзешники, без всякой сторонней мишуры как в том же пайтоне.

И тут врывается xonsh:

def func(): a = sys.argv[1] git clone @(a) 

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *