Форум программистов, компьютерный форум, киберфорум
C для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.67/3: Рейтинг темы: голосов - 3, средняя оценка - 4.67
0 / 0 / 0
Регистрация: 27.03.2012
Сообщений: 33
1

Подсчитать количество букв в слове текста с заданным номером

18.03.2013, 01:24. Показов 564. Ответов 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
25
26
27
28
29
30
31
32
33
34
#include <stdio.h>
#define k 81
 
int n,z;
int StrSpn(char *s, int n){
    int i,j, l=0,p=0;
    while (1){
      for(i = 0; s[i] !='\0'; i++) {
        if(s[i]==' ') {p=p+1;
        if (p==n){
                  for (j=i-1; s[j]=' ';j--){
                      l=l+1;
                  }
                  }
                  break;
        }
       
    }
   break;
}
printf("Result: %d", l); 
 
}
;
int main(void) {
char s[k];
printf("Type string s:\n");
scanf("%s",s);
printf("Type number n:\n");
scanf("%d",&n);
StrSpn(s,n);
getch();
 return 0;
 }
Вводим строку,указываем номер слова и программа подсчитывает количество букв в нём. Программа не работает верно. Помогите решить проблему.
0
Заказывайте контрольные, курсовые и дипломы здесь.
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
18.03.2013, 01:24
Ответы с готовыми решениями:

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

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

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

Вводится предложение. Подсчитать количество слов и подсчитать количество букв в самом длинном слове
Неправильно считает количество букв в наибольшем слове. #include &lt;iostream&gt; #include &lt;cstdio&gt;...

4
Невнимательный
436 / 358 / 128
Регистрация: 08.02.2013
Сообщений: 1,001
Записей в блоге: 2
18.03.2013, 04:47 2
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
#include <stdio.h>
#include <conio.h> // getch();
#define K 81
 
// функция ничего не возвращает, поэтому void
void StrSpn(char s[K], int n){
    int i;  // iterator // разбирался в переменных
    int l=0; // count of chars
    int p=0; // num of words
// while(1) c break в конце не нужен, выполнится 1 раз
 
    for(i = 0; s[i] !='\0'; i++) {
        if(s[i]==' ') {
            while(s[(++i)] == ' ');// пропуск всех пробелов
        }
        if (s[i] =='\0') break;// может быть '\0'
        ++p; // текущий номер слова (начиная с 1)
        if (p==n){ // j не нужен , хватит i
                for (; s[i] /*может быть '\0'*/ && s[i] !=' '; i++) ++l;
                break; // нужен здесь
        }
    }
    printf("\nResult: %d\n", l); 
}
 
int main(void) {
    int n;
    char s[K];
 
    printf("\nType string s:");
    scanf("%[^\r\n]", s);
    // для scanf() пробелы это разделители
    printf("\ndata is  '%s'", s);
    
    printf("\nType number n:");
    scanf("%d", &n);
    
    StrSpn(s, n);
    getch();
     return 0;
 }
непонятно почему у меня один раз из 5и выдало не правильный результат

Добавлено через 13 минут
вообще чё-то ложает тоже код

Добавлено через 38 минут
забыл пропускать символы ненужных слов, что-то типа такого значит
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
void StrSpn(char s[K], int n){
    int i=0;    // iterator // разбирался в переменных
    int c=0; // count of chars
    int p=0; // num of words
 
    while (1) {
        if(s[i]==' ') {
            while( s[(++i)] == ' ');// пропуск всех пробелов
        }
        if (s[i] =='\0') break;// может быть '\0'
        ++p; // текущий номер слова (начиная с 1)
        if (p == n) { // j не нужен , хватит i
                for (; s[i] && s[i] != ' '; ++i) ++c;
                break;
        } else for (; s[i] && s[i] != ' '; ++i);
    }
    printf("\nResult: %d\n", c); 
}
Добавлено через 41 минуту
понял то что было сначала
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
void StrSpn(char s[K], int n){
    int l=0; // count of chars
    int p=0; // num of words
    int i,j;    // iterator
 
    for(i = 0; s[i] !='\0'; i++) {
        if(s[i]==' ') {
            ++p;
            if (p==n){
                for (j=i-1; s[j] !=' ' && j>=0; j--) ++l;
                break;
            }
        }
    }
    printf("\nResult: %d\n", l); 
}
только поменял условие s[j] !=' ' && j>=0
и убрал это while(1){break;}
0
0 / 0 / 0
Регистрация: 27.03.2012
Сообщений: 33
18.03.2013, 11:26  [ТС] 3
Всё прога выполняет правильно, за исключением подсчёта первого и последнего слова((
0
Невнимательный
436 / 358 / 128
Регистрация: 08.02.2013
Сообщений: 1,001
Записей в блоге: 2
18.03.2013, 12:44 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
25
26
27
28
29
30
31
32
#include <stdio.h>
#include <conio.h> // getch();
#define K 81
 
void StrSpn(char* s, int n){
    int l=0; 
    int p=0;
    int i,j; 
    for(i = 0; ; i++) {
        if (s[i]=='\0' || s[i]==' ') {
            ++p;
            if (p==n) {
                for (j=i-1; s[j] !=' ' && j>=0; j--) ++l;
                break;
            }
    if(s[i]=='\0') break;
        }
    }
    printf("\nResult: %d\n", l); 
}
 
int main(void) {
    int n;
    char s[K];
    printf("\nType string s:");
    scanf("%[^\r\n]", s);
    printf("\nType number n:");
    scanf("%d", &n);
    StrSpn(s, n);
    getch();
     return 0;
 }
или goto какое-нибудь прикрутить

//насчёт первого слова не замечал, если не навставлять пробелов в начале строки
1
0 / 0 / 0
Регистрация: 27.03.2012
Сообщений: 33
18.03.2013, 13:00  [ТС] 5
Спасибо, теперь работает и для последнего. И с первым тоже (во время предыдущих запусков , когда вводилось только одно слово,то писало что длинна 0, сейчас всё правильно)
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
18.03.2013, 13:00

Заказываю контрольные, курсовые, дипломные работы и диссертации здесь.

Дан текст, в котором слова разделены одним пробелом. а) Подсчитать количество слов в данной строке. б) Подсчитать количество букв а в последнем слове
Дан текст, в котором слова разделены одним пробелом. а) Подсчитать количество слов в данной строке....

Подсчитать количество слов в данной строке, подсчитать количество букв а в последнем слове
Дан текст. а) Подсчитать количество слов в данной строке. б) Подсчитать количество букв а в...

В текстовом файле в строке с заданным номером k>0 подсчитать количество цифр
В текстовом редакторе создать файл из нескольких строк символов. Вывести его содержимое на экран. В...

Подсчитать количество букв о, м, и к в слове
помогите пожалуйста составить программу &lt;Пользователь вводит слово. Подсчитать количество букв...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.