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

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

Войти
Регистрация
Восстановить пароль
 
VitekSR
0 / 1 / 0
Регистрация: 20.10.2013
Сообщений: 234
#1

Найти только определенные знаки препинания - C++

28.03.2014, 09:45. Просмотров 250. Ответов 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
#include <iostream>
#include <fstream>
#include <locale>
using namespace std;
 
int main()
{   
    setlocale (0, "");
    ifstream inp ("D://text.txt");
    char delims[]=".,;?!-:";
    if (!inp)
    {
        cout<<"Ошибка чтения файла!"<<endl;
        return 1;
    }
    char str [30][80];
    int k=0; //кол-во строк в файле
    int n=0; //кол-во знаков препинания
 
      while (!inp.eof())
    {
        inp.getline(str[k],79);
        for (int i=0; i<=80; i++)
        {
            for (int j=0; j<=10; j++)
        if (str[k][i]==delims[j])
            n++;
        }
        k++;
    }
    
    inp.close();
        cout<<"Количестов знаков препинания: "<<n<<endl;
    ofstream out("D//text.txt");
    out.close();
    system ("pause");
    return 0;
}
C++
1
2
3
4
5
6
7
8
9
10
11
while (!inp.eof())
    {
        inp.getline(str[k],79);
        for (int i=0; i<=80; i++)
        {
            for (int j=0; j<=10; j++)
        if (str[k][i]==delims[j])
            n++;
        }
        k++;
    }
Условие считает все символы, а мне нужно чтобы считало только определенные.
И еще, объясните, пожалуйста, каждую строчку этого условия, и по возможности помогите упростить его
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.03.2014, 09:45     Найти только определенные знаки препинания
Посмотрите здесь:

C++ Удалить знаки препинания из строки
удаляет все знаки препинания C++
C++ Знаки препинания в строке
Текстовые файлы. Переписать в файл g все знаки препинания файла f. C++
Строка: В тексте посчитать знаки препинания и вывести их количество C++
Функция getline(). Как исключить знаки препинания (символы)? C++
C++ Вычеркните из строки все знаки препинания (с++)
Подсчитать гласные буквы и знаки препинания C++
C++ Проверить является ли строка палиндромом, учитывая пробелы и знаки препинания
C++ В текстовом файле подсчитать знаки препинания
C++ В строке заменить все знаки препинания на пробелы. Вывести результат
C++ Отзеркалить каждое слово в строке, не трогая знаки препинания

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
zss
Модератор
Эксперт С++
 Аватар для zss
6112 / 5715 / 1849
Регистрация: 18.12.2011
Сообщений: 14,597
Завершенные тесты: 1
28.03.2014, 10:07     Найти только определенные знаки препинания #2
Если имеется ввиду условие
Цитата Сообщение от VitekSR Посмотреть сообщение
if (str[k][i]==delims[j])
То оно считает именно определенные символы,
которые хранятся в массиве delims.
Другое дело, что они считаются все в одну переменную.
Если надо посчитать отдельно, то сделайте n массивом
и вместо n++ напишите n[j]++
VitekSR
0 / 1 / 0
Регистрация: 20.10.2013
Сообщений: 234
28.03.2014, 10:49  [ТС]     Найти только определенные знаки препинания #3
Ошибка 1 error C2109: для индекса требуется массив или указатель c:\users\виктор\documents\visual studio 2010\projects\защита лабы 2(2семестр)\защита лабы 2(2семестр)\защита лабы2.cpp 27
VitekSR
0 / 1 / 0
Регистрация: 20.10.2013
Сообщений: 234
30.03.2014, 13:58  [ТС]     Найти только определенные знаки препинания #4
Подниму!

Добавлено через 19 часов 48 минут
Подниму!
alsav22
5410 / 4806 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
30.03.2014, 16:51     Найти только определенные знаки препинания #5
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 <iostream>
#include <fstream>
#include <locale>
using namespace std;
 
int main()
{   
    setlocale (0, "");
    ifstream inp ("text.txt");
    char delims[] = ".,;?!-:";
    if (!inp)
    {
        cout<<"Ошибка чтения файла!"<<endl;
        return 1;
    }
    char str [30][80];
    int k=0; //кол-во строк в файле
    int n=0; //кол-во знаков препинания
 
     while (inp.getline(str[k], 80))
    {
        
        for (int i = 0; i < strlen(str[k]); i++)
        {
            for (int j = 0; j < strlen(delims); j++)
                if (str[k][i] == delims[j])
                    n++;
        }
        k++;
    }
    
    inp.close();
    cout <<"Количестов строк: " << k << endl;
    cout <<"Количестов знаков препинания: " << n << endl;
 
    //ofstream out("D//text.txt");
    //out.close();
    
    system ("pause");
    return 0;
}
В файле:
"Myronchuk, - 1997: higher "
Tonenchuk_;1969 average.
Tselyudyna, 1999 pochatkavo!
Миниатюры
Найти только определенные знаки препинания  
Yandex
Объявления
30.03.2014, 16:51     Найти только определенные знаки препинания
Ответ Создать тему
Опции темы

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