Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 31.10.2017, 01:10   #21
SadiQ228
Пользователь
 
Регистрация: 30.10.2017
Сообщений: 66
По умолчанию

нельзя так шоль?
SadiQ228 вне форума Ответить с цитированием
Старый 31.10.2017, 01:13   #22
ura_111
Участник клуба
 
Регистрация: 14.05.2016
Сообщений: 1,793
По умолчанию

Начало массива начинаться с 0-ля.

Ну ладно, убери там "-1", т.е. будет "...string[i]...".

Пробуй, ну этот пример заработает, и другие варианты тоже перебери.
ura_111 вне форума Ответить с цитированием
Старый 31.10.2017, 01:16   #23
ura_111
Участник клуба
 
Регистрация: 14.05.2016
Сообщений: 1,793
По умолчанию

Не уверен насчёт 2-го "подозрительно" места:

0.jpg


ну ладно (пусть останется так),
тестируй при разных комбинациях.
ura_111 вне форума Ответить с цитированием
Старый 31.10.2017, 01:39   #24
SadiQ228
Пользователь
 
Регистрация: 30.10.2017
Сообщений: 66
По умолчанию

потестил не работает, я тут родил новую версию кода, делюкс эдишен, почекай пожалуйста в студии, должно вроде работать хз у меня пашет вроде как ну тока там гетс замени и отчекай несколько вариантов , слово в конце, слово в начале, слово из одного символа и все такое
Код:
#include <stdio.h>
#define MAX 100
int main() {
    char str[MAX], word[MAX], lenw = 0, lens = 0, sum = 0;
    for(int i=0;i<MAX; i++){str[i]=0;word[i]=0;}
    char i,j,w;
    printf("Введите слово: ");
    gets(word);
    printf("Введите строку: ");
    gets(str);
    while(word[lenw+1]) {lenw++;}
    while(str[lens+1]) {lens++;}

    for(i = 0; i<=lens; i++){
        if(str[i]==' '){
            continue;
        }
        else if(str[i]==word[0]){
            for(w=0,j=i; str[j]==word[w]; j++,w++){
                if(w==lenw && (str[j+1] == ' '||j==lens) && (str[i-1]==' '||i-1<0)){
                    sum++;
                    i=j;
                }
            }
        }
        else if(str[i]!=' '&& str[i]!=word[0]){
            while(str[i]!= ' ' && i<lens){
                ++i;
            }
            i--;
        }
    }
    printf("Count: [%d]\n%s\n", sum, str);
}
SadiQ228 вне форума Ответить с цитированием
Старый 31.10.2017, 01:42   #25
alexzk
Форумчанин
 
Регистрация: 12.04.2017
Сообщений: 889
По умолчанию

Код:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#define MAX 100

bool is_word_char(char c)
{
    return (c >= '0' && c <= '9') || (c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z') || '_' == c;
}

const size_t findNextWord(const char *src, size_t start)
{
    size_t i;
    for (i = start; *(src + i) && !is_word_char(*(src+i)); ++i);
    return i;
}

const size_t findNextSpace(const char *src, size_t start)
{
    size_t i;
    for (i = start; *(src + i) && is_word_char( *(src+i) ); ++i);
    return i;
}


int main()
{	
	const char *str="sd  qq q_2s words";
	size_t words[MAX];
    
    size_t total = 0;
    for (size_t i = 0, wc = 0; *(str + i);)
    {
        //printf("1. %d\n", i);
        i = findNextWord(str, i);
        //printf("2. %d\n", i);
        
        if (*(str + i))
        {
           ++total;
           words[wc++] = i;
           i = findNextSpace(str, i);
           //printf("3. %d\n", i);
        }
    }
    
    printf("word count:[%u]\n", total);
    
    
    char *tmp = (char*)malloc(strlen(str));
    for (size_t i = 0; i < total - 1; ++i)
    {
        memset(tmp, 0,  words[i+1]  - words[i] + 1);
        memcpy(tmp, str + words[i], words[i+1]  - words[i]);
        printf("%s\n", tmp);
    }
    if (total)
        printf("%s\n", str + words[total - 1]);
    free(tmp);
	return 0;
}
Цитата:
alex@moy-super:~/Work/tests$ gcc count_words.cpp
alex@moy-super:~/Work/tests$ ./a.out
word count:[4]
sd
qq
q_2s
words

Последний раз редактировалось alexzk; 31.10.2017 в 01:45.
alexzk вне форума Ответить с цитированием
Старый 31.10.2017, 01:47   #26
SadiQ228
Пользователь
 
Регистрация: 30.10.2017
Сообщений: 66
По умолчанию

и что это? я что просил написать другой код? почекай мой код выше бро пожалуйста
SadiQ228 вне форума Ответить с цитированием
Старый 31.10.2017, 01:53   #27
ura_111
Участник клуба
 
Регистрация: 14.05.2016
Сообщений: 1,793
По умолчанию

При
Код:
	char word[MAX]="q";
	char str[MAX]="q qq q";
выводит 1.
ura_111 вне форума Ответить с цитированием
Старый 31.10.2017, 01:56   #28
ura_111
Участник клуба
 
Регистрация: 14.05.2016
Сообщений: 1,793
По умолчанию

А не вроде норм.
ura_111 вне форума Ответить с цитированием
Старый 31.10.2017, 01:57   #29
SadiQ228
Пользователь
 
Регистрация: 30.10.2017
Сообщений: 66
По умолчанию

Бро это не шутка? можешь найти почему студия так показывает? у меня потому шо вывод корректный >>>>>прикалываешься там да?))
1.jpg
SadiQ228 вне форума Ответить с цитированием
Старый 31.10.2017, 01:58   #30
SadiQ228
Пользователь
 
Регистрация: 30.10.2017
Сообщений: 66
По умолчанию

фуф, ну шо паходу тема клозед, до скорых встречь друзья
SadiQ228 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Поиск и подсчет слов в memo Mik92 Общие вопросы Delphi 8 24.02.2016 14:07
Поиск слов в строке,СИ shark1 Помощь студентам 0 08.02.2016 22:50
Поиск слов в строке С# mashkmashk Помощь студентам 0 20.04.2013 19:46
Подсчет одинаковых слов в строке versegg Помощь студентам 0 27.05.2012 19:39
Поиск слов в строке Neymexa Общие вопросы C/C++ 3 16.12.2008 18:33