Нашли или выдавили из себя код, который нельзя назвать нормальным,
на который без улыбки не взглянешь?
Не торопитесь его удалять или рефакторить, — запостите его на
говнокод.ру, посмеёмся вместе!
#include <iostream>
#include <string.h>
using namespace std;
int strsearch(char* from, char* what);
int getnumberafter(char* from, char* what);
int strch(char* a, char* b, int pos);
int strsearch(char* from, char* what)
{
int n=strlen(from)-strlen(what)+1;
int i;
for(i=0; i<n; i++)
if(strch(from, what, i)==strlen(what)) return i;
return 0;
}
int getnumberafter(char* from, char* what)
{
int p, ret=0;
if((p=strsearch(from,what))==0) return 0;
p+=strlen(what);
while(from[p]<'0'&&from[p]>'9')
{
p++;
if(p>=strlen(from)) return 0;
}
while(from[p]>='0'&&from[p]<='9'&&p<strlen(from))
{
ret=ret*10+(from[p++]-'0');
}
return ret;
}
int strch(char* a, char* b, int pos)
{
int i,n=min(strlen(a)-pos,strlen(b));
for(i=0; i<n; i++)
if(a[i+pos]!=b[i]) return i;
return i;
}
int main(int argc, char* argv[])
{
int i;
double max=1,vol=0;
for(i=0; i<argc; i++)
{
cout << i << ": " << argv[i] << endl;
if(strch(argv[i],"type",0)==4) { max=getnumberafter(argv[i],"max=");}
if(strch(argv[i],"values",0)==6) { vol=(getnumberafter(argv[i],"=")+getnumberafter(argv[i],","))/2;}
}
cout << vol/max << endl;
return 0;
}
Задача из чего-то типа этого:
numid=2,iface=MIXER,name='Master Playback Volume'
; type=INTEGER,access=rw---R--,values=2,min=0,max=31,step=0
: values=31,31
| dBscale-min=-46.50dB,step=1.50dB,mute=0
Получить значение в процентах.
#./a.out `amixer cget numid=2`
0,67
Извините, я что-то не уловил логику где-то между "совпадает с регэкспом" и "говнокод". Да и, честно говоря, и не понял как данный regexp относится к данному коду, но это хрен с ним. Мне интереснее, как из этого следует, что код - говнокод.
А, я кажется наконец-то понял, что вы хотели сказать фразой "совпадает с регэкспом". Мне изначально показалось, что вы каким-то образом сочли, что программа выполяет ту же функцию что и некий regexp, а не то, что код программы удовлетворяет регулярному выражению. Извиняюсь.
Еще вариант, кое-где использовавшийся, «отвечает».