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

Найти количество букв в строке

28.11.2009, 18:02. Показов 2831. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
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
34
35
36
37
38
39
40
41
42
43
44
// 23=Количество слов в строке.cpp : Defines the entry point for the console application.
// Найти количество букв в каждом слове строки, разделитель - пробел.
 
#include "stdafx.h"
#include "string.h"
#include "conio.h"
 
void kolvo(char *S, int N);
 
int _tmain(int argc, _TCHAR* argv[])
{  int n;
   
   scanf("%d", &n);
 
   char s[30];
   gets(s);
   flushall();
 
   kolvo(s,n);
   
   puts(s);
   getch();
    return 0;
}
 
void kolvo(char *S, int N)
{ char *p;
  //int q[15];
  int k;
  
    p=strtok(S," ");
    
    
   for(int i=0;i<N;i++)
   {   k=0;     
            if(q[j]!= 0)
           k++;
 
             p=strtok(NULL," ");
        }
   }
    
 
}
Каков алгоритм решения? Сначала используем strtok, потом ставим счетчик и он обнуляется тогда, когда каким-то образом(?) находит пробел....?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
28.11.2009, 18:02
Ответы с готовыми решениями:

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

В заданной строке найти количество строчных букв
В заданной строке найти количество строчных букв.Полученное число вставить в начало строки.Максимальное число символов в строке - 80.

Найти слово в строке, в котором минимальное количество согласных букв
помогите с программой... мое написанное: int glas; S1={'a','e','y','o','i','u'} //гласные...смысл таков чтобы если не яв-ся гласным...

7
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
 Аватар для easybudda
12843 / 7592 / 1766
Регистрация: 25.07.2009
Сообщений: 13,973
28.11.2009, 18:55
NastiKor, у функции strtok есть одна неприятная особенность - она портит строку (вставляет 0 на месте символов назначенных разделителями). Если со строкой потом ещё что-то делать нужно, то слова можно вот так посчитать:
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
34
35
36
37
38
39
#include <stdio.h>
#include <ctype.h>
 
/* указатель на следующее слово в строке, или 0, если слова кончились */
 
char *nextWord(char *str){
        char *p;
 
        for ( p = str; *p != '\0' && !isspace(*p) && !ispunct(*p); p++ )
                ;
 
        if ( *p == '\0' )
                return NULL;
 
        while ( isspace(*p) || ispunct(*p) )
                p++;
 
        return ( *p == '\0' ) ? NULL : p;
}
 
int main(void){
    char buf[BUFSIZ], *p;
    size_t count;
    
    while ( 1 ){
        printf("Enter some string (just enter - exit): ");
        fgets(buf, BUFSIZ, stdin);
        
        if ( *buf == '\n' )
            break;
        
        for ( p = buf, count = 0; p != NULL; p = nextWord(p), count++ )
            ;
        
        printf("Counted %d words\n", count);
    }
    
    return 0;
}
0
Эксперт по математике/физике
 Аватар для Том Ардер
4218 / 3418 / 396
Регистрация: 15.06.2009
Сообщений: 5,818
28.11.2009, 19:31
Топик: Найти количество букв в строке
В тексте:
Цитата Сообщение от NastiKor Посмотреть сообщение
// 23=Количество слов в строке.cpp
// Найти количество букв в каждом слове строки, разделитель - пробел.
Что же всё-таки надо найти?
0
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
 Аватар для easybudda
12843 / 7592 / 1766
Регистрация: 25.07.2009
Сообщений: 13,973
28.11.2009, 20:22
Цитата Сообщение от Том Ардер Посмотреть сообщение
Что же всё-таки надо найти?
А кстати да
Вот так и слова, и буквы в них считает, строку, правда, портит...
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
#include <stdio.h>
#include <string.h>
 
int main(void){
    char buf[BUFSIZ], *pW, *pL;
    size_t words;
    
    while ( 1 ){
        printf("\nEnter some string (just enter - exit): ");
        fgets(buf, BUFSIZ, stdin);
        
        if ( *buf == '\n' )
            break;
            
        buf[strlen(buf) - 1] = '\0';
        
        for ( words = 0, pW = strtok(buf, " "); pW != NULL; words++, pW = strtok(NULL, " ") ){
            for ( pL = pW; *pL; pL++ )
                ;
            printf("Word \"%s\" contains %d letters\n", pW, pL - pW);
        }
        printf("Found %d words in string\n", words);
    }
    
    return 0;
}
0
 Аватар для Gravity
577 / 571 / 65
Регистрация: 29.01.2009
Сообщений: 1,274
28.11.2009, 20:51
Цитата Сообщение от easybudda Посмотреть сообщение
строку, правда, портит...
Можно ее скопипастить во временный буфер и резать уже его.
0
1 / 1 / 0
Регистрация: 05.10.2009
Сообщений: 101
28.11.2009, 21:26  [ТС]
И правда не уточнила. Вот пример:

fgdfsg dfg dfvxx sr
6 3 5 2

Добавлено через 1 минуту
Надо сделать обязательным использованием функции

Добавлено через 10 минут
Идейно я так понимаю. В главной функции у нас так:

