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

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

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

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

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

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

помогите разобраться почему не работает мой код
должен искать слова в строке
запускаю отладку она просто вылетает
Цитата:
#include <stdio.h>
#define MAX 100
int search(char[],char[]);
int main()
{
char word [MAX];
char string [MAX];
for(int i=0; i<MAX;i++){word [i]=0;string [i]=0;}
printf("Enter word:");
gets(word);
printf("Enter string:");
gets(string);
printf("word count:[%d]\n", search(word,string));
return 0;
}
int search(char word[],char string[]){
unsigned int i,j,w;
int sum = 0;
if(strlen(string)==strlen(word)){
return 1;
}
for(i=0; i<strlen(string)-1; i++){ // идем по строке
if(string[i]!=' ' && string[i]==word[0]){ // если первые символы совпали
for (w=0,j=i; string[j]==word[w]; w++,j++){ //проверяем остальные
if(w==strlen(word)-1 && string[j+1]==' '&& string[i-1]==' '){ // слово по середине
sum++;
}
else if(w==strlen(word)-1 && i == 0 && string[j+1]== ' '){ // слово в начале
sum++;
}
else if(w==strlen(word)-1 && string[i-1]== ' ' && j == strlen(string)-1){ слово в конце
sum++;
}
}
}
}
return sum;
}
не нужно писать другое решение нужно обьяснить почему не работает это

Последний раз редактировалось SadiQ228; 30.10.2017 в 22:07.
SadiQ228 вне форума Ответить с цитированием
Старый 30.10.2017, 22:14   #2
ura_111
Участник клуба
 
Регистрация: 14.05.2016
Сообщений: 1,793
По умолчанию

Говоришь, что отладку включал...
А точки останова ставил?
Типа такого:

0.jpg


В чём работаешь?
ura_111 вне форума Ответить с цитированием
Старый 30.10.2017, 22:17   #3
ura_111
Участник клуба
 
Регистрация: 14.05.2016
Сообщений: 1,793
По умолчанию

Попробовал у себя, но у меня куча ошибок (красным подчеркнуло):

1.jpg


Что можешь сказать по этому поводу?
А у тебя тоже такие ошибки?
ura_111 вне форума Ответить с цитированием
Старый 30.10.2017, 22:21   #4
SadiQ228
Пользователь
 
Регистрация: 30.10.2017
Сообщений: 66
По умолчанию

я в qt пишу и там gets не подчеркивает... ну исправь на gets_s че как маленький то? для strlen добавь string.h
трудно говорить у меня отладка прост овылетает вот так:
1.jpg
SadiQ228 вне форума Ответить с цитированием
Старый 30.10.2017, 22:36   #5
ura_111
Участник клуба
 
Регистрация: 14.05.2016
Сообщений: 1,793
По умолчанию

Как ты догадался, что я действительно маленький?

У меня так и не получилось у себя запустить...
Но, в онлайн-компиляторе нормально всё выдало:


0.jpg


Может быть у тебя выбивает от самих значений строк.
А ну введи мои входные данные.
ura_111 вне форума Ответить с цитированием
Старый 30.10.2017, 22:41   #6
ura_111
Участник клуба
 
Регистрация: 14.05.2016
Сообщений: 1,793
По умолчанию

А я программирую в Visual studio 2015...
Так вот, пока на безопасную версию "gets" не перешёл - держало ошибку...
Но теперь всё нормально работает:

0.jpg
ura_111 вне форума Ответить с цитированием
Старый 30.10.2017, 22:45   #7
SadiQ228
Пользователь
 
Регистрация: 30.10.2017
Сообщений: 66
По умолчанию

ну а ты попробу разные значения повводить, например слово q а строка q qq q
ну по разному потести.... мне надо чтобы в студии работало, в студии заработает у меня тоже заработает

Последний раз редактировалось SadiQ228; 30.10.2017 в 22:48.
SadiQ228 вне форума Ответить с цитированием
Старый 30.10.2017, 22:55   #8
ura_111
Участник клуба
 
Регистрация: 14.05.2016
Сообщений: 1,793
По умолчанию

Попробовал, вроде тоже норм.:

0.jpg

А по поводу: "в студии работало .... у меня тоже заработает", - не факт. Может быть у тебя как раз то будет работает обычный "gets", а другой -нет. У меня же такая ситуация (только наоборот). Наверно это зависит от компилятора.
ura_111 вне форума Ответить с цитированием
Старый 30.10.2017, 22:58   #9
SadiQ228
Пользователь
 
Регистрация: 30.10.2017
Сообщений: 66
По умолчанию

в qt нет gets_s
чего сработало, у тебя на скрине скока букв q отдельных? 2! а нашло тока 1
я говорю чет где то мистика какая то
SadiQ228 вне форума Ответить с цитированием
Старый 30.10.2017, 23:07   #10
Black Fregat
Программист
Участник клуба
 
Аватар для Black Fregat
 
Регистрация: 23.06.2009
Сообщений: 1,772
По умолчанию

Вылетает в этой строке
Цитата:
Сообщение от SadiQ228 Посмотреть сообщение
Код:
else if(w==strlen(word)-1 && string[i-1]== ' ' && j == strlen(string)-1){ слово в конце
когда i == 0
Black Fregat вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 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