Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

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

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


Донат для форума - использовать для поднятия настроения себе и модераторам

А ещё здесь можно купить рекламу за 25 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru

Ответ
 
Опции темы
Старый 24.11.2016, 23:35   #1
CortesGames
Форумчанин
 
Аватар для CortesGames
 
Регистрация: 23.10.2016
Адрес: Советский союз
Сообщений: 81
Репутация: 10
По умолчанию Подсчёт слов в строке

Мне дали задание: Если в строку длиной до 70 символов, входит четное количество слов, состоящих из четырех букв, то вывести сообщение TRUE.
И вот что я сделал:
Код:
#include <stdio.h>
#include <curses.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>

int main(){
    char str[71],input[5];
    int count=0;
    scanf("%s",input);
    while(strlen(str)<70){
        strcat(str,input);
        if(strlen(str)==70){
            if(count%2==0){
                printf("TRUE\n");
            }else{
                printf("FALSE\n");
                printf("%s\n",str);
            }
            break;
        }
        count++;
    }
}
Я посчитал количество символов которые он выводит- 64, не знаю где ошибка, и есть у меня подозрения что она тут не одна, если найдёте ошибку, подскажите как исправить пожалуйста.
CortesGames вне форума   Ответить с цитированием
Старый 25.11.2016, 09:09   #2
pu4koff
ПрофессионалФорумчанин
 
Аватар для pu4koff
 
Регистрация: 22.05.2007
Сообщений: 9,492
Репутация: 3616
По умолчанию

Тут вообще какая-то наркомания непонятная. Почему вводите максимум 4 символа, когда нужно до 70? Зачем строки объединять? Зачем проверка длины на 70?
Запрашиваете строку str, а не input, потом при помощи strtok пилите на слова
https://ru.wikipedia.org/wiki/Strtok
там пример даже подходящий, слово лексемы только меняете на слова и вот уже есть выделение слов. Внутри цикла проверяете длину слова и считаете количество слов. Попалось слово не из 4 букв - пишем FALSE и выходим из цикла. После цикла проверяем подсчитанное число слов и если там не чётное число - пишем FALSE, чётное - TRUE.
__________________
http://coub.com/view/2hhtg
pu4koff вне форума   Ответить с цитированием
Старый 25.11.2016, 12:49   #3
CortesGames
Форумчанин
 
Аватар для CortesGames
 
Регистрация: 23.10.2016
Адрес: Советский союз
Сообщений: 81
Репутация: 10
По умолчанию

Ясно, я не так понял задание.
CortesGames вне форума   Ответить с цитированием
Старый 26.11.2016, 00:52   #4
CortesGames
Форумчанин
 
Аватар для CortesGames
 
Регистрация: 23.10.2016
Адрес: Советский союз
Сообщений: 81
Репутация: 10
По умолчанию

Я переделал программу, но теперь она выводит TRUE в любом случае, даже если ввожу одно слово из 3 букв. Подскажите где ошибка?
Код:
#include <stdio.h>
#include <curses.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>

int main(){
    char line[71];
    int letter=1,word=0;
    scanf("%s",*&line);
    for(int i=0;i<strlen(line);i++){
        if(isspace(line[i])){
            if(letter==4){
                word++;
            }else{
                letter=0;
            }
        }else{
            letter++;
        }
    }
    if(word%2==0){
        printf("TRUE\n");
    }else{
        printf("FALSE\n");
    }
}

Последний раз редактировалось CortesGames; 26.11.2016 в 01:19.
CortesGames вне форума   Ответить с цитированием
Старый 26.11.2016, 06:13   #5
CortesGames
Форумчанин
 
Аватар для CortesGames
 
Регистрация: 23.10.2016
Адрес: Советский союз
Сообщений: 81
Репутация: 10
По умолчанию

Уже сам решил. Если кому-то интересно вот код. Я нашёл проблему- scanf не считывал пробел, решение этой проблемы я не нашёл, поэтому решил вместо пробела писать _ и всё заработало. Потом нашёлся ещё один баг, если ввести в программу просто слово из четырёх букв, оно выведет FALSE потому что я пока-что не знаю как сделать проверку на конец строки.
Код:
#include <stdio.h>
#include <curses.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>

int main(){
    char line[71];
    int letter=0,word=1;
    scanf("%s",*&line);
    for(int i=0;i<strlen(line);i++){
        if(line[i]=='_'){
            if(letter==4){
                word++;
            }else{
                letter=0;
            }
        }else{
            letter++;
        }
    }
    if(word%2==0){
        printf("TRUE\n");
    }else{
        printf("FALSE\n");
    }
}
__________________
Насылаю баги по фотографии

преимущественно себе

Последний раз редактировалось CortesGames; 26.11.2016 в 06:16.
CortesGames вне форума   Ответить с цитированием
Старый 30.11.2016, 00:33   #6
olej.tsil
Заблокирован
 
Регистрация: 30.11.2016
Сообщений: 215
Репутация: -8
По умолчанию

Цитата:
Сообщение от CortesGames Посмотреть сообщение
Уже сам решил.
Вы русский текст вводите - оптимизму поубавится, и будете приятно удивлены.
olej.tsil вне форума   Ответить с цитированием
Старый 30.11.2016, 10:19   #7
Aleksandr H.
2 the Nation Glory
Профессионал
 
Аватар для Aleksandr H.
 
Регистрация: 27.05.2014
Адрес: Wild West Ukraine
Сообщений: 2,670
Репутация: 1096
По умолчанию

Цитата:
Сообщение от CortesGames Посмотреть сообщение
пока-что не знаю как сделать проверку на конец строки
вариант 1: добавить к строке "_"
вариант 2: насколько я помню, в С строки заканчиваются /0. Проверять не только встречу "_" но и символа конца строки.
__________________
Mailto: media.project@ukr.net
Aleksandr H. вне форума   Ответить с цитированием
Ответ

Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Подсчёт повторяющихся слов в строке Таксист C# (си шарп) 3 18.07.2015 21:48
подсчёт слов neBu4kaMaXiM Помощь студентам 2 30.03.2010 10:00
подсчёт слов Светочка132 Помощь студентам 1 27.03.2010 16:59
подсчёт слов neBu4kaMaXiM Фриланс 13 18.03.2010 19:11
по вводу слов в массив и подсчёт введённых слов -ushёl- Общие вопросы C/C++ 4 16.11.2009 01:45


13:41.


Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2019, Jelsoft Enterprises Ltd.