1. Использовать strtok и ввести массив(так это называется правильно?) p, т.е.
C
1
2
char*p=strtook(s," ")
p=strtook(NULL," ")
2. Поставить цикл и ещё перед ним счетчик. Счетчик обнуляется после того, как увидел пробел. Но до чего делать сам цикл for ?
C
1
2
3
4
5
6
7
8
for(int i=0; i< 30 ;i++)
 { k=0;
   for(int j=i+1;j<DlinaSlova; j++)
   {
      k++;
    }
  
 }
Этот k нужно записывать еще в какой-то массив?

Добавлено через 8 минут
Вот , немного поменяла код:

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
34
35
36
37
38
39
40
41
42
43
44
45
46
// 23=Количество слов в строке.cpp : Defines the entry point for the console application.
// Найти количество слов в строке, разделитель - пробел.
 
#include "stdafx.h"
#include "string.h"
#include "conio.h"
 
void kolvo(char *S, int *Q); // *S- массив слов, *Q- массив цифр, которые мы ищем
 
int _tmain(int argc, _TCHAR* argv[])
{  int n;
   
   scanf("%d", &n);
 
   char s[30];
   gets(s);
   flushall();
 
   kolvo(s,q);
   
   puts(s);
   getch();
    return 0;
}
 
void kolvo(char *S, int *Q)
{ char *p;
  int q[15];
  int k;
  
    p=strtok(S," ");
    
    for(int i=0;i<30;i++)
   {           k=0;     
                  if(Q[j]!= 0)   // Если правильно поняла, пробел - это 0, потом до него 
                                                              //делаем цикл if
                    {
                        k++;
                    }
 
             p=strtok(NULL," ");
        
    
    
 
}
Скажите, где ошибка и до каких пор делать цикл по j ?
0
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
 Аватар для easybudda
12843 / 7592 / 1766
Регистрация: 25.07.2009
Сообщений: 13,973
28.11.2009, 22:37
NastiKor, вот Вы, барышня, простых путей не ищете... Ну с функцией - так с функцией:
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
34
35
36
37
38
#include <stdio.h>
#include <string.h>
 
/* lCount - печатает количество букв в каждом слове предложения, возвращает количество слов */
size_t lCount(char *s){
    size_t words;
    char *pWord;
    
    if ( !s || !(*s) )
        return 0;
    
    for ( words = 0, pWord = strtok(s, " "); pWord != NULL; words++, pWord = strtok(NULL, " ") )
        printf("%d ", strlen(pWord));
    printf("\n");
    
    return words;
}
 
int main(void){
    char buf[BUFSIZ], *pW, *pL;
    size_t words;
    
    while ( 1 ){
        printf("\nEnter some string (just enter - exit): ");
        fgets(buf, BUFSIZ, stdin);
        
        if ( *buf == '\n' )
            break;
            
        buf[strlen(buf) - 1] = '\0';
        
        printf("%s\n", buf);
        words = lCount(buf);
        printf("Found %d words in string\n", words);
    }
    
    return 0;
}
0
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
 Аватар для easybudda
12843 / 7592 / 1766
Регистрация: 25.07.2009
Сообщений: 13,973
29.11.2009, 13:39
Цитата Сообщение от Gravity Посмотреть сообщение
Можно ее скопипастить во временный буфер и резать уже его.

Не по теме:

C++
1
2
system("Ctrl+C");
system("Ctrl+V");
:D

1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
29.11.2009, 13:39
Помогаю со студенческими работами здесь

Работа со строками. Нужно найти количество глассных букв в строке
Помогите пожалуйста, почему не хочет работать корректно данный код? (с англ символами всё хорошо, а вот с русскими проблема) #include...

Найти количество содержащихся в строке строчных латинских и русских букв
Дана строка. Подсчитать общее количество содержащихся в ней строчных латинских и русских букв. на Си. Спасибо)

Подсчитать во введенной строке количество букв ‘Л’ и количество букв ‘И’
&quot;Подсчитать во введенной строке количество букв ‘Л’ и количество букв ‘И’.&quot; Буквы можно на латыне писать. Вообще не могу сообразить...

В каждой строке массива найти количество букв "с"
В каждой строке массива найти кол-во букв &quot;с&quot;, расположенный слева от буквы ш (известно, что буква &quot;ш&quot; в каждой строке...

Найти количество русских букв и количество цифр в текстовой строке
Найти количество российских букв и количество цифр в текстовой строке


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
Фото: Daniel Greenwood
kumehtar 13.11.2025
Расскажи мне о Мире, бродяга
kumehtar 12.11.2025
— Расскажи мне о Мире, бродяга, Ты же видел моря и метели. Как сменялись короны и стяги, Как эпохи стрелою летели. - Этот мир — это крылья и горы, Снег и пламя, любовь и тревоги, И бескрайние. . .
PowerShell Snippets
iNNOKENTIY21 11.11.2025
Модуль PowerShell 5. 1+ : Snippets. psm1 У меня модуль расположен в пользовательской папке модулей, по умолчанию: \Documents\WindowsPowerShell\Modules\Snippets\ А в самом низу файла-профиля. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru