Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
ololoshka(
1 / 1 / 0
Регистрация: 17.12.2011
Сообщений: 13
#1

Дан файл, содержащий текст на русском языке. Подсчитать кол-во слов, в которых кол-во гласных и согласных совпадает - C++

24.06.2013, 13:18. Просмотров 562. Ответов 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
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
#include <stdio.h>
#include <string.h>
#include <iostream>
#include <Windows.h> 
using namespace std;
int main()
{
   char word[50];
   FILE * pFile;
  
   SetConsoleCP(1251); 
   SetConsoleOutputCP(1251); 
   char glas[] = "УуЕеЫыАаОоЭэЯяЮю";  
   int gl = 0; 
   int sgl = 0;  
   int kolvo = 0;
   char buffer [100];
   char a[50][30]; 
   int len,j=0, k=0;
   int count=0;
   pFile = fopen ("test.txt" , "r");
   if (pFile == NULL) perror ("Error opening file");
   else
   {
     while ( ! feof (pFile) )
     {
       if ( fgets (buffer , sizeof(buffer) , pFile) == NULL ) break;
       fputs (buffer , stdout);
       }
     fclose (pFile);
   }
  
  
  
   pFile = fopen ("test.txt" , "r");
  
   if (pFile == NULL) perror ("Error opening file");
   else
   {
   while ( ! feof (pFile) )
   {
   if ( fgets (buffer , sizeof(buffer) , pFile) == NULL ) break;
       
    len=strlen(buffer);
    for (int i=0; i<len; i++)
    {
    if(buffer[i]!=' ' && buffer[i]!='\n')
   {
   a[j][k]=buffer[i];
   k++;
  }
  else
  {
  if (k!=0)
   {
  a[j][k]='\0';
     j++;
   k=0;
       }
   }
       }
    for (int l=0; l<j;l++)
   { 
  
  
 
  for (int h = 0; h < strlen(a[l]); ++h)  
    {
        for ( j = 0; j < strlen(glas); ++j) 
            if( a[h] == glas[j])  
            { 
                gl++; 
                continue; 
            } 
            else sgl++;  
        
     }  
  
  
  
  
   }
   j=0;
}
fclose(pFile);
}
system("pause");
     return 0;
   }
70 строка
ISO C++ forbids comparison between pointer and integer

Помогите, пожалуйста
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.06.2013, 13:18
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Дан файл, содержащий текст на русском языке. Подсчитать кол-во слов, в которых кол-во гласных и согласных совпадает (C++):

Дан файл, содержащий текст на русском языке - C++
Дан файл, содержащий текст на русском языке. Cоставить в алфавитном порядке список всех слов, встречающихся в этом тексте. Есть код...

Дан файл,содержащий текст на русском языке.& Дана строка, - C++
#1 Дан файл,содержащий текст на русском языке.Определить сколько раз встречается самое длинное слово. #2 Дана строка,состоящая из...

Дан файл, содержащий текст на русском языке. Выяснить, входит ли данное слово в указанный текст, и если да, то сколько раз - C++
Дан файл, содержащий текст на русском языке. Выяснить, входит ли данное слово в указанный текст, и если да, то сколько раз.

Дан файл, содержащий текст на русском языке. Выяснить, входит ли данное слово в указанный текст, и если да, то сколько раз - C++
...

Дан файл, содержащий текст на русском языке. Выбрать из него те символы, которые встречаются в нем только один раз, в том порядке, в котором они в - C++
Дан файл, содержащий текст на русском языке. Выбрать из него те символы, которые встречаются в нем только один раз, в том порядке, в...

Даны файл содержащий текст на русском языке и некоторые буквы - C++
Здравствуйте! Помогите пожалуйста с программой. Дали задачу: Даны файл содержащий текст на русском языке и некоторые буквы.Найти...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
alsav22
5417 / 4813 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
24.06.2013, 14:29 #2
C++
1
if( a[l][h] == glas[j])
ololoshka(
1 / 1 / 0
Регистрация: 17.12.2011
Сообщений: 13
24.06.2013, 15:21  [ТС] #3
Цитата Сообщение от alsav22 Посмотреть сообщение
C++
1
if( a[l][h] == glas[j])
Спасибо.
Программа скомпилировалась и запустилась, но неправильно подсчитывает кол-во, в чем может быть проблема?
alsav22
5417 / 4813 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
24.06.2013, 17:32 #4
А где здесь, вообще, результат подсчёта?

Добавлено через 1 час 31 минуту
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
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
#include <stdio.h>
#include <string.h>
#include <iostream>
#include <Windows.h> 
using namespace std;
 
int main()
{
char word[50];
FILE * pFile;
  
SetConsoleCP(1251); 
SetConsoleOutputCP(1251); 
 
char glas[] = "УуИиЁёЕеЫыАаОоЭэЯяЮю";  
int gl = 0; 
int sgl = 0;  
int kolvo = 0;
char buffer [100];
char a[50][30]; 
int len, j = 0, k = 0, number = 0;
int count = 0;
 
pFile = fopen ("test.txt" , "r");
if (pFile == NULL) perror ("Error opening file");
else
{
    while ( ! feof (pFile) )
    {
        if ( fgets (buffer , sizeof(buffer) , pFile) == NULL ) break;
        fputs (buffer , stdout);
    }
    
    fclose (pFile);
}
  
pFile = fopen ("test.txt" , "r");
if (pFile == NULL) perror ("Error opening file");
else
{
 
    while ( !feof (pFile))
    {
        if (fgets (buffer , sizeof(buffer) , pFile) == NULL ) break;
        
        len = strlen(buffer);
        for (int i = 0; i < len; i++)
        {
            if(buffer[i] !=' ' && buffer[i] != '\n')
            {
                a[j][k] = buffer[i];
                k++;
            }
            else
            {
                if (k != 0)
                {
                    a[j][k] = '\0';
                    j++;
                    k = 0;
                }
            }
        }
 
        for (int l = 0; l < j; l++)
        { 
            for (int h = 0; h < strlen(a[l]); ++h)  
            {
                int m;
                for ( m = 0; m < strlen(glas); ++m)
                {
                    if( a[l][h] == glas[m])  
                    { 
                        gl++; 
                        break; 
                    } 
                }
                if (m == strlen(glas)) sgl++;
            } 
            if (gl == sgl) 
            {
                ++number;
                printf("%s\n", a[l]);
            }
            gl = 0;
            sgl = 0;
        }
        j = 0;
    } 
    
    fclose(pFile);
    
    printf("%s%d\n", "Кличество слов = ", number, '\n');
}
    
    system("pause");
    return 0;
}
ololoshka(
1 / 1 / 0
Регистрация: 17.12.2011
Сообщений: 13
24.06.2013, 18:58  [ТС] #5
Цитата Сообщение от alsav22 Посмотреть сообщение
А где здесь, вообще, результат подсчёта?

Добавлено через 1 час 31 минуту
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
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
#include <stdio.h>
#include <string.h>
#include <iostream>
#include <Windows.h> 
using namespace std;
 
int main()
{
char word[50];
FILE * pFile;
  
SetConsoleCP(1251); 
SetConsoleOutputCP(1251); 
 
char glas[] = "УуИиЁёЕеЫыАаОоЭэЯяЮю";  
int gl = 0; 
int sgl = 0;  
int kolvo = 0;
char buffer [100];
char a[50][30]; 
int len, j = 0, k = 0, number = 0;
int count = 0;
 
pFile = fopen ("test.txt" , "r");
if (pFile == NULL) perror ("Error opening file");
else
{
    while ( ! feof (pFile) )
    {
        if ( fgets (buffer , sizeof(buffer) , pFile) == NULL ) break;
        fputs (buffer , stdout);
    }
    
    fclose (pFile);
}
  
pFile = fopen ("test.txt" , "r");
if (pFile == NULL) perror ("Error opening file");
else
{
 
    while ( !feof (pFile))
    {
        if (fgets (buffer , sizeof(buffer) , pFile) == NULL ) break;
        
        len = strlen(buffer);
        for (int i = 0; i < len; i++)
        {
            if(buffer[i] !=' ' && buffer[i] != '\n')
            {
                a[j][k] = buffer[i];
                k++;
            }
            else
            {
                if (k != 0)
                {
                    a[j][k] = '\0';
                    j++;
                    k = 0;
                }
            }
        }
 
        for (int l = 0; l < j; l++)
        { 
            for (int h = 0; h < strlen(a[l]); ++h)  
            {
                int m;
                for ( m = 0; m < strlen(glas); ++m)
                {
                    if( a[l][h] == glas[m])  
                    { 
                        gl++; 
                        break; 
                    } 
                }
                if (m == strlen(glas)) sgl++;
            } 
            if (gl == sgl) 
            {
                ++number;
                printf("%s\n", a[l]);
            }
            gl = 0;
            sgl = 0;
        }
        j = 0;
    } 
    
    fclose(pFile);
    
    printf("%s%d\n", "Кличество слов = ", number, '\n');
}
    
    system("pause");
    return 0;
}
Подсчет был, просто добавил сырой код, но считал у меня неверно. Спасибо большое, вы мне очень помогли)
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.06.2013, 18:58
Привет! Вот еще темы с ответами:

С клавиатуры вводится текстовая строка на русском языке. Найдите количество гласных и согласных букв. - C++
С клавиатуры вводится текстовая строка на русском языке. Найдите количество гласных и согласных букв. Используйте фильтр для ввода только...

Дана строка: предложение на русском языке. Подсчитать количество содержащихся гласных букв - C++
Пример в паскале(рабочий) program st; var S:String; i,Num:integer; begin Write('S: '); Readln(S);

Дан текст, содержащий от 2 до 30 слов, в каждом из которых от 2 до 10 латинских букв. Напечатать все слова, отличные от последнего слова - C++
дан текст, содержащий от 2 до 30 слов, в каждом из которых от 2 до 10 латинских букв, между соседними словами - не менее одного пробела....

Дан одномерный массив A (n) подсчитать кол-во не совершенных чисел в нём (совершенные = сумме своих делителей - C++
Дан одномерный массив A (n) подсчитать кол-во не совершенных чисел в нём (совершенные = сумме своих делителей)


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
24.06.2013, 18:58
Ответ Создать тему
Опции темы

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