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

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

Восстановить пароль Регистрация
 
ololoshka(
1 / 1 / 0
Регистрация: 17.12.2011
Сообщений: 13
24.06.2013, 13:18     Дан файл, содержащий текст на русском языке. Подсчитать кол-во слов, в которых кол-во гласных и согласных совпадает #1
Дан файл, содержащий текст на русском языке. Подсчитать кол-во слов, в которых кол-во гласных и согласных совпадает.

Никак не могу понять в чем ошибка..

код
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++ Дан файл, содержащий текст на русском языке
Дан файл, содержащий текст на русском языке. Выяснить, входит ли данное слово в указанный текст, и если да, то сколько раз C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
alsav22
5282 / 4801 / 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
5282 / 4801 / 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;
}
Подсчет был, просто добавил сырой код, но считал у меня неверно. Спасибо большое, вы мне очень помогли)
Yandex
Объявления
24.06.2013, 18:58     Дан файл, содержащий текст на русском языке. Подсчитать кол-во слов, в которых кол-во гласных и согласных совпадает
Ответ Создать тему
Опции темы

Текущее время: 06:52. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru