Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
0 / 0 / 0
Регистрация: 26.10.2014
Сообщений: 17
1

Для каждого из слов предложения вывести количество его вхождений

27.12.2014, 18:56. Показов 863. Ответов 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
47
#include <stdio.h>
#include <conio.h>
#include <locale.h>
#include <string.h>
int l=0, i=0;
char x[10][11]={};
  int colvo(int b)               //поиск кол-ва вхождений данного слова в предложение
 {  int j=0;
    j = i + 1; b = 1;
    for (j; j<l; j++)
        {if (strcmp(x[i], x[j]) == 0) b++;};
    return b;
 }
 
int povtor(int k)              //проверка того, что слово ранее не бралось
{   int r=0;
    while (r<=i-1&& r>=0)
    {if (strcmp(x[i], x[r]) != 0) r++;
    else return k;}; k=1;
    return k;
}
 
void main()
{   setlocale(LC_CTYPE, "Russian");
char c,  q[10][11]={};
int g=0, m=0, p=0, h[10], t=0;
    printf_s("Предложение: \n");
    
do
    { scanf_s("%[^, .-:;!?]", &x[g], 9);           //ввод предложения
        c = getchar();
        g++;
        if ((c == '.')|| (c =='!' )||(c =='?') || (c ==';')){l=g;g = 10;};
              }
while (g<10);
 
    while(i < l)
    {if(povtor(m)==0)i++;
    else{ h[t]=colvo(p);
    strcpy(q[t],x[i]);};
    t++;
    i++;};
for(i=0; i<l; i++)
    {printf_s("%s ",q[i]);
     printf_s("%d\n",h[i]);};
    _getch();
}
Компилирует правильно, но когда ввожу тест, он мне вот так выводит:
как мне избавиться от последнего ввода(-858993460)?
Остальное-то он вводит правильно.
0
Миниатюры
Для каждого из слов предложения вывести количество его вхождений  
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
27.12.2014, 18:56
Ответы с готовыми решениями:

Для каждого слова первого предложения определить количество его вхождений во второе предложение
Даны два предложения. Для каждого слова первого предложения определите количество его вхождений во...

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

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

Напечатать различные слова предложения, указав для каждого из них число его вхождений
ПРИВЕТСТВУЮ ВСЕХ!!!! РЕБЯТА, ПОМОГИТЕ ПОЖАЛУЙСТА, самой времени не хватает:cry:, Напечатать...

__________________

Записывайтесь на профессиональные курсы C++ разработчиков
8
2402 / 1806 / 396
Регистрация: 15.12.2013
Сообщений: 7,768
27.12.2014, 19:05 2
Hellena, советую посмотреть на реализацию этого задания другим способом:
https://www.cyberforum.ru/post4744259.html
1
0 / 0 / 0
Регистрация: 26.10.2014
Сообщений: 17
27.12.2014, 19:14  [ТС] 3
Hellena, советую посмотреть на реализацию этого задания другим способом:
определить количество вхождения каждого слова в заданную строку
Дело в том, что мне нужно именно решение с подпрограммами и используя простейшие функции, т.к. С++ начала осваивать не так давно и преподаватель требует так.
0
2402 / 1806 / 396
Регистрация: 15.12.2013
Сообщений: 7,768
27.12.2014, 19:38 4
Цитата Сообщение от Hellena Посмотреть сообщение
т.к. С++ начала осваивать не так давно и преподаватель требует так.
Ваш код больше похоже на C-шный,чем плюсовый.

Цитата Сообщение от Hellena Посмотреть сообщение
как мне избавиться от последнего ввода(-858993460)?
Не выводить ;-) У вас где-то некорректное обращение.
0
0 / 0 / 0
Регистрация: 26.10.2014
Сообщений: 17
27.12.2014, 19:48  [ТС] 5
Цитата Сообщение от S_el Посмотреть сообщение
Ваш код больше похоже на C-шный,чем плюсовый.
Может быть и так. Просто мы когда работаем в Visual Studio всегда создаём проекты для С++ и я думала, что мы на С++ работаем. Возможно он и С-шный. =))
Цитата Сообщение от S_el Посмотреть сообщение
Сообщение от Hellena
как мне избавиться от последнего ввода(-858993460)?
Не выводить ;-) У вас где-то некорректное обращение.
Вот как раз дело и состоит в том, что я не могу понять откуда у меня это появилось. =((
0
0 / 0 / 0
Регистрация: 26.10.2014
Сообщений: 17
27.12.2014, 19:58  [ТС] 6
Помогите пожалуйста! Не могу найти ошибку. Очень срочно!
Компилирует мне он программу правильно, но вот выдаёт не совсем то, что нужно.
Заранее благодарю за помощь!

Для каждого из слов заданного предложения вывести количество его вхождения в это предложение.
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
47
#include <stdio.h>
#include <conio.h>
#include <locale.h>
#include <string.h>
int l=0, i=0;
char x[10][11]={};
  int colvo(int b)               //поиск кол-ва вхождений данного слова в предложение
 {  int j=0;
    j = i + 1; b = 1;
    for (j; j<l; j++)
        {if (strcmp(x[i], x[j]) == 0) b++;};
    return b;
 }
 
int povtor(int k)              //проверка того, что слово ранее не бралось
{   int r=0;
    while (r<=i-1&& r>=0)
    {if (strcmp(x[i], x[r]) != 0) r++;
    else return k;}; k=1;
    return k;
}
 
void main()
{   setlocale(LC_CTYPE, "Russian");
char c,  q[10][11]={};
int g=0, m=0, p=0, h[10], t=0;
    printf_s("Предложение: \n");
    
do
    { scanf_s("%[^, .-:;!?]", &x[g], 9);           //ввод предложения
        c = getchar();
        g++;
        if ((c == '.')|| (c =='!' )||(c =='?') || (c ==';')){l=g;g = 10;};
              }
while (g<10);
 
    while(i < l)
    {if(povtor(m)==0)i++;
    else{ h[t]=colvo(p);
    strcpy(q[t],x[i]);};
    t++;
    i++;};
for(i=0; i<l; i++)
    {printf_s("%s ",q[i]);
     printf_s("%d\n",h[i]);};
    _getch();
}
Компилирует правильно, но когда ввожу тест, он мне вот так выводит:
как мне избавиться от последнего ввода(-858993460)?
Остальное-то он вводит правильно.
0
Миниатюры
Для каждого из слов предложения вывести количество его вхождений  
2402 / 1806 / 396
Регистрация: 15.12.2013
Сообщений: 7,768
27.12.2014, 20:00 7
Лучший ответ Сообщение было отмечено Hellena как решение

Решение

Цитата Сообщение от Hellena Посмотреть сообщение
Вот как раз дело и состоит в том, что я не могу понять откуда у меня это появилось
У вас при выводе l=3 ,а должно быть 2.Где-то лишний раз инрементируете.

Цитата Сообщение от Hellena Посмотреть сообщение
Просто мы когда работаем в Visual Studio всегда создаём проекты для С++ и я думала, что мы на С++ работаем. Возможно он и С-шный.
А вам не сказали,на чем вы пишите?
Да и код какой-то странный.Зачем вы постоянно завершаете циклы точкой с запятой?

Пока немного переписал функции,но чистый C,знаю недостаточно хорошо,чтобы сходу переписать всю программу:
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
int colvo(int b)               //поиск кол-ва вхождений данного слова в предложение
    {  
    int j=i + 1;
    b = 1;
    for (; j<l; j++)
        if (strcmp(x[i], x[j]) == 0) b++;
    return b;
    }
 
int povtor(int k)              //проверка того, что слово ранее не бралось
    {   
    int r=0;
    while (r<=i-1 && r>=0)
        if (strcmp(x[i], x[r]) != 0) r++;
        else return k;
 
    return 1;
    }
1
0 / 0 / 0
Регистрация: 26.10.2014
Сообщений: 17
27.12.2014, 20:31  [ТС] 8
Спасибо! Сейчас попробую =)))

