Форум программистов, компьютерный форум, киберфорум
C для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/190: Рейтинг темы: голосов - 190, средняя оценка - 4.67
1 / 1 / 0
Регистрация: 08.01.2016
Сообщений: 16
1

Подсчет слов в строке

16.01.2016, 13:51. Показов 37209. Ответов 13
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Помогите плз. Срочно нужно.
Задача.
Подсчитать слова в строке.
Надо на языке C.
И обязательно через функцию.
Спасибо заранее.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
16.01.2016, 13:51
Ответы с готовыми решениями:

Подсчет слов в строке
УСЛОВИЕ: Составьте функцию wcount, вычисляющую количество слов в строке. Слово – это подстрока, не...

Подсчёт слов в строке
Составьте функцию wcount, вычисляющую количество слов в строке. Слово – это подстрока, не...

Подсчет количества слов в строке
в последней задаче необходимо подсчитать количество слов в строке, оканчивающейся точкой. Как быть...

Подсчет слов во введенной строке
Как в этой сделать чтоб считала сколько слов ввели? #include <iostream> #include <string>...

13
4 / 4 / 2
Регистрация: 21.05.2015
Сообщений: 44
16.01.2016, 13:56 2
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
void main(void)
{
char s[255];
cout<<"Введите строку: ";
gets(s);
unsigned int a,i;
a=0;
for (i=0;i<strlen(s)-1;i++)
 if ((s[i]==' ') && (s[i+1]!=' '))
  a=a+1;
if (s[0]!=' ')
    a=a+1;
cout<<"В строке: "<<a<<" слов";
getch();
}
Одна секунда гугленья. А теперь просто запихни вычисление слов в функцию отдельную. В функцию передавай массив символьный, а возвращай кол-во слов в строке. Ну или в функции же и выводи.
0
1 / 1 / 0
Регистрация: 08.01.2016
Сообщений: 16
16.01.2016, 14:01  [ТС] 3
Для меня все сложность именно через функцию это оформить. Помоги пожалуйста.
0
4 / 4 / 2
Регистрация: 21.05.2015
Сообщений: 44
16.01.2016, 14:20 4
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
#include <stdio.h>
#include <conio.h>
#include <iostream>
using namespace std;
 
void func(char* s)
{
    unsigned int a, i;
    a = 0;
    for (i = 0; i<strlen(s) - 1; i++)
        if ((s[i] == ' ') && (s[i + 1] != ' '))
            a = a + 1;
    if (s[0] != ' ')
        a = a + 1;
    cout << "В строке: " << a << " слов";
}
 
void main(void)
{
    char s[255];
    cout << "Введите строку: ";
    gets_s(s);
    func(s);
}
0
11 / 10 / 12
Регистрация: 20.12.2015
Сообщений: 38
16.01.2016, 14:44 5
Добрый день! Надеюсь смогу вам помочь:
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
#include <iostream>
#include <stdlib.h>
#include <string.h>
 
using namespace std;
 
int Number_Word (char *str,int n){
 int number_words=0;
 char *pstr;
 pstr=strtok(str," ");
 while (pstr!=NULL){
  pstr=strtok(NULL," ");
  number_words++; }
return (number_words); }
 
int main()
{      const int n= 100;
        char str[n];
        cout<<"Enter the string:\n";
        cin.getline ( str, n);
        cout <<"in string "<< Number_Word(str,n)<<" word(s)"<< endl;
        system("pause");
        return 0;
}
0
1 / 1 / 0
Регистрация: 08.01.2016
Сообщений: 16
16.01.2016, 15:39  [ТС] 6
мне надо на языке С, а не С++

Добавлено через 12 минут
первый код я переделал под С.
Нормально работает, но учитывает цифры за слово.
А как сделать, чтобы цифры не учитывало?
0
bmstu-team
301 / 136 / 91
Регистрация: 10.01.2012
Сообщений: 420
Записей в блоге: 10
16.01.2016, 15:45 7
Пользуйтесь strtok, это функция Си и не страдайте работой с символами.
0
11 / 10 / 12
Регистрация: 20.12.2015
Сообщений: 38
16.01.2016, 16:40 8
Цитата Сообщение от polevawka Посмотреть сообщение
мне надо на языке С, а не С++
Это форум для с++, не для си
0
1 / 1 / 0
Регистрация: 08.01.2016
Сообщений: 16
16.01.2016, 16:58  [ТС] 9
да, я переделал уже под СИ.
А цифры можно как-то исключить? Чтобы их за слова не считало.
0
11 / 10 / 12
Регистрация: 20.12.2015
Сообщений: 38
16.01.2016, 17:01 10
Цитата Сообщение от polevawka Посмотреть сообщение
Чтобы их за слова не считало.
а за что их считать?
0
1 / 1 / 0
Регистрация: 08.01.2016
Сообщений: 16
16.01.2016, 17:38  [ТС] 11
Не знаю даже. Но любые знаки типа запятой, точки и тому подобные считать не должно. И цифры.
0
11 / 10 / 12
Регистрация: 20.12.2015
Сообщений: 38
16.01.2016, 19:31 12
Цитата Сообщение от polevawka Посмотреть сообщение
Не знаю даже.
Ну компилятору их надо чем-то видеть. Их можно сделать пробелами.
0
bmstu-team
301 / 136 / 91
Регистрация: 10.01.2012
Сообщений: 420
Записей в блоге: 10
16.01.2016, 20:32 13

Не по теме:

polevawka, что ж вы упрямитесь...



Кликните здесь для просмотра всего текста
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
#include <stdlib.h>
#include <stdio.h>
#include <conio.h>
#include <string.h>
 
// Количество слов в строке
int countWords(char *str) {
    char delim[] = " .,!-?1234567890-#$%^{}()[]";
    
    int count = 0;
    char *tok = strtok(str, delim);
    while (tok) {
        count++;
        tok = strtok(NULL, delim);
    }
    
    return count;
}
 
const int SIZE = 128;
 
// Основная программа 
int main () {
    char *str = NULL;
    str = (char*) calloc(SIZE, sizeof(char));
    
    gets(str);
    printf("Count of words = %d", countWords(str));
    free(str);
 
    getch();
    return 0;
}
0
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
12458 / 7482 / 1753
Регистрация: 25.07.2009
Сообщений: 13,762
17.01.2016, 00:43 14
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

Чуть короче
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <stdio.h>
#include <string.h>
 
size_t wc(char * str, const char * delim) {
    return ( strtok(str, delim) ) ? 1 + wc(NULL, delim) : 0;
}
 
#define DELIM " \t\n"
 
int main(void) {
    char buf[BUFSIZ];
    
    while ( printf("String: ") && fgets(buf, BUFSIZ, stdin) && *buf != '\n' )
        printf("%lu word(s).\n", wc(buf, DELIM));
    
    return 0;
}
1
17.01.2016, 00:43
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
17.01.2016, 00:43
Помогаю со студенческими работами здесь

Подсчет слов-чисел в строке
Здравствуйте. Необходимо подсчитать в произвольной строке слова-числа, т.е., например, строка:...

Подсчет слов и символов во введенной строке
Здравствуйте. Помогите разрешить задачу. В консоли вводится управляющий символ (например &amp;) и...

Подсчет количества одинаковых слов во введенной строке
помогите с заданием. Программа должна считать количество одинаковых слов в веденной строке, нужное...

Подсчёт слов в строке, символов в словах строки
Помогите, пожалуйста, срочно С консоли вводится строка слов. Необходимо проанализировать строку и...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru