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

Подсчет количества символов в массиве (строка) - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Проблема с классом и массивом char-ов http://www.cyberforum.ru/cpp-beginners/thread15961.html
Есть класс, содержащий одномерный массив из char-ов и методы для работы с ним. Проблема возникла в самом начале - не получается корректно изменить размер массива, а конкретно - удалить указатель...
C++ Вылетает ошибка при запуске программы Написал несложную программу сложения матриц. Скомпилирывал все нормально, ошибок нема. Начинаюца проблемы когда жму "Выполнить" програма запускаеца, нече не успевает сделать как вылетает ошибка,... http://www.cyberforum.ru/cpp-beginners/thread15958.html
C++ Функции времени
Подскажите можно ли, и каким способом вернуть из библиотечных функций чисто int значения min sec и hour чтоб присвоить их потом тем же переменным в своем созданом классе и если мона то каким способом.
Классы-друзья (использование данных одного класса из другого) C++
Зарание спс ))) Я лаймер в С++ но учусь чтоб исправиться. И куда как не к вам обращаться за помощью =) в тяжкие дни свои. Проблема с классами, везде написано что для того чтоб мона было юзать ...
C++ Сортировка вставками http://www.cyberforum.ru/cpp-beginners/thread15931.html
Помогите плиз немогу написать программу, незнаю с чего начать и что писать, может у кого что нить завалялось для этой темы, заранее спс Короче, надо разработать программу для реализации алгоритма...
C++ Заменить любую группу пробелов одним помогите пожалуйста с лабой. необходимо сжать строку , заменив любую группу пробелов одним пробелом.Исходную строку и результат вывести на экран. Подпрограмму обработки строки следует оформить в... подробнее

Показать сообщение отдельно
master.EXE
88 / 16 / 2
Регистрация: 10.03.2008
Сообщений: 101
14.11.2008, 20:49
Моё предложение таково: идти двойным циклом, как еще предлагал автор темы, но, при этом, на каждом шаге проверять, был ли использован в подсчете текущий символ, т.е., проверялся ли он? Это реализует функция iswas():
C++
1
2
3
4
5
6
7
int iswas(char * source, int nmbr)
{
    for(int i=0;i<nmbr;i++)
        if(source[i]==source[nmbr])
        return 1;
    return 0;
}
Функция принимает два аргумента: указатель на строку и номер текущего символа. Происходит проверка всех символов до текущего и в цикле все предыдущие символы сравниваются с текущим. В зависимости от результата проверки функция возвращает 0 или 1.
Ну а вот сам текст программы:
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.h>
#include<conio.h>
const int MAX=50;
int iswas(char *, int);
int main()
{
    char line[MAX];
    int count;
    clrscr();
    cout<<"Input the line: ";
    cin>>line;
    for(int i=0;line[i]!='\0';i++)
    {
        if(!iswas(line, i)) // проверка
        {
                       count=1;
                       cout<<line[i]<<" - ";
        for(int j=0;line[j]!='\0';j++)
        {
            if(j==i)
            continue;
            if(line[j]==line[i])
            count++;
        }
        cout<<count<<endl;
        }
    }
    getch();
 
    return 0;
}
int iswas(char * source, int nmbr)
{
    for(int i=0;i<nmbr;i++)
        if(source[i]==source[nmbr])
        return 1;
    return 0;
}
Добавлено через 32 минуты 6 секунд
Да не нужен здесь никакой цикл. Все горааааааздо проще.
Интересная идея....Я бы даже сказал довольно таки эффективный метод. Т.е. мы экономим на процессорном времени, но при этом есть один недостаток - использование большого, зачастую излишнего объема памяти. Для больших объемов информации этот метод отлично подходит, но если требуется обработать небольшой текст - то довольно таки затратно выходит... Но, при этом идея мне понравилась.
CheshireCat +1
0
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru