Программа Удаляющая Комментарии Из Листинга Программы С++

  • Автор темы federe
  • Дата начала
F

federe

#1
C++:
#include<iostream.h>
#include<fstream.h>
int main()
{
ifstream fin("blabla.cpp");
ofstream fout("blabla.cpp");
for(i=0;!fin.eof();i++)
{
fin.getline(stroka, sizeof(stroka));
for(j=0;stroka[j]!=NULL;j++)
if(stroka[i]=='/'&&stroka[i+1]=='/')
for(k=i;stroka[k]!=NULL;k++)
stroka[k]=' ';
fout<<stroka<<"/n";
}
fin.close();
fout.close();
return 0;
}
программа удаляет комментарии типа:
//блабла
/*блабла*/
но в типе
/*блабла
блабла*/ удаляет только первую строку
что надо изменить/сделать подскажите?
 

lazybiz

Well-known member
03.11.2010
1 339
0
#2
А что такое stroka ?

Добавлено: Что-то мне подсказывает что комментарии в стиле: /*блабла*/ она тоже не удаляет...
 

Vadik(R)

Well-known member
12.12.2007
469
0
#3
С виду программа либо вообще удаляет любую строку, начинающуюся на /, либо не должна удалять комментарии, начинающиеся на /*
 

lazybiz

Well-known member
03.11.2010
1 339
0
#5
Как ты хочешь чтобы мы тебе помогли, если ты сам к этому усилий не прилагаешь?
 

Vadik(R)

Well-known member
12.12.2007
469
0
#6
Ну стоило бы конкретизировать условия задачи, которые влияют на её сложность.
Например, может ли попасться во входных данных такое:
puts("Hello, world!"); //Выводит приветствие
или такое:
puts("// This is comment"); где удалять ничего не надо...
Или незакрытый комментарий /*
 
F

federe

#7
программа удаляющая все комментарии из листинга программы С++.программа должна обрабатывать файл *.сpp указываемый пользователем в начале работы

Добавлено:
Как ты хочешь чтобы мы тебе помогли, если ты сам к этому усилий не прилагаешь?
я попробывал - ничего не выходит поэтому у вас спрашиваю
 

lazybiz

Well-known member
03.11.2010
1 339
0
#8
Ищешь символ '/'.
Если следующий за ним такой же, то удаляешь (или пропускаешь) строку.
Если следующий символ '*', то ищешь следующий символ '*', если за ним символ '/', тот пропускаешь (или удаляешь) этот кусок.
И так далее.
 
F

federe

#9
Ищешь символ '/'.
Если следующий за ним такой же, то удаляешь (или пропускаешь) строку.
Если следующий символ '*', то ищешь следующий символ '*', если за ним символ '/', тот пропускаешь (или удаляешь) этот кусок.
И так далее.
пробывал но у меня она удаляет все начиная /*...
 
R

rrrFer

#10
я попробывал - ничего не выходит поэтому у вас спрашиваю
пробывал но у меня она удаляет все начиная /*...
пробЫвал, пробЫвал,... не заметно, если у вас программа удаляет все символы начиная с /* - то вы явно пропустили эту часть:
то ищешь следующий символ '*', если за ним символ '/', тот пропускаешь (или удаляешь) этот кусок.
допишите и все заработает, ну если конечно, на самом деле "пробЫвал".
Ну а если не "пробЫвал" - то читай пятый пункт правил, особенно этот кусок:
что работа людей стоит денег
 

lazybiz

Well-known member
03.11.2010
1 339
0
#12
А это ты внимательно изучил:
Ищешь символ '/'.
Если следующий за ним такой же, то удаляешь (или пропускаешь) строку.
Если следующий символ '*', то ищешь следующий символ '*', если за ним символ '/', тот пропускаешь (или удаляешь) этот кусок.
И так далее.
? Или ты думал что напишешь задание и "левый" код и за тебя все решат? Какой еще пользы ты ждал? Какие усилия предпринял для решения задачи?