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

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

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

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

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

Помогите решить задачу .
Посчитать сколько элементов в одномерном массиве, состоящих из четырех или меньше символов. Вывести количество элементов.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.10.2013, 10:06     Посчитать количество элементов в одномерном массиве
Посмотрите здесь:
C++ В заданном одномерном массиве посчитать количество элементов равных максимальному
C++ В одномерном массиве посчитать сумму элементов
C++ В одномерном массиве посчитать сумму элементов до максимального.
C++ В одномерном массиве надо посчитать сумму элементов
В одномерном массиве посчитать сумму элементов до минимального C++
В одномерном массиве посчитать сумму элементов до минимального. C++
C++ В одномерном массиве посчитать сумму элементов, находящихся в четных позициях
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
zss
Модератор
Эксперт С++
6322 / 5906 / 1913
Регистрация: 18.12.2011
Сообщений: 15,189
Завершенные тесты: 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
Супер-модератор
Эксперт С++
5604 / 2638 / 242
Регистрация: 01.11.2011
Сообщений: 6,497
Завершенные тесты: 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++
4225 / 2199 / 150
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
29.10.2013, 11:16     Посчитать количество элементов в одномерном массиве #5
Цитата Сообщение от Skaynett Посмотреть сообщение
сосчитать и вывести количество элементов массива которые из четырех или меньше символов
может цифр?
Иначе число -1000 подходит или нет? Число 11.55?
Ilot
Модератор
Эксперт С++
1807 / 1164 / 226
Регистрация: 16.05.2013
Сообщений: 3,060
Записей в блоге: 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
В астрале
Эксперт С++
7970 / 4732 / 320
Регистрация: 24.06.2010
Сообщений: 10,541
Завершенные тесты: 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
Модератор
Эксперт С++
1807 / 1164 / 226
Регистрация: 16.05.2013
Сообщений: 3,060
Записей в блоге: 5
Завершенные тесты: 1
29.10.2013, 11:39     Посчитать количество элементов в одномерном массиве #8
Цитата Сообщение от ForEveR Посмотреть сообщение
Но вообще резоннее решать через std::count_if.
Ну так вам еще требуется вывести найденные элементы. Поэтому думаю будет лучше сперва построить новый вектор, а затем просто посчитать его длину. Делов-то.
Цитата Сообщение от ForEveR Посмотреть сообщение
Ilot, std::copy_if например.
Постойте, а последний параметр не должен быть указателем на функцию возвращающую bool?
Прошу сразу извинить если где-то пишу ерунду. Только вчера начал изучать STL.
P.s. Странно у Мюссера нет алгоритмов с _if... или я плохо смотрю...
ForEveR
В астрале
Эксперт С++
7970 / 4732 / 320
Регистрация: 24.06.2010
Сообщений: 10,541
Завершенные тесты: 3
29.10.2013, 11:40     Посчитать количество элементов в одномерном массиве #9
Ilot, Последним параметром должен быть callable объект принимающий Iterator::value_type и возвращающий bool или нечто, что можно неявно конвертировать в bool.
Ilot
Модератор
Эксперт С++
1807 / 1164 / 226
Регистрация: 16.05.2013
Сообщений: 3,060
Записей в блоге: 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
В астрале
Эксперт С++
7970 / 4732 / 320
Регистрация: 24.06.2010
Сообщений: 10,541
Завершенные тесты: 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
Модератор
Эксперт С++
1807 / 1164 / 226
Регистрация: 16.05.2013
Сообщений: 3,060
Записей в блоге: 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     Посчитать количество элементов в одномерном массиве
Ответ Создать тему
Опции темы

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