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

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

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

Посчитать количество элементов в одномерном массиве - C++

29.10.2013, 10:06. Просмотров 1039. Ответов 13
Метки нет (Все метки)

Помогите решить задачу .
Посчитать сколько элементов в одномерном массиве, состоящих из четырех или меньше символов. Вывести количество элементов.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.10.2013, 10:06     Посчитать количество элементов в одномерном массиве
Посмотрите здесь:

C++ В одномерном массиве посчитать сумму элементов,находящихся в четных позициях и т.д
В одномерном массиве посчитать сумму элементов, находящихся в чётных позициях C++
В одномерном массиве посчитать сумму элементов после последнего положительного элемента C++
C++ В одномерном массиве посчитать сумму элементов, находящихся в четных позициях
C++ В одномерном массиве посчитать сумму элементов до максимального.
В одномерном массиве посчитать сумму элементов до минимального C++
В одномерном массиве посчитать сумму элементов до минимального. C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
zss
Модератор
Эксперт С++
 Аватар для zss
6123 / 5726 / 1852
Регистрация: 18.12.2011
Сообщений: 14,630
Завершенные тесты: 1
29.10.2013, 10:11     Посчитать количество элементов в одномерном массиве #2
Цитата Сообщение от Skaynett Посмотреть сообщение
сколько элементов
Каких элементов?
Если символов, равных заданному, то так:
C++
1
2
3
4
5
6
char mass[5]="abbc";
char sim;cin>>sim;
int count=0;
for(int i=0;i<4;i++)
    if(mass[i]==sim)
        count++;
Skaynett
0 / 0 / 0
Регистрация: 08.12.2010
Сообщений: 14
29.10.2013, 10:17  [ТС]     Посчитать количество элементов в одномерном массиве #3
сосчитать и вывести количество элементов массива которые из четырех или меньше символов
SatanaXIII
Супер-модератор
Эксперт С++
 Аватар для SatanaXIII
5549 / 2583 / 235
Регистрация: 01.11.2011
Сообщений: 6,391
Завершенные тесты: 1
29.10.2013, 10:37     Посчитать количество элементов в одномерном массиве #4
Цитата Сообщение от Skaynett Посмотреть сообщение
сосчитать и вывести количество элементов массива которые из четырех или меньше символов
C++
1
2
3
4
5
6
const int n = 5;
int count = 0;
int a[n] = {1, 22, 333, 4444, 55555};
 
for( int i=0; i<n; i++ )
  if( a[i]<10000 ) count++;
Thinker
Эксперт C++
 Аватар для Thinker
4218 / 2192 / 150
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
29.10.2013, 11:16     Посчитать количество элементов в одномерном массиве #5
Цитата Сообщение от Skaynett Посмотреть сообщение
сосчитать и вывести количество элементов массива которые из четырех или меньше символов
может цифр?
Иначе число -1000 подходит или нет? Число 11.55?
Ilot
Модератор
Эксперт С++
1780 / 1155 / 223
Регистрация: 16.05.2013
Сообщений: 3,042
Записей в блоге: 5
Завершенные тесты: 1
29.10.2013, 11:28     Посчитать количество элементов в одномерном массиве #6
Таки может перемудрил:
Кликните здесь для просмотра всего текста

C++
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
#include<iostream>
#include<algorithm>
#include<vector>
#include<string>
using std::string;
std::vector<string> result; //массив с найденными элементами
void smallelemen(string&, std::vector<string>& res = result);
void show(const string&);
int main()
{
    system("chcp 1251>0");
    char ch;
    std::vector<string> mass;   //исходный массив
    std::cout << "Программа для нахождения элементов в списке, содержащих менее пяти символов." <<std::endl;
 
    do
    {
        string elem;
        std::cout << "Введете  элемент списка:"; std::cin >> elem;
        mass.push_back(elem);
        std::cout << "Продолжить(д/н)?"; std::cin >> ch;
    }
    while(ch != 'н');
    std::cout << std::endl;
    std::for_each(mass.begin(), mass.end(), smallelemen);
    std::cout << "Количество искомых элементов в списке: " << result.size() << std::endl;
    std::for_each(result.begin(), result.end(), show);
    return 0;
}
void smallelemen(string& value, std::vector<string>& res )
{
    if (value.size() <= 4)
        res.push_back(value);
}
void show(const string& value)
{
    std::cout << value << std::endl;
}

И у меня сразу вопрос к людям знающим. Как можно реализовать добавление только определенных элементов из вектора в другой вектор. Здесь я сделал аргумент по умолчанию, но при этом пришлось вынести определение массива result вне тела программы. Вопрос можно ли этого не делать? Т.е. как организовать алгорит, что бы этого не пришлось делать. Заранее спасибо.
ForEveR
Модератор
Эксперт С++
 Аватар для ForEveR
7958 / 4720 / 319
Регистрация: 24.06.2010
Сообщений: 10,525
Завершенные тесты: 3
29.10.2013, 11:30     Посчитать количество элементов в одномерном массиве #7
Ilot, std::copy_if например.
C++
1
2
3
4
std::copy_if(mass.begin(), mass.end(), res.begin(), [](const std::string& value)
{
   return value.size() <= 4;
});
Но вообще резоннее решать через std::count_if.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <iostream>
#include <vector>
#include <algorithm>
#include <iterator>
 
int main()
{
   std::vector<std::string> values((std::istream_iterator<std::string>(std::cin)),
   std::istream_iterator<std::string>());
   std::cout << std::count_if(values.begin(), values.end(), [](const std::string& v)
   {
      return v.size() <= 4;
   }) << std::endl;
}
Ilot
Модератор
Эксперт С++
1780 / 1155 / 223
Регистрация: 16.05.2013
Сообщений: 3,042
Записей в блоге: 5
Завершенные тесты: 1
29.10.2013, 11:39     Посчитать количество элементов в одномерном массиве #8
Цитата Сообщение от ForEveR Посмотреть сообщение
Но вообще резоннее решать через std::count_if.
Ну так вам еще требуется вывести найденные элементы. Поэтому думаю будет лучше сперва построить новый вектор, а затем просто посчитать его длину. Делов-то.
Цитата Сообщение от ForEveR Посмотреть сообщение
Ilot, std::copy_if например.
Постойте, а последний параметр не должен быть указателем на функцию возвращающую bool?
Прошу сразу извинить если где-то пишу ерунду. Только вчера начал изучать STL.
P.s. Странно у Мюссера нет алгоритмов с _if... или я плохо смотрю...
ForEveR
Модератор
Эксперт С++
 Аватар для ForEveR
7958 / 4720 / 319
Регистрация: 24.06.2010
Сообщений: 10,525
Завершенные тесты: 3
29.10.2013, 11:40     Посчитать количество элементов в одномерном массиве #9
Ilot, Последним параметром должен быть callable объект принимающий Iterator::value_type и возвращающий bool или нечто, что можно неявно конвертировать в bool.
Ilot
Модератор
Эксперт С++
1780 / 1155 / 223
Регистрация: 16.05.2013
Сообщений: 3,042
Записей в блоге: 5
Завершенные тесты: 1
29.10.2013, 11:57     Посчитать количество элементов в одномерном массиве #10
Не подскажите. Компилятор ругается на copy_if, однако определяет его как зарезервированный алгоритм.
error: 'copy_if' is not a member of 'std'
Как я понимаю ругается на то что алгоритм не принадлежит пространству std. Но какого лешего? Танцы с бубном не помогают.
И еще вы бы не могли разъяснить вот эту конструкцию:
C++
1
2
3
4
...[](const std::string& v)
   {
      return v.size() <= 4;
   })...
Я вроде как понимаю, что это какая-то безимянная ф-я определенная на месте, однако не до конца понимаю синтаксис...
ForEveR
Модератор
Эксперт С++
 Аватар для ForEveR
7958 / 4720 / 319
Регистрация: 24.06.2010
Сообщений: 10,525
Завершенные тесты: 3
29.10.2013, 12:00     Посчитать количество элементов в одномерном массиве #11
Ilot, Лямбда-функция. Анонимный функциональный объект введенный в С++11.
http://en.cppreference.com/w/cpp/algorithm/copy
copy_if доступен тоже только начиная с С++11.
Skaynett
0 / 0 / 0
Регистрация: 08.12.2010
Сообщений: 14
29.10.2013, 12:01  [ТС]     Посчитать количество элементов в одномерном массиве #12
Условие такое вводим в одномерный массив слова , и нужно вывести на экран количество слов которые состоят из 4 или меньше символов
Ilot
Модератор
Эксперт С++
1780 / 1155 / 223
Регистрация: 16.05.2013
Сообщений: 3,042
Записей в блоге: 5
Завершенные тесты: 1
29.10.2013, 12:03     Посчитать количество элементов в одномерном массиве #13
Цитата Сообщение от Skaynett Посмотреть сообщение
Условие такое вводим в одномерный массив слова , и нужно вывести на экран количество слов которые состоят из 4 или меньше символов
Skaynett, моя программа решает данную постановку. Вот только сейчас до красоты ее причешим.
Цитата Сообщение от ForEveR Посмотреть сообщение
copy_if доступен тоже только начиная с С++11.
Ах вот оно в чем дело... У меня компилятор данный стандарт не поддерживает.
Однако странно, что редактор распознает алгоритм как зарезервированный... ладно потом разберемся...
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
29.10.2013, 16:38     Посчитать количество элементов в одномерном массиве
Еще ссылки по теме:

В одномерном числовом массиве посчитать среднее арифметическое отрицательных элементов C++
C++ В одномерном массиве посчитать сумму элементов
В одномерном массиве посчитать сумму элементов, номера которых являются простыми числами C++
C++ В заданном одномерном массиве посчитать количество элементов равных максимальному

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

Или воспользуйтесь поиском по форуму:
Skaynett
0 / 0 / 0
Регистрация: 08.12.2010
Сообщений: 14
29.10.2013, 16:38  [ТС]     Посчитать количество элементов в одномерном массиве #14
Помогите сделать задачу
Условие такое вводим в одномерный массив слова , и нужно вывести на экран количество слов которые состоят из 4 или меньше символов
Yandex
Объявления
29.10.2013, 16:38     Посчитать количество элементов в одномерном массиве
Ответ Создать тему
Опции темы

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