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

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

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

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

18.06.2016, 14:07. Просмотров 180. Ответов 2
Метки нет (Все метки)

Условия задачи:
Из файла необходимо считывать посимвольно (нельзя прочитать сразу весь файл или по строкам). Так же нельзя дублировать все содержимое файла в оперативную память.
Задача:
Дан текстовый файл, в котором находится синтаксический правильный текст программы на с++. необходимо сосчитать количество 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) появляется проблема.

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

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

Посимвольное считывание из файла - C++
Нужно считать данные из файла посимвольно, при этом не все подряд, а, например из 1й строчки с 5 символа, из 7 с 8 и тд. Кол-во строчек...

Посимвольное считывание из файла в массив int - C++
Вообщем есть файл с числами(там всегда будут числа). Примерно такого содержания Нужно по символьно считать все цифры в...

Перегрузка операторов вывода в файл и считывание из файла - C++
Здравствуйте! Нужно перегрузить операторы вывода в файл и считывание из файла массива. ofstream&amp; operator &lt;&lt; (ofstream &amp;f, matr &amp;A) { ...

Проверка на наличие файла - C++
Добрый день. Подскажите вот такую проблему. Как сделать проверку на наличие файла? Мне нужно сделать так, если файл(conf.mysql)...

Проверка на наличие файла - C++
Подскажите пожалуйста как сделать проверку на файл.

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
zss
Модератор
Эксперт С++
6382 / 5947 / 1927
Регистрация: 18.12.2011
Сообщений: 15,264
Завершенные тесты: 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;
}
0
sebis
0 / 0 / 0
Регистрация: 19.10.2015
Сообщений: 8
19.06.2016, 12:23  [ТС] #3
ам, спасибо, однако возникла проблема дальше чем один ИФ он не считает.

Добавлено через 8 минут
причем это если читает в синтаксе с++, а отдельный файл допустим с if if do do for while if считает корректно
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.06.2016, 12:23
Привет! Вот еще темы с ответами:

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

посимвольное считывание - C++
У меня есть переменная типа string которая равна &quot;000000000000&quot;. Мне нужно программно превратить ее вот в такую: 000-000-000-000. Я хочу...

Считывание из файла, если не указано количество элементов структуры - C++
Мне нужно прочитать из файла структуру Student, в которой указываются такие данные студента: фамилия, имя, отчество, пол, оценка по...

Посимвольное считывание из файла - Fortran
Сообствено, задание: посимвольно считать данные из файла f и записать их также посимвольно в файл g. Помогите реализовать. Я вот набросал,...


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

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

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