- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 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
#include <iostream>
#include <string>
using namespace std;
int main()
{
const int hz_limit = 20000;
string str;
string str_mass[] = {"a", "b", "ais", "h", "ces", "c", "his", "cis", "des",
"d", "dis", "es", "e", "fes", "f", "eis", "fis", "ges", "g", "gis", "as"};
begin:
while (cin>>str)
{
for (size_t ix = 0; ix != str.size(); ++ix)
{
str[ix] = tolower(str[ix]);
}
size_t f = 0;
for (size_t ix = 0; ix != 21; ++ix)
{
if(str == str_mass[ix])
{
f = ix;
}
}
if (str != str_mass[f])
{
goto begin;
}
double mass[] = {27.500, 29.135, 29.135, 30.868, 30.868, 32.703, 32.703, 34.648, 34.648,
36.708, 38.891, 38.891, 41.203, 41.203, 43.654, 43.654, 46.249, 46.249, 48.999, 51.913, 51.913};
for (; mass[f] < hz_limit; mass[f] *= 2)
{
cout<<mass[f]<<" Hz"<<endl;
}
}
return 0;
}
Моя первая прога. Выводит частоты на которых находится введенная нота...
TarasB 21.03.2011 16:59 # +1
Extrawelt 21.03.2011 17:09 # 0
TarasB 21.03.2011 17:21 # 0
YuraTim 21.03.2011 17:28 # 0
TheCalligrapher 21.03.2011 17:22 # 0
Extrawelt 21.03.2011 17:32 # 0
YuraTim 21.03.2011 17:34 # 0
TheCalligrapher 21.03.2011 17:39 # +5
В конце концов это просто короче.
TheCalligrapher 21.03.2011 17:21 # 0
Код очень ровный в плане пионерского программирования. Просто аж придраться не к чему :)
YuraTim 21.03.2011 17:32 # 0
bugmenot 21.03.2011 22:04 # +1
ОМ Г.
TarasB 22.03.2011 16:55 # 0
koodeer 22.03.2011 21:49 # +3
http://tinyurl.com/67aafza
absolut 22.03.2011 21:57 # 0
bugmenot 22.03.2011 23:01 # 0
Lure Of Chaos 23.03.2011 14:36 # +1
nil 25.03.2011 00:57 # +2
absolut 25.03.2011 12:45 # −1
bugmenot 21.03.2011 17:15 # −1
absolut 21.03.2011 17:46 # +1
TheCalligrapher 21.03.2011 19:21 # 0
absolut 21.03.2011 22:23 # 0
Плюс - нелепая проверка на отсутствие совпадений в 25 строке и выход из цикла чтения. А ещё, мне кажется, что автору повезло использовать string и проверку на равенство строк, с char* такое бы не прокатило. Новички на этом часто попадаются.
TheCalligrapher 22.03.2011 01:04 # 0
J0hnny 27.03.2011 23:50 # +3
Отношение между частотами соседних нот(пол-тона) константа - exp( (1./12.) * ln(2.) ) .
absolut 28.03.2011 13:13 # 0
J0hnny 28.03.2011 13:41 # 0
Нет необходимости хранить все частоты, тем более повторяющиеся, достаточно хранить только одну(обычно это нота ля - 440hz).
J0hnny 28.03.2011 13:54 # 0
absolut 28.03.2011 13:59 # 0