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

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

Войти
Регистрация
Восстановить пароль
 
Busterr
-25 / 1 / 0
Регистрация: 25.09.2011
Сообщений: 50
#1

Использование функции - C++

14.10.2011, 20:22. Просмотров 740. Ответов 6
Метки нет (Все метки)

Я должен посчитать сколько букв в каждой строке с использованием функции int countAccurance(char arr[maxn], char ch). Но вывод должен быть в обратном порядке. Вот пример:
Input
2
a abracadabra
b babaluba
Output
3 b in babaluba
5 a in abracadabra
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
#include <iostream>
#include <cstring>
 
using namespace std;
 
int const maxn=200;
 
 int countAccurance(char arr[maxn], char ch);
   int main (){
     int N=0;
     char ch1;
     char str1[maxn];
     cin>>N;
     for(int i=0;i<N;i++)
     {
        cin>>ch1>>str1;
 
        cout<<countAccurance(str1,ch1)<<" "<<ch1<<"in "<<str1<<endl;}
    
    return countAccurance(str1,ch1);
 }
   int countAccurance(char arr[maxn], char ch){
     int res=0;
     int strLength=strlen(arr);
     for(int i=0;i<strLength;i++)
       if(arr[i]==ch)
           res++;
     
   
     return res;
 
   }
Добавлено через 54 минуты
У меня выводит все правильно, но не в обратном порядке
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.10.2011, 20:22
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Использование функции (C++):

Возвращение результата функции bool и использование его в функции main() - C++
У меня есть функция bool, которая имеет вид: bool Pisos(int row, int place) { if (...) return true; else return false;...

Ввод данных в функции конструктора и использование их в перегруженной функции - C++
Вот собственно код, как его исправить, что бы не было ошибки. Пишет что переменные не объявлены. Это вполне естественно. Но как сделать...

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

использование массива из функции в другой функции - C++
как использовать полученный массив в другой функции. к примеру в функции int Mass(char *fname) происходит конвертация одномерного массива...

Использование функции Gets() - C++
Помогите переделать данный код, чтобы вводить str не через функцию cin, а через функцию gets() #include &lt;iostream&gt; #include &lt;string&gt;...

Использование функции gets - C++
char *str1; gets(str1); Комментарий препода: Собственно вопрос: Справедлив ли комментарий препода и как сделать так, чтоб было...

6
talis
792 / 544 / 37
Регистрация: 11.05.2010
Сообщений: 1,298
Записей в блоге: 1
14.10.2011, 20:42 #2
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <iostream>
#include <stack>
#include <string>
#include <algorithm>
 
int main()
{
    typedef std::pair<char, std::string> data_t;
    std::stack <data_t> str_stack;
 
    for( data_t dat; std::cin >> dat.first >> dat.second && dat.second != "quit"; )
        str_stack.push( dat );
 
    while( str_stack.size() )
    {
        data_t out = str_stack.top();
        std::cout << std::count( out.second.begin(), out.second.end(), out.first ) << ' ' << out.first << "'s in " << out.second << '\n';
        str_stack.pop();
    }
 
    return 0;
}
Добавлено через 5 минут
Извините, поспешил. Не заметил часть про int countAccurance

Добавлено через 3 минуты
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
#include <iostream>
#include <stack>
#include <string>
 
int countAccurate( const char * ptr, char ch )
{
    int count = 0;
 
    while( *ptr )
    {
       if( *ptr == ch )
          count++;
       ptr++;
    }
 
    return count;
}
 
int main()
{
    typedef std::pair<char, std::string> data_t;
    std::stack <data_t> str_stack;
 
    for( data_t dat; std::cin >> dat.first >> dat.second && dat.second != "quit"; )
        str_stack.push( dat );
 
    while( str_stack.size() )
    {
        data_t out = str_stack.top();
        std::cout << countAccurate( out.second.c_str(), out.first ) << ' ' << out.first << "'s in " << out.second << '\n';
        str_stack.pop();
    }
 
    return 0;
}
1
Busterr
-25 / 1 / 0
Регистрация: 25.09.2011
Сообщений: 50
15.10.2011, 07:36  [ТС] #3
Спасибо конечно, но мне нужен более простой код, так как я еще не проходил Strack и String, a также Typedef.
0
Евгений М.
1036 / 977 / 54
Регистрация: 28.02.2010
Сообщений: 2,829
Завершенные тесты: 2
15.10.2011, 07:43 #4
Цитата Сообщение от Busterr Посмотреть сообщение
У меня выводит все правильно, но не в обратном порядке
Создайте отдельный цикл, в котором будет выводиться результат. Только счетчик этого цикла должен уменьшаться с N-1 до 0.
0
Busterr
-25 / 1 / 0
Регистрация: 25.09.2011
Сообщений: 50
15.10.2011, 07:57  [ТС] #5
Теперь он два раза выводит тот же результат
Код
#include <iostream>
#include <cstring>
 
using namespace std;
 
int const maxn=200;
 
 int countAccurance(char arr[maxn], char ch);
   int main (){
     int N=0;
     char ch1;
     char str1[maxn];
     cin>>N;
         for(int i=0;i<N;i++){
			 cin>>ch1>>str1;}
 for (int j=N-1;j>=0; j--)
 {cout<<countAccurance(str1,ch1)<<" "<<ch1<<"in "<<str1<<endl;
   }
    return countAccurance(str1,ch1);
 }
   int countAccurance(char arr[maxn], char ch){
     int res=0;
     int strLength=strlen(arr);
     for(int i=0;i<strLength;i++)
       if(arr[i]==ch)
                   res++;
         
   
 return res;
 
   }
0
Евгений М.
1036 / 977 / 54
Регистрация: 28.02.2010
Сообщений: 2,829
Завершенные тесты: 2
15.10.2011, 08:05 #6
Busterr, используйте массивы строк, а не одну строку, который хранит последнюю введенную.
0
talis
792 / 544 / 37
Регистрация: 11.05.2010
Сообщений: 1,298
Записей в блоге: 1
16.10.2011, 00:19 #7
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
39
40
41
42
43
44
45
46
47
48
49
#include <iostream>
 
struct data_t
{
    char ch;
    char str[256];
};
 
int countAccurance( const char * ptr, char ch )
{
    int count = 0;
 
    while( *ptr )
    {
       if( *ptr == ch )
          count++;
       ptr++;
    }
 
    return count;
}
 
int main()
{
    const int max_data = 16;
    data_t data[ max_data ];
    int data_used;
 
    for( data_used = 0; data_used < max_data; data_used++ )
    {
        std::cin >> data[ data_used ].ch;
 
        if( data[ data_used ].ch == 'q' )
           break;
 
        std::cin >> data[ data_used ].str;
    }
 
    std::cout << '\n';
 
 
    for( data_used--; data_used >= 0; data_used-- )
    {
        std::cout << countAccurance( data[ data_used ].str, data[ data_used ].ch )
                  << " '" << data[ data_used ].ch << "' in " << data[ data_used ].str << '\n';
    }
 
    return 0;
}
0
16.10.2011, 00:19
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.10.2011, 00:19
Привет! Вот еще темы с ответами:

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

Использование функции. - C++
помогите переделать программу нужно использовать функцию #include &lt;math.h&gt; #include &lt;iostream.h&gt; #include&lt;fstream.h&gt; ...

использование функции! - C++
В матрице A(5,3) найти наибольший элемент.Решить эту задачу нужно с использованием функции!!Люди добрые помогите пожалуйста!!!

Использование функции GetUserName() - C++
Нужен пример программы, которая удаляет файл за адресом C:\Users\&lt;имя_пользователя&gt;\AppData\example.txt Если можно наведите пример.


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

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

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