View Full Version : Hetaqrqir xndir
Unenq source fayl (orinak grvac c++ - ov) , petqe voroshel , te inch xorutyun uni ayd fayl@.
Fayli xorutyun anvanum enq nra cikleri maximal nerdrvacutyuny.
Tarberakner ?
DaNYer
Oct 26, 2003, 16:19
Originally posted by Davit
Unenq source fayl (orinak grvac c++ - ov) , petqe voroshel , te inch xorutyun uni ayd fayl@.
Fayli xorutyun anvanum enq nra cikleri maximal nerdrvacutyuny.
Tarberakner ?
just keep the count of opening and closing curly brackets .....
do you want to count only loops? or including ifs ?
bayc ete cikl ka vory bacvox - pakvox pakagcer chuni ??????
orinak `
for ()
for ()
for()
;
??????????????
1. парсер у тебя должен быть рекурсивный (шкурой чую)
2. в случае, если обнаружил цикл без открывающей скобки, то по выходу из рекурсивно вызваной ф-ии не ищешь закрывающую скобку :)
а тебе сколькопроходный парсер, кстати, нужен?
на многопроходном можно будет сделать элегантнее, но медленней :)
vabshe to ya reshil etu zadachku s pomoshyu PCLEX i PCYACC .
U menya byla grammatika C.
prosto mne nujna byla ne tol'ko glubina a obhsaya statistica programmy.
PCYACC rabotaet s odnim proxodom , i delaet eto ochen' elegantno ;)
kstati , pisat' svoy parser ne tak uj legko ... dumayu nujno imet' kakoy to lexicheskiy analizator , shtob opoznavat' cikly , oni je byvayut ochen' raznymi :)
Originally posted by Davit
kstati , pisat' svoy parser ne tak uj legko ... dumayu nujno imet' kakoy to lexicheskiy analizator , shtob opoznavat' cikly , oni je byvayut ochen' raznymi :)
ну значит так :) свой парсер писать всегда приятно :)
особенно когда он начинает работать ;) (помолились 3 раза на DragonBook:)
для того, чтоб считать _ТОЛьКО_ циклы в C/Цпп программе достаточно одного очень простого парсера ;))) достаточно распознавать сами циклы и фигурные скобки - все оставшееся нас ведь как-то не интересует, не так-ли ? ну может еще и границы функций ...
yacc/lex/bison и все это семейство - хорошо :) но требует некоторого времени изучения :)
nu ladno predpolojim , shto my raspoznovali cikly ...
a kakie varinaty u vas nashyot glubiny programmy ????
dayte algorithm
to nm
a est' u tebya elektronnaya versiya DragonBook ? kniga stoit 9500 dramov , prosto jalko deneg , no vesh stoyushaya !!
DaNYer
Oct 27, 2003, 14:51
Originally posted by nm
достаточно распознавать сами циклы и фигурные скобки - все оставшееся нас ведь как-то не интересует, не так-ли ? ну может еще и границы функций ...
for()
for()
for()
{
---
---
---
for()
for()
for()
}
for()
kakaya tut glubina? 5?
ya ne ponyal shto ty imeesh v vidu napisav `
for()
for()
for()
{
---
---
---
for()
for()
for()
}
for()
no glubina etovo koda 5
for()
for()
for()
{
---
---
---
for() ;
for()
for() ;
}
for();
DaNYer
Oct 27, 2003, 16:23
thanx
Originally posted by Davit
nu ladno predpolojim , shto my raspoznovali cikly ...
a kakie varinaty u vas nashyot glubiny programmy ????
dayte algorithm
to nm
a est' u tebya elektronnaya versiya DragonBook ? kniga stoit 9500 dramov , prosto jalko deneg , no vesh stoyushaya !!
эта книга стоит того, чтоб заработать 9500 драм (только не надо мне говорить, что это не возможно :) о ее купить ;) а во-вторых -- пойди запишись в AUA library и просто ее возьми почитать ;)
алгоритм же прост до опупения :)))
int glubina_cikla() {
int max_glubina = 0;
esli netu otkrywajushej operatornoj skobki {
perwaja zhe komanda _NE_FOR_ , to return 0;
/* perwaja komanda for */
propustit' kruglyys skobki;
return glubina_cikla(tekushaja pozicija);
}
while (ne konec fajla) {
while (ne_wstretili_for) {
idem dal'\she po textu
esli wsttretili zakrywajushie skobki, return max_glubina;
}
/* nashli for */
sdwinutsja za kruglye skobki for-a /* t.e. na poziciju posle for (i=0, i<foo; i+=bar) */
max_glubina = max(max_glubina, glubina_cikla (tekushaja pozicija));
propustit' wes' cikl /* mozhno kakoj-to global'nyj pointer eshe ponjat' po rekursii wwerh-wniz s poziciej w texte ( kak i delaet yacc :) */
} /* end while ne konec fajla */
return max_glubina;
} /* end function */
более детально, имхо, не надо расписывать код, а то это уже получится что я за кого-то :) курсовик делаю ;))))
пс/2. задание - посчитать количество смайликов в посте :)
пс/3. код подлежит оптимизации :) просто лень переписывать ;)
nuu vabshe to ya toje znayu , shto mojno ZARABOTAT' i KUPIT' knigu , i pover' ya regulyarno tak i delayu na moyu zarplatu (nu konechno ne na vsyu zarplatu :)) , prosto mne kajetsa esli est' elektronnaya versiya kakoy to knigi , mojno i ne kupit' eyo , a prosto chitat' na komputere. ne tak li ?
a v AUA tochno est' eta kniga ?
Originally posted by Davit
nuu vabshe to ya toje znayu , shto mojno ZARABOTAT' i KUPIT' knigu , i pover' ya regulyarno tak i delayu na moyu zarplatu (nu konechno ne na vsyu zarplatu :))
вот хороший повод иметь несколько зарплат :) на одну из них полностью можно закупаться книжками :)))) . скажем зарплату лектора аспиранта в политехе - 5.000 драм :) оч весело :)
Originally posted by Davit
prosto mne kajetsa esli est' elektronnaya versiya kakoy to knigi , mojno i ne kupit' eyo , a prosto chitat' na komputere. ne tak li ?
не так ли :) бумажная версия, стоящая на полке рядом, приятно греет душу и приятно читается лежа на диване :)))
Originally posted by Davit
a v AUA tochno est' eta kniga ?
лично по ней учился ;) v.2 кажется
вобщем не принципиально который revision книжки :)
еще - "Р.И. Компаниец, Маньков, Филатов, Системное программирование - основы построения трансляторов, СПб.Корона принт, 2000, 254 стр.
довольно приличная книжка
W_z_rd
Oct 27, 2003, 20:08
Chto ponimaem pod glubinoy programmi ? Esli idet rekursivniy vizov - kakova ego glubina ??
Originally posted by W_z_rd
Chto ponimaem pod glubinoy programmi ? Esli idet rekursivniy vizov - kakova ego glubina ??
шшшшшшшш.а вот туда не надо :))) а то будем искать рекурсивный Грааль :)
сказали же -по количеству вложенных циклов, значит по количеству вложенных циклов ;)
Posmotriv na vopros , pervaya shto mojet pridti v golovu, eto TAKAYA JE REKURSIA kakuyu ty napisal (temi je principami).
a principy takie - esli 'for' togda return glubina_cikla() + 1; (shto u tebya vobshe netu , navernee pozabyl ;))
A vot s takim (kak u tebya ) realizaciem algorithma , u tebya konechno je budut problemy.
Prosto IMXO , tebe nujno vnimatel'no posmotret' kod , i esli ne len' perepisyvat' , delay eto eshyo raz , no xot' shtob algorithm rabotal na tvoix TESTov , kotorye ya dumayu ty ne sdelal ;)
Ponimaesh , dlya menya problema ne v tom , shtob , nu grubo govorya , prosto schityvat' glubinu , menya interesuet - mojno li sobrat' statistiku v proge , ne ispol'zuya grammatiku etovo jazyka , ili vabshe - stoit li etovo sdelat' ? Mojno li izbejat' vse vozmojnye oshibki?
Schityvat' Glubinu cikla prishla mne v golovu pervim , i vot eto ya i sprosil :)
kstati pro kursovuyu rabotu , tebe shto , tak slojno sdelat' komu to dobro ? :))) eto ne K. Rabota , po krayney mere ne MOYA:)
to W_z_rd
a shto zanchit - kakova ego glubina ??
pod glubinoy progi ya imel v vidu maksimal'naya glubina vlojennyx ciklov.
Originally posted by Davit
Posmotriv na vopros , pervaya shto mojet pridti v golovu, eto TAKAYA JE REKURSIA kakuyu ty napisal (temi je principami).
a principy takie - esli 'for' togda return glubina_cikla() + 1; (shto u tebya vobshe netu , navernee pozabyl ;))
A vot s takim (kak u tebya ) realizaciem algorithma , u tebya konechno je budut problemy.
Prosto IMXO , tebe nujno vnimatel'no posmotret' kod , i esli ne len' perepisyvat' , delay eto eshyo raz , no xot' shtob algorithm rabotal na tvoix TESTov , kotorye ya dumayu ty ne sdelal ;)
Ponimaesh , dlya menya problema ne v tom , shtob , nu grubo govorya , prosto schityvat' glubinu , menya interesuet - mojno li sobrat' statistiku v proge , ne ispol'zuya grammatiku etovo jazyka , ili vabshe - stoit li etovo sdelat' ? Mojno li izbejat' vse vozmojnye oshibki?
Schityvat' Glubinu cikla prishla mne v golovu pervim , i vot eto ya i sprosil :)
kstati pro kursovuyu rabotu , tebe shto , tak slojno sdelat' komu to dobro ? :))) eto ne K. Rabota , po krayney mere ne MOYA:)
bzz ;) eto bylo perwoe chto prishlo w golowu .... naschet +1 zabyl ;)))
statistiku ...zachem sobirat' statistiku ?
dlja proverki progi est' takaja wesh' kak `lint` ;)
chto eshe nado dlja c/c++ program ?
optimizacija po proizwoditel'nosti ? est' ujma profajlerow ... i po ishodnomu kodu ty nikogda w zhizni /* ili pochti nikogda */ ne skazhesh, gde imenno budet tormozit' proga :)
a tak - my ushli kazhetsja w glubokij oftop .... perehodim obratno - konkretnyj wopros plz :)
statistika mne nujna dlya moey diplomnoy , nu statistika vrodi etogo -
1. maximal'naya glubina ciklov , i skol'ko est' takix ciklov , imeyushix takuyu glubinu
2. skol'ko procentov zanimayut tesno vlojyonnye cikly , vrodi takix -
for ()
for ()
for ()
{
;
}
kodga tol'ko posledniy cikl imeet bolee odnovo "statement"-a
3. skol'ko procentov zanimayut cikly imeyushie pobochnyj vyxod ("break" ," return", mojet byt' "goto")
i t. p.
vopros -
Mojno li sobrat' statistiku v proge , ne ispol'zuya GRAMMATIKU etovo jazyka , ili vabshe - stoit li etovo sdelat' ? Mojno li izbejat' vse vozmojnye oshibki?
nu a algorithm pro GLUBINU PROGRAMMY VSYO ESHYO AKTUALEN :))) tak - kak pravilnix resheniy ne bylo
Originally posted by Davit
statistika mne nujna dlya moey diplomnoy , nu statistika vrodi etogo -
1. maximal'naya glubina ciklov , i skol'ko est' takix ciklov , imeyushix takuyu glubinu
2. skol'ko procentov zanimayut tesno vlojyonnye cikly , vrodi takix -
for ()
for ()
for ()
{
;
}
kodga tol'ko posledniy cikl imeet bolee odnovo "statement"-a
3. skol'ko procentov zanimayut cikly imeyushie pobochnyj vyxod ("break" ," return", mojet byt' "goto")
i t. p.
nu, wse reshabel'no, imho
Originally posted by Davit
vopros -
Mojno li sobrat' statistiku v proge , ne ispol'zuya GRAMMATIKU etovo jazyka , ili vabshe - stoit li etovo sdelat' ? Mojno li izbejat' vse vozmojnye oshibki?
NET :))) smotri prawilo programmirowanija N1 :)
oshibki budut wsegda .
a uprostit' grammatiku do bezobrazija - mozhno ....
skazhem tebja washe ne interesuet razbot arifmeticheskih wyrazhenij, tak? sledowtel'no moizhno ego wykinut' i prosto s'edat wse kuski koda tipa
VARIABLE = chto-to tam ;
Originally posted by Davit
nu a algorithm pro GLUBINU PROGRAMMY VSYO ESHYO AKTUALEN :))) tak - kak pravilnix resheniy ne bylo
ee, chto imenno ne ponravilos' ?
pokazhi kog na C, kotoryj ty napisal i testowyj primer, na kotorm on sletaet i schitaet neprawil'no ...
a shto nado obyazatel'no kod pisat' shtob videt' shto algorithm ne rabotaet ?
naprimer vot testik
main() /*metka 1*/
{
for (true)
{
a = b; /*metka 2*/
for (true)
;
if (true)
{
} /*metka 3*/
}
for (true) /*metka 4*/
for (true)
for (true)
;
}
vyzyvim tvoyu funkciyu `
glubina_cikla(nachalnaya_poziciya); //nachalnaya_poziciya "main"
nachnyom -->
esli netu otkrywajushej operatornoj skobki {
perwaja zhe komanda _NE_FOR_ , to return 0;
/* perwaja komanda for */
propustit' kruglyys skobki;
return glubina_cikla(tekushaja pozicija);
}
vot uje ne srabotala . ladno dopustim eto mojno uladit'. // return 0;
/* nashli for */
sdwinutsja za kruglye skobki for-a /* t.e. na poziciju posle for (i=0, i<foo; i+=bar) */
max_glubina = max(max_glubina, glubina_cikla (tekushaja pozicija) + 1);
proshli metku 2 ...
/* nashli for */
sdwinutsja za kruglye skobki for-a /* t.e. na poziciju posle for (i=0, i<foo; i+=bar) */
max_glubina = max(max_glubina, glubina_cikla (tekushaja pozicija) + 1);
esli netu otkrywajushej operatornoj skobki {
perwaja zhe komanda _NE_FOR_ , to return 0;
// srabotala , return 0; max_glubina = 1;
/* perwaja komanda for */
propustit' kruglyys skobki;
return glubina_cikla(tekushaja pozicija);
}
while (ne_wstretili_for) {
idem dal'\she po textu
esli wsttretili zakrywajushie skobki, return max_glubina;
}
doshli do "metki 3" , i vot uvideli zakrywajushiyu skobku i sdelali
return max_glubina ;
i snova
while (ne_wstretili_for) {
idem dal'\she po textu
esli wsttretili zakrywajushie skobki, return max_glubina;
}
i vot uvideli eshyo odnu zakrywajushiyu skobku i sdelali
return max_glubina ; // max_glubina = 2;
algorithm okonchen .
max_glubina = 2 ; /* no doljna byla byt' 3*/
i do metki 4 my vabshe ne doshli.
vyvod - esli tam budut neskol'ko zakrywajushix skobok , to algorithm ne budet rabotat' .
vyvod - zakrywajushie skobki nel'zya ****at' okanchaniem cikla .
vopros - a shto mojno ****at' okanchaniem cikla? schitat' otkryvayushie i zakrywajushie skobki, i esli zakryvayushie i otkryvajushie rovny , togda sdelat' shto-to ...
vobshem mojno podumat' , no takie oshibki po-moemu budut snova i snova ...
nu, wse reshabel'no, imho
vsyo eto ya uje sdelal
a uprostit' grammatiku do bezobrazija - mozhno ....
skazhem tebja washe ne interesuet razbot arifmeticheskih wyrazhenij, tak? sledowtel'no moizhno ego wykinut' i prosto s'edat wse kuski koda tipa
VARIABLE = chto-to tam ;
imenno tak i sdelal ;)
vBulletin® v3.6.8, Copyright ©2000-2008, Jelsoft Enterprises Ltd.