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

Посимвольное считывание из файла и проверка на наличие (+ показать количество операторов) - C++

Восстановить пароль Регистрация
 
sebis
0 / 0 / 0
Регистрация: 19.10.2015
Сообщений: 8
18.06.2016, 14:07     Посимвольное считывание из файла и проверка на наличие (+ показать количество операторов) #1
Условия задачи:
Из файла необходимо считывать посимвольно (нельзя прочитать сразу весь файл или по строкам). Так же нельзя дублировать все содержимое файла в оперативную память.
Задача:
Дан текстовый файл, в котором находится синтаксический правильный текст программы на с++. необходимо сосчитать количество if операторов а так же сколько операторов цикла (for, while) есть в данном тексте. Следует считать что текст программы не будет содержать комментариев и что символы не будут отображаться в текстовых литералах.
И вот до чего пока дошла моя логика:

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
#include <iostream>
#include <fstream>
using namespace std;
 
int main(int argc, const char * argv[])
{
    fstream file;
    char b='\n', d='\n', f, c;
    int count_if=0, count_cik=0;
    file.open ("prog.txt", ios::in);
    file.get(f);
    while(file)
    {
        if(b=='if') count_if++;
        cout<<f;
        b=f;
        file.get(f);
    };
    file.get(c);
    while(file)
    {
        if(d=='for' or d=='while') count_cik++;
        cout<<c;
        d=c;
        file.get(c);
    };
    
    file.close();
    cout<< endl << count_if << endl << count_cik << endl;
    
    return 0;
    
}
данный код для поиска в тексте допустим ( * , / , +, -, =) должен работать вроде. однако для (if, for ,while) появляется проблема.

не подскажите, где я свернул не туда? или если есть решения подобных задач, буду благодарен.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.06.2016, 14:07     Посимвольное считывание из файла и проверка на наличие (+ показать количество операторов)
Посмотрите здесь:

C++ Посимвольное считывание из файла в массив int
C++ Посимвольное считывание из файла
C++ посимвольное считывание
Посимвольное считывание из файла C++
Проверка на наличие файла C++
C++ Проверка на наличие файла
C++ Перегрузка операторов вывода в файл и считывание из файла
Проверка файла на наличие в папке C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
zss
Модератор
Эксперт С++
 Аватар для zss
5943 / 5548 / 1783
Регистрация: 18.12.2011
Сообщений: 14,170
Завершенные тесты: 1
18.06.2016, 14:53     Посимвольное считывание из файла и проверка на наличие (+ показать количество операторов) #2
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
int main()
{
    fstream file;
    string f;
    int count_if=0, count_cik=0;
    file.open ("prog.txt", ios::in);
// делаем грубое предположение,что ключевые слова заканчиваются пробельными символами 
    while(file>>f)
    {
        if(f=="if") count_if++;
        else if(f=="for" || f=="while") count_cik++;
    }
    file.close();
    cout<< endl << count_if << endl << count_cik << endl;
    return 0;
}
sebis
0 / 0 / 0
Регистрация: 19.10.2015
Сообщений: 8
19.06.2016, 12:23  [ТС]     Посимвольное считывание из файла и проверка на наличие (+ показать количество операторов) #3
ам, спасибо, однако возникла проблема дальше чем один ИФ он не считает.

Добавлено через 8 минут
причем это если читает в синтаксе с++, а отдельный файл допустим с if if do do for while if считает корректно
Yandex
Объявления
19.06.2016, 12:23     Посимвольное считывание из файла и проверка на наличие (+ показать количество операторов)
Ответ Создать тему
Опции темы

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