С Новым годом! Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

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

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

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

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

В заданном одномерном массиве посчитать количество элементов равных максимальному - C++
Дан одномерный массив А посчитать кол-во элементов равных максимальному

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

В одномерном массиве надо посчитать сумму элементов - C++
Вводим целые числа и надо посчитать их сумму.

В одномерном массиве посчитать сумму элементов до минимального - C++
Помогите написать программу. В одномерном массиве посчитать сумму элементов до минимального. Заранее спасибо.

В одномерном массиве посчитать сумму элементов до максимального. - C++
Доброе утро. В одномерном массиве посчитать сумму элементов до максимального. Для обработки использовать динамическую память. Функции...

В одномерном массиве посчитать сумму элементов до минимального. - C++
сейчас сижу на экзамене и попалась задача: В одномерном массиве посчитать сумму элементов до минимального. Никак не могу...

13
zss
Модератор
Эксперт С++
6579 / 6141 / 2023
Регистрация: 18.12.2011
Сообщений: 16,004
Завершенные тесты: 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++;
0
Skaynett
0 / 0 / 0
Регистрация: 08.12.2010
Сообщений: 14
29.10.2013, 10:17  [ТС] #3
сосчитать и вывести количество элементов массива которые из четырех или меньше символов
0
SatanaXIII
Супер-модератор
Эксперт С++
5640 / 2675 / 252
Регистрация: 01.11.2011
Сообщений: 6,574
Завершенные тесты: 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++;
0
Thinker
Эксперт С++
4229 / 2203 / 150
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
29.10.2013, 11:16 #5
Цитата Сообщение от Skaynett Посмотреть сообщение
сосчитать и вывести количество элементов массива которые из четырех или меньше символов
может цифр?
Иначе число -1000 подходит или нет? Число 11.55?
0
Ilot
Модератор
Эксперт С++
1823 / 1181 / 232
Регистрация: 16.05.2013
Сообщений: 3,118
Записей в блоге: 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 вне тела программы. Вопрос можно ли этого не делать? Т.е. как организовать алгорит, что бы этого не пришлось делать. Заранее спасибо.
0
ForEveR
В астрале
Эксперт С++
7983 / 4742 / 321
Регистрация: 24.06.2010
Сообщений: 10,547
Завершенные тесты: 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;
}
2
Ilot
Модератор
Эксперт С++
1823 / 1181 / 232
Регистрация: 16.05.2013
Сообщений: 3,118
Записей в блоге: 5
Завершенные тесты: 1
29.10.2013, 11:39 #8
Цитата Сообщение от ForEveR Посмотреть сообщение
Но вообще резоннее решать через std::count_if.
Ну так вам еще требуется вывести найденные элементы. Поэтому думаю будет лучше сперва построить новый вектор, а затем просто посчитать его длину. Делов-то.
Цитата Сообщение от ForEveR Посмотреть сообщение
Ilot, std::copy_if например.
Постойте, а последний параметр не должен быть указателем на функцию возвращающую bool?
Прошу сразу извинить если где-то пишу ерунду. Только вчера начал изучать STL.
P.s. Странно у Мюссера нет алгоритмов с _if... или я плохо смотрю...
0
ForEveR
В астрале
Эксперт С++
7983 / 4742 / 321
Регистрация: 24.06.2010
Сообщений: 10,547
Завершенные тесты: 3
29.10.2013, 11:40 #9
Ilot, Последним параметром должен быть callable объект принимающий Iterator::value_type и возвращающий bool или нечто, что можно неявно конвертировать в bool.
0
Ilot
Модератор
Эксперт С++
1823 / 1181 / 232
Регистрация: 16.05.2013
Сообщений: 3,118
Записей в блоге: 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;
   })...
Я вроде как понимаю, что это какая-то безимянная ф-я определенная на месте, однако не до конца понимаю синтаксис...
0
ForEveR
В астрале
Эксперт С++
7983 / 4742 / 321
Регистрация: 24.06.2010
Сообщений: 10,547
Завершенные тесты: 3
29.10.2013, 12:00 #11
Ilot, Лямбда-функция. Анонимный функциональный объект введенный в С++11.
http://en.cppreference.com/w/cpp/algorithm/copy
copy_if доступен тоже только начиная с С++11.
1
Skaynett
0 / 0 / 0
Регистрация: 08.12.2010
Сообщений: 14
29.10.2013, 12:01  [ТС] #12
Условие такое вводим в одномерный массив слова , и нужно вывести на экран количество слов которые состоят из 4 или меньше символов
0
Ilot
Модератор
Эксперт С++
1823 / 1181 / 232
Регистрация: 16.05.2013
Сообщений: 3,118
Записей в блоге: 5
Завершенные тесты: 1
29.10.2013, 12:03 #13
Цитата Сообщение от Skaynett Посмотреть сообщение
Условие такое вводим в одномерный массив слова , и нужно вывести на экран количество слов которые состоят из 4 или меньше символов
Skaynett, моя программа решает данную постановку. Вот только сейчас до красоты ее причешим.
Цитата Сообщение от ForEveR Посмотреть сообщение
copy_if доступен тоже только начиная с С++11.
Ах вот оно в чем дело... У меня компилятор данный стандарт не поддерживает.
Однако странно, что редактор распознает алгоритм как зарезервированный... ладно потом разберемся...
1
Skaynett
0 / 0 / 0
Регистрация: 08.12.2010
Сообщений: 14
29.10.2013, 16:38  [ТС] #14
Помогите сделать задачу
Условие такое вводим в одномерный массив слова , и нужно вывести на экран количество слов которые состоят из 4 или меньше символов
0
29.10.2013, 16:38
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
29.10.2013, 16:38
Привет! Вот еще темы с ответами:

В одномерном массиве посчитать сумму элементов, находящихся в четных позициях - C++
Ребят как можно проще напишите плиз) 1)В одномерном массиве посчитать сумму элементов, находящихся в четных позициях. 2)Текст в файле:...

В одномерном числовом массиве посчитать среднее арифметическое отрицательных элементов - C++
В одномерном числовом массиве посчитать среднее арифметическое отрицательных элементов. Заранее спасибо :)

В одномерном массиве посчитать сумму элементов,находящихся в четных позициях и т.д - C++
Помогите пожалуйста написать эту программу.. Желательно на TURBO C++ то есть (bc), т.к другие мы ещё не изучали Задание 1 (Одна...

В одномерном массиве посчитать сумму элементов, находящихся в чётных позициях - C++
в одномерном массиве посчитать сумму элумунтов,находящихся в чётных позициях(и желательно в Vectore) С++Builder 6


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

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
Опции темы

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