Добавлено через 22 минуты
Цитата Сообщение от S_el Посмотреть сообщение
У вас при выводе l=3 ,а должно быть 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
42
43
44
45
46
47
48
#include <stdio.h>
#include <conio.h>
#include <locale.h>
#include <string.h>
int l=0, i=0;
char x[10][11]={};
  int colvo(int b)
 {  int j = i + 1; 
  b = 1;
    for (j; j<l; j++)
        {if (strcmp(x[i], x[j]) == 0) b++;}
    return b;
 }
 
int povtor(int k)
{   int r=0;
    while (r<i-1&& r>=0)
    {if (strcmp(x[i], x[r]) != 0) r++;
    else return k;}
    return 1;
}
 
void main()
{   setlocale(LC_CTYPE, "Russian");
char c,  q[10][11]={};
int g=0, m=0, p=0, h[10], t=0;
    printf_s("Предложение: \n");
    
do
    { scanf_s("%[^, .-:;!?]", &x[g], 9);
        c = getchar();
        g++;
        if ((c == '.')|| (c =='!' )||(c =='?') || (c ==';')){l=g;g = 10;};
              }
while (g<10);
 
    while(i < l)
    {if(povtor(m)==0)i++;
    else{ h[t]=colvo(p);
    strcpy(q[t],x[i]);
    t++;};
    i++;}
    
for(i=0; i<t; i++)
    {printf_s("%s ",q[i]);
     printf_s("%d\n",h[i]);}
    _getch();
}
0
0 / 0 / 0
Регистрация: 26.10.2014
Сообщений: 17
27.12.2014, 20:32  [ТС] 9
Всё, ошибка найдена.
Вот текст программы, может кому-нибудь пригодится:
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
47
48
#include <stdio.h>
#include <conio.h>
#include <locale.h>
#include <string.h>
int l=0, i=0;
char x[10][11]={};
  int colvo(int b)              //поиск кол-ва вхождений данного слова в предложение
 {  int j = i + 1; 
  b = 1;
    for (j; j<l; j++)
        {if (strcmp(x[i], x[j]) == 0) b++;}
    return b;
 }
 
int povtor(int k)                        //проверка того, что слово ранее не бралось
{   int r=0;
    while (r<i-1&& r>=0)
    {if (strcmp(x[i], x[r]) != 0) r++;
    else return k;}
    return 1;
}
 
void main()
{   setlocale(LC_CTYPE, "Russian");
char c,  q[10][11]={};
int g=0, m=0, p=0, h[10], t=0;
    printf_s("Предложение: \n");
    
do                                                               //ввод предложения
    { scanf_s("%[^, .-:;!?]", &x[g], 9);  
        c = getchar();   
        g++;
        if ((c == '.')|| (c =='!' )||(c =='?') || (c ==';')){l=g;g = 10;};
              }
while (g<10);                                                   //ввод предложения
 
    while(i < l)
    {if(povtor(m)==0)i++;
    else{ h[t]=colvo(p);
    strcpy(q[t],x[i]);
    t++;};
    i++;}
    
for(i=0; i<t; i++)                            //вывод результата
    {printf_s("%s ",q[i]);
     printf_s("%d\n",h[i]);}
    _getch();
}
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
27.12.2014, 20:32

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

Для каждого элемента списка написать количество его вхождений. TurboProlog
Помогите пожалуйста!Нужно написать программу на турбопрологе Построить список, определяющий...

Вывести все различные слова, указав для каждого из них число его вхождений в последовательность
Дана последовательность, содержащая от 1 до 30 слов, в каждом из которых от 1 до 5 строчных...

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

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

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

Определить количество вхождений в массив значений каждого из его элементов
дано задание &quot;ввести значения элементов массива, задав предварительно их количество. определить...


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

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

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