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

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

Войти
Регистрация
Восстановить пароль
 
AppleSOft
Сообщений: n/a
#1

с++ програмеры, есть исходник, гляньте - C++

23.09.2012, 18:52. Просмотров 454. Ответов 0
Метки нет (Все метки)

В итоге прога должна спрашивать имя файла, а выдодить количество строк
( не считаются только пустые, комменты типа "//" и "/* */" )

эти исходники я взяты с разных книг, почти то что нужно для решения только если б кто подправил

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
//Р11-17.CPP - чтение текстового файла с помощью операции >>
#include <stdlib.h> *// Для функции exit()
#include <fstream.h> // Для файловых потоков
const int lenName 13; // max длина имени файла 
// Длина вспомогательного массива: 
const int lenString = 60; 
 
void main ()
{ char source[lenName]; // Массив для имени файла
 cout << "\n Введите имя исходного файла: ";
 cin >> source;
ifstream inFile;    //  Входной файловый поток
// Открыть файл source и связать его с потоком  inFile:
inFile.open(source);
if (!inFile)    // Проверить правильность открытия файла
{ cerr << "\n Ошибка при открытии файла " << source;
 exit (l);  // Завершение программы
}
// Вспомогательный массив для чтения: 
char string[lenString];
char next;
cout << "\n Текст файла:\n\n";
cin.get(); * *//    Убирает код иэ потока   cin
while(1) * *//  Неограниченный цикл
    { // Ввод из файла одного слова до пробельного 
 // символа либо EOF:
    inFile >> string;
    // Проверка следующего символа: 
    next = inFile.peek();
    // Выход при достижении конца файла:
    if (next == EOF) break;
    // Печать с добавлением разделительного пробела:
    cout << string << " ";
    if (next == '\n') // Обработка конца строки
 { cout << '\n';
 // 4 - смещение для первой страницы экрана: 
 static int i = 4;
 // Деление по страницам до 20 строк каждая: 
 if (!(++i % 20))
    { cout << "\nДля продолжения вывода " 
 "нажмите ENTER.\n" << endl; 
 cin.get();
    }
 }
    }
}
Результат выполнения программы - постраничный вывод на экран текстового файла, имя которого набирает на клавиатуре пользователь по "запросу" программы. Размер страницы - 20 строк. В начале первой страницы - результат диалога с пользователем и поэтому из файла читаются и выводятся только первые 16 строк.


_________________________________________________________________________________________________________
Следующая программа читает текстовый файл и разделяет его на две части - строки, не содержащие последовательности из двух символов '//', и строки, начинающиеся такой парой символов. Иначе говоря, эта программа позволяет удалить из исходного текста программы на языке Си++ комментарии, начинающиеся парой символов '//' и заканчивающиеся признаком конца строки '\n'. В программе определены два выходных потока outtext и outcom, связанные соответственно с создаваемыми заново файлами text.cpp и comment. Имя входного файла с текстом анализируемой программы на языке Си++ определяет
(вводит с клавиатуры) пользователь. С этим файлом "связывается" функцией ореn() входной поток inFile.
Для проверки безошибочного открытия файлов проверяются значения выражений (!имя потока). При истинности результата вызывается вспомогательная функция errorF().
Вспомогательная переменная int len, позволяет проследить за необходимостью перехода к новой строке в потоке outtext, если во входном потоке inFile обнаружена пара символов '//'. Символы входного потока последовательно читаются в переменную simb и выводятся в нужный выходной поток. Если не встречен символ '/', то все просто - вывод идет в поток outtext. Так как обнаружение во входном отдельного символа '/' не есть признак начала комментария, то в этом случае анализируется следующий символ, читаемый из входного потока в переменную next. Если next имеет значение то это начало комментария, и последующий вывод нужно вести в поток outcom, предварительно "закрыв" строку в потоке outtext символом '\n'. Комментарии в тексте программы поясняют остальные детали алгоритма.


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
//р11-18.СРР - выделение комментариев из текста на Си++;
//  посимвольные чтение и запись из текстового файла
#include <stdlib.h> 
#include <fstream.h>
void errorF(char *ss)   //  Вспомогательная функция
{ cerr << "\nОшибка при открытии файла" << ' '  <<
    ss << '\n';
exit(1);
}
const int lenName << 23;    //  Длина массива для имени файла
void main()
{ char progName[lenName]; // Массив для имени файла
    cout << "\n Введите полное имя анализируемой программы: "; 
    cin >> progName;
    ifstream inFile;    //  Входной поток cвязываем входной поток с файлом программы:
    inFile.open(progName);
    if (!inFile) errorF(progName);
    char simb,  last, next; // Вспомогательныe переменные
    ofstream outtext, outcom; // Два выходных потока // Параыанкая для вычисления длим строк лрограмш:
    int len = 0;
    outtext.open("text.cpp",ios::ate);
    if (!outtext) errorF("text.cpp"); 
    outcom.open("comment",ios::app);
    if (!outcom) errorF("comment");
    while (inFile.get(simb))    //  Читает символы до EOF
    { len++;    //  Длинa   очередной строки программы
 if (simb ==    '\n')
 len = 0; // Начнется новая строка программы
    if (simb != '/')    //  это не начало комментария
 // Вывод символа строки программы:
 outtext.put(simb);
    else
    // Когда simb == '/' - возможно начало комментария
 { // Проверка на EOF:
 if (!inFile.get(next)) break;
 if (next == '/')
    { // Теперь уже точно комментарий
    if (len != 1)
 // "Закрываем" строку программы:
 outtext.put('\n'); 
    outcom.put(simb); 
    outcom.put(next);
    // Цикл до конца комментария, т.е. до конца строки: 
    do
 {// Чтение символа ив файла: 
 inFile.get(siab);
 // Запись символа в поток: outcoa.put(aiab);
 } while (simb!='\n');
    }
 else
    // Вывод символов, не входящих в комментарий:
    { outtext.put(simb); 
    outtext.put(next);
    }
 }
    }
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.09.2012, 18:52     с++ програмеры, есть исходник, гляньте
Посмотрите здесь:

C++ Гляньте код...
Гляньте какая у меня ошибка C++
Есть у кого-нибудь исходник игры "Морской Бой"? C++
Уважаемые програмеры помогите с массивами на с++. За ранее огромное спасибо C++
C++ Народ гляньте код и подскажите что не так.
Доделайте программу Исходник есть. Borland c++ (DOS) C++
Так, норм задачка, гляньте, скажите что да как C++
C++ Снова не компилит. Гляньте ошибки
C++ Пытаюсь рекурсивно сделать задачу. гляньте код плз)
C++ Люди не знаю в чем причина гляньте кто то
Qvick-sort алгоритм быстрой сортировки. Гляньте плс( C++
У кого есть исходник игры Го в консольном режиме? C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать тему
Опции темы

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