Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
perimetral
1 / 1 / 0
Регистрация: 17.12.2010
Сообщений: 16
#1

Количество элементов массива - C++

31.01.2011, 19:39. Просмотров 670. Ответов 9
Метки нет (Все метки)

Народ, есть проблемка. Нужно узнать количество char-элементов в введенной строке. То есть сколько символов ввел пользователь. Объявлял динамически.
sizeof возвращает количество занимаемых байт, а нужно не это.

C++
1
2
3
4
void main() {
  char * str = new char;
  cin>>str;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
31.01.2011, 19:39     Количество элементов массива
Посмотрите здесь:

В одномерном массиве, вычислить: а) количество элементов массива б) произведение элементов массива в) От - к + - C++
Помогите пожалуйста!.. Вводить из клавиатуры массивы и обрабатывать их, пока на запрос “Хотите продолжать работу дальше (да, нет) ?”...

Найти количество нулевых и количество отрицательных элементов массива - C++
c++ Найти количество нулевых и количество отрицательных элементов массива.

Определить количество положительных и количество отрицательных элементов массива - C++
Определить количество положительных и количество отрицательных элементов массива Заранее огромное спасибо!

Найти количество элементов в этих массива равных первому элементу массива S - C++
Даны целочисленные массивы S и T с разным количеством элементов. Найти количество элементов в этих массива равных первому элементу массива...

Найти количество отрицательных элементов массива, находящихся во второй половине массива - C++
Обязательные условия: 1) массивы должны быть динамические – организовать выделение памяти; 2) значения элементов массива вводятся с ...

Как скопировать одну половину массива (количество элементов массива четноё) в другую? - C++
Допустим, есть массив с чётным количеством элементов. Каким образом я могу скопировать первую половину массива (то есть первые 5 элементов)...

В одномерном массиве состоящий из n элементов вычислить количество элементов массива, меньших C - C++
:::::::

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
NiRamz
211 / 211 / 16
Регистрация: 26.12.2010
Сообщений: 691
31.01.2011, 19:41     Количество элементов массива #2
sizeof - возвращает количество занимаемых байтов - это да, но если общий объем разделить на объем, который занимает один элемент массива то получится общее количество.
C++
1
sizeof(mas)/sizeof(mas[0])
Mogul-kan
23 / 23 / 2
Регистрация: 24.04.2010
Сообщений: 220
31.01.2011, 19:44     Количество элементов массива #3
может использовать функцию
C
1
2
#include <string.h>
size_t strlen(const char *str);
silent_1991
Эксперт С++
4960 / 3036 / 149
Регистрация: 11.11.2009
Сообщений: 7,027
Завершенные тесты: 1
31.01.2011, 19:49     Количество элементов массива #4
perimetral, я вам и так скажу. 1 элемент. 1 символ. Остальные останутся в потоке висеть. А всё потому, что вы выделили память под символ, а не под массив символов. под массив память выделяется как char *str = new char [size];

Добавлено через 3 минуты
Хотя нет, если так вводить будете - висеть не останется, но за пределы памяти вылезете, что вызовет ошибку, естественно.
NiRamz
211 / 211 / 16
Регистрация: 26.12.2010
Сообщений: 691
31.01.2011, 19:51     Количество элементов массива #5
и да, динамический массив объявляется немножко по другому ..
C++
1
2
std::cin >> str;
char *mas = new char[strlen(str)];
perimetral
1 / 1 / 0
Регистрация: 17.12.2010
Сообщений: 16
31.01.2011, 19:52  [ТС]     Количество элементов массива #6
silent_1991, тогда почему работает такая строка?
C++
1
cout<<str;
Mogul-kan, и где же будет храниться количество элементов? В size_t чтоли?

NiRamz, спасибо, вроде помогло.

UPD: NiRamz, в этом объявлении массива, str должна быть простым char? Так?
C++
1
2
3
char str;
cin >> str;
char *mas = new char[strlen(str)];
NiRamz
211 / 211 / 16
Регистрация: 26.12.2010
Сообщений: 691
31.01.2011, 20:08     Количество элементов массива #7
C++
1
2
3
    char *str;
    std::cin >> str;
    char *mas = new char[strlen(str)];
silent_1991
Эксперт С++
4960 / 3036 / 149
Регистрация: 11.11.2009
Сообщений: 7,027
Завершенные тесты: 1
31.01.2011, 20:17     Количество элементов массива #8
Цитата Сообщение от perimetral Посмотреть сообщение
тогда почему работает такая строка?
По-вашему, такой довод может говорить о правильности?

Добавлено через 2 минуты
NiRamz, так тоже нельзя делать! Нужно сначала выделять память, а потом писать что-то в неё. Может, где-то это и сработает, но вообще, насколько я могу судить, это UB (возможно, ошибаюсь, но суть в том, что так делать нельзя).
NiRamz
211 / 211 / 16
Регистрация: 26.12.2010
Сообщений: 691
31.01.2011, 20:28     Количество элементов массива #9
silent_1991 я тут только лишь определяю размер и выделяю память .. писать в массив дальше после только уже. память выделяется исходя из введенной длинны

Добавлено через 1 минуту
хотя да, как то криво делаю ))
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
31.01.2011, 20:38     Количество элементов массива
Еще ссылки по теме:

Посчитать количество элементов, отличающихся от среднего арифметического значения элементов массива - C++
Подсчитать количество элементов массива Р (60), отличающихся от среднего арифметического значения элементов массива М (70) не более чем...

Найти сумму положительных элементов массива и количество этих элементов - C++
Задан массив d. Найти сумму корней положительных элементов массива и количество этих элементов .

Найти количество элементов массива, не превосходящих среднее значение элементов на главной диагонали - C++
Добрый день. Имеется двумерный массив, представленный квадратной матрицей NxN. В ней нужно найти количество элементов, не превосходящих...

Найти произведение элементов массива с чётными номерами и количество элементов, удовлетворяющих условию - C++
Добрый день,я создал код по условию задачи: 3. В одномерном массиве С, состоящем из N вещественных элементов, вычислить: a)...

В одномерном массиве, состоящим из n вещественных элементов вычислить количество элементов массива, больших С - C++
#include &quot;stdafx.h&quot; #include &lt;time.h&gt; #include &lt;stdlib.h&gt; #include &lt;locale.h&gt; #include &lt;math.h&gt; #include &lt;stdio.h&gt; #include...


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

Или воспользуйтесь поиском по форуму:
silent_1991
Эксперт С++
4960 / 3036 / 149
Регистрация: 11.11.2009
Сообщений: 7,027
Завершенные тесты: 1
31.01.2011, 20:38     Количество элементов массива #10
NiRamz, эх, вот ведь мы дураки... Всю жизнь использовали динамическое распределение памяти, а тут вон как всё просто - память выделяется исходя из размера введённой строки! Тогда можно и половину стандартной сишной библиотеки выкинуть, раз всё автоматически происходит.
Yandex
Объявления
31.01.2011, 20:38     Количество элементов массива
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru