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

работа со строками, без индексации - C++

Восстановить пароль Регистрация
 
Kirill Losev
3 / 3 / 0
Регистрация: 01.10.2011
Сообщений: 249
20.02.2012, 15:30     работа со строками, без индексации #1
Снова обращаюсь за помощью в решении задачи: "определить количество вхождений в строку каждого из знаков, встречающихся в ней 1 или более раз".
Должен сказать, что у меня проблемы возникли даже с выводом строки из файла на экран.
Вот требования, предъявленные преподавателем:
  • без индексации
  • только string.h, т.е. функции str***, а, например, mem*** нельзя

Хотелось бы узнать где можно найти хорошую информацию по этой теме, ну и, кто чем сможет, помогите, если не трудно
всем заранее спасибо
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
-=ЮрА=-
Заблокирован
Автор FAQ
20.02.2012, 15:50     работа со строками, без индексации #2
Цитата Сообщение от Kirill Losev Посмотреть сообщение
"определить количество вхождений в строку каждого из знаков, встречающихся в ней 1 или более раз".
Должен сказать, что у меня проблемы возникли даже с выводом строки из файла на экран.
Вот требования, предъявленные преподавателем:
без индексации
только string.h, т.е. функции str***, а, например, mem*** нельзя
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
#include <stdio.h>
#include <string.h>
 
//ÔóГ*êöèÿ ïîäñ÷èòûâГ*ГҐГІ ÷èñëî âõîæäåГ*ГЁГ© ñèìâîëГ* chr
//Гў ñòðîêó text. Åñëè ïîçèöèÿ ïåðâîãî Г*Г*éäåГ*Г*îãî ñèìâîëГ* chr
//ìåГ*ГҐГҐ pos ГІГ® ñëåäîâГ*òåëüГ*Г® Г®Г* óæå áûë ïîñ÷èòГ*Г* ГЁ âîçâðГ*ГІ áóäåò 0
//ГЁГ*Г*Г·ГҐ âîçâðГ*ГІ - ÷èñëî âõîæäåГ*ГЁГ© chr
int getCharCount(char * text, long pos, char chr)
{
    int count = 0;
    char * sub = strchr(text,chr);
    if(sub)
    {
        if(pos <= strlen(text) - strlen(sub))
        while(sub)
        {
            count = count + 1;
            sub = strchr(sub + 1,chr);
        }
    }
    return count;
}
 
int main()
{
    int i, count;
    char text[1024] = {0};//äóìГ*Гѕ 1024 ñèìâîëîâ äëÿ ââîäГ* ïîëГ*ГҐ äîñòГ*òî÷Г*Г®
    while(1)
    {
        printf("Enter text(less than 1024 chars\n");
        scanf("%[^\n]",text);
        getchar();//ÓáðГ*ëè \n îò Г*Г*Г¦Г*ГІГЁГї Enter
        for(i = 0; text[i] != '\0';i++)
        {
            if((count = getCharCount(text, i, text[i])))
                printf("Symbol %c - %d times\n",text[i], count);
        }
    }
    return 0;
}
Миниатюры
работа со строками, без индексации  
soon
 Аватар для soon
2536 / 1301 / 81
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
20.02.2012, 16:00     работа со строками, без индексации #3
Условие коряво поставлено. Или совсем нельзя без string.h, или нельзя никакие посторонние функции, кроме str*
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <stdio.h>
 
#define SIZE 256
#define NUM 1
 
int main(void)
{
    const char str[] = "s;ioegfj0340438gsuhf-wrf";
    char arr[SIZE] = { 0 };
    char* p;
    int i;
    for(p = (char*)str; *p; ++p)
        ++*(arr + (int)*p);
    p = NULL;
    for(i = 0; i < SIZE; ++i)
        if(*(arr + i))
            printf("%c - %d\n", i, *(arr + i));
    return 0;
}
Kirill Losev
3 / 3 / 0
Регистрация: 01.10.2011
Сообщений: 249
20.02.2012, 16:29  [ТС]     работа со строками, без индексации #4
-=ЮрА=-, спасибо вам большое
soon,
да, нельзя без string.h b и нельзя ничего, кроме, str***. спасибо
Kirill Losev
3 / 3 / 0
Регистрация: 01.10.2011
Сообщений: 249
26.02.2012, 19:33  [ТС]     работа со строками, без индексации #5
-=ЮрА=-, у меня получилось сделать программу, используя код вашей программы, спасибо. я так же использовал ту часть кода, где началась индексация(строка 34 - начало цикла), так как я не знал больше как можно сделать без индексации. но, как оказалось, нельзя использовать индексацию даже в таком количестве. Дак вот, не могли бы Вы рассказать мне, если это возможно, как можно изменить программу, не используя индексацию вообще. заранее спасибо
Yandex
Объявления
26.02.2012, 19:33     работа со строками, без индексации
Ответ Создать тему
Опции темы

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