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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 27.02.2014, 22:34   #1
dreamboy
Пользователь
 
Регистрация: 27.02.2014
Сообщений: 12
По умолчанию Cи.Найти слово в строке.

Найти слова в строке содержащие слово "apple".
Не понимаю где ошибка?Почему не запускается?
Код:
#include <stdio.h>
#include <stdlib.h>
#define LENGHT 80    
#define WORDL 15     
#define WCNT 40      
int main()
{
    int i, j, k,l;
    int c;
    char str[LENGHT];        
    char word[WORDL];        
    char dict[WCNT][WORDL];  

    
    for (i = 0; (c = getchar()) != '\n'; i++)
        str[i] = c;
        str[i] = '\0';
        i = 0;
        k = 0;

    while (str[i] != '\0')
    {
        for (; str[i] != '\0' && str[i] == ' '; i++)
        {
            ;
        }
          }
       
        j = 0;

        for (; str[i] != '\0' && str[i] != ' '; i++)
        {
            word[j] = str[i];
            j++;
        }
        word[j]='\0';
        for(i=0; i<k; i++){
        if(i == 'a' && i == 'p' &&  i == 'l' && i == 'e'){
                    j++;
                    }
                    k=0;
           for (j = 0; word[j] != '\0'; j++)
				dict[k][j] = word[j];

			dict[l][j] = '\0';
			k++;

    for(i=0;i<k;i++)
        printf("%15s\n", dict[i]);
 return 0;
}

Последний раз редактировалось dreamboy; 27.02.2014 в 22:36.
dreamboy вне форума Ответить с цитированием
Старый 28.02.2014, 00:19   #2
nikolay1982
Пользователь
 
Регистрация: 31.12.2013
Сообщений: 47
По умолчанию

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

char *separators=" .,?!<>;:-+{}[]|()";
int main()
{
    char buf[256],buf2[256],*s;
    printf("input string:");
    gets(buf);
    //strcpy(buf,"abcdef dapple1 apple2 app1 app2");
    strcpy(buf2,buf);
    s=strtok(buf2,separators);
    while(s){
        //printf("\ns:%s",s);
        if (strstr(s,"apple")) printf("\nfind:%s",s);
        s=strtok(NULL,separators);
        }
    return 0;
}
nikolay1982 вне форума Ответить с цитированием
Старый 28.02.2014, 10:51   #3
dreamboy
Пользователь
 
Регистрация: 27.02.2014
Сообщений: 12
По умолчанию

Спасибо, конечно.Но мне хотелось бы понять что не так в моем коде
dreamboy вне форума Ответить с цитированием
Старый 28.02.2014, 11:04   #4
nikolay1982
Пользователь
 
Регистрация: 31.12.2013
Сообщений: 47
По умолчанию

Код:
 if(i == 'a' && i == 'p' &&  i == 'l' && i == 'e'){
Всегда ложно,0
И не aple , a apple
nikolay1982 вне форума Ответить с цитированием
Старый 28.02.2014, 21:23   #5
dreamboy
Пользователь
 
Регистрация: 27.02.2014
Сообщений: 12
По умолчанию

Объясните, пожалуйста, новичку почему ложно?
dreamboy вне форума Ответить с цитированием
Старый 28.02.2014, 21:39   #6
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,291
По умолчанию

Потому что переменная не может одновременно равняться нескольким различным значениям.
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA вне форума Ответить с цитированием
Старый 28.02.2014, 21:44   #7
Smitt&Wesson
Старожил
 
Аватар для Smitt&Wesson
 
Регистрация: 31.05.2010
Сообщений: 13,543
По умолчанию

Цитата:
Сообщение от BDA Посмотреть сообщение
Потому что переменная не может одновременно равняться нескольким различным значениям.
Меня запинают
Бьём в лоб напрямую, или через рекурсию?
Пиши пьяным, редактируй трезвым.
Справочник по алгоритмам С++ Builder

Последний раз редактировалось Smitt&Wesson; 28.02.2014 в 21:46.
Smitt&Wesson вне форума Ответить с цитированием
Старый 28.02.2014, 21:48   #8
dreamboy
Пользователь
 
Регистрация: 27.02.2014
Сообщений: 12
По умолчанию

Цитата:
Сообщение от BDA Посмотреть сообщение
Потому что переменная не может одновременно равняться нескольким различным значениям.
Ааа..спасибо.
Заменю на следующие:
Код:
if(i == 'a')
 j++;
if(i == 'p')
j++;
if(i == 'l')
j++;
if(i == 'e')
j++;
dreamboy вне форума Ответить с цитированием
Старый 28.02.2014, 21:51   #9
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,291
По умолчанию

Smitt&Wesson, я Вас не понял
dreamboy, просто нужно && ("и") на || ("или") заменить.
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA вне форума Ответить с цитированием
Старый 28.02.2014, 22:13   #10
dreamboy
Пользователь
 
Регистрация: 27.02.2014
Сообщений: 12
По умолчанию

Но у меня опять без ошибок и безрезультатно.Я разочарован. Не могу понять в чем дело теперь.
dreamboy вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Найти самое длинное слово в строке. Mineralkaaaa Помощь студентам 9 16.12.2012 21:01
Требуется найти в строке самое длинное слово (С++) *Надежда* Помощь студентам 7 20.11.2012 19:16
Найти самое длинное слово в строке (массив) bot.bat Помощь студентам 2 05.11.2011 00:40
Найти первое слово в строке Delphinchik Помощь студентам 10 24.08.2010 11:02
Язык С : Найти наиболее часто встречаемое слово в строке delphi_HOBu4oK Помощь студентам 0 15.05.2010 12:18