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

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

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

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

23.09.2012, 18:52. Просмотров 459. Ответов 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++):

Доделайте программу Исходник есть. Borland c++ (DOS) - C++
Я не знаю почему когда высвечевается меню после компеляции..выберая пункт она сразу закрывается..И плиз сделайте сортировку. по количеству...

У кого есть исходник игры Го в консольном режиме? - C++
Нужна помощь! Срочно! У кого есть исходник игры Го в консольном режиме? Или кто-то может помочь в написании??

Уважаемые програмеры помогите с массивами на с++. За ранее огромное спасибо - C++
1ДанцелочисленныймассивразмераN. Вывестивначале все содержа- щиесявданноммассивечетныечиславпорядкевозрастанияихиндексов, а затем— все...

Есть ли смысл писать в support.microsoft.com, ну там исходник чтобы дали, подсказали что-то по коду и т.д? - C++
Или это не в их компетенции? Пробовал кто-нибудь? Добавлено через 1 минуту В гугл не посылать. Гуглить умею, еще и как. Здесь...

Есть у кого-нибудь исходник игры "Морской Бой"? - C++
Ребят, может у кого завалялся исходник &quot;Морского Боя&quot;?

Гляньте код... - C++
В тексте, состоящем из русских букв, подсчитайте количество гласных букв. #include &lt;iostream.h&gt; #include &lt;conio.h&gt; #include...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.09.2012, 18:52
Привет! Вот еще темы с ответами:

Снова не компилит. Гляньте ошибки - C++
посмотрите пожалуйста,где ошибки /ошибка? #include &lt;iostream&gt; #include &lt;string&gt; #include &lt;string.h&gt; #include &lt;Windows.h&gt; using...

Гляньте какая у меня ошибка - C++
Гляньте пожалуйста какая у меня ошибка#include &lt;stdio.h&gt; #include &lt;conio.h&gt; #include &lt;stdlib.h&gt; void main() { clrscr(); FILE...

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

Люди не знаю в чем причина гляньте кто то - C++
Вот код гляньте почему он не работает. Я его сто раз пересматривал и ничего=( Нужно что бы кто то посторонний глянул может заметите ошибку ...


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

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

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