В образовательных целях прикольная прога
Пользователи, просматривающие топик: none
|
Зашли как: Guest
|
Имя |
Сообщение |
<< Старые топики Новые топики >> |
|
|
В образовательных целях прикольная прога - 2011-09-22 18:14:30.050000
|
|
|
shkolote attake
Сообщений: 268
Оценки: 0
Присоединился: 2010-10-19 05:37:44.873333
|
Прога читает текст из файла и воспроизводит его азбукой Морзе. #include "stdafx.h" #include <windows.h> #include <stdio.h> #include <windows.h> void play(char[]); int main() { char txt[99]; int i=0; printf("# Morse code #\n# Don't use punctuation or" " upper case letters.\nText: "); fgets(txt, sizeof(txt), stdin); while(txt != '\0') { switch(txt) { case 'a': play(".- "); break; case 'b': play("-… "); break; case 'c': play("-.-. "); break; case 'd': play("-.. "); break; case 'e': play(". "); break; case 'f': play("..-. "); break; case 'g': play("–. "); break; case 'h': play("…. "); break; case 'i': play(".. "); break; case 'j': play(".— "); break; case 'k': play("-.- "); break; case 'l': play(".-.. "); break; case 'm': play("– "); break; case 'n': play("-. "); break; case 'o': play("— "); break; case 'p': play(".–. "); break; case 'q': play("–.- "); break; case 'r': play(".-. "); break; case 's': play("… "); break; case 't': play("- "); break; case 'u': play("..- "); break; case 'v': play("…- "); break; case 'w': play(".– "); break; case 'x': play("-..- "); break; case 'y': play("-.– "); break; case 'z': play("–.. "); break; case '1': play(".—- "); break; case '2': play("..— "); break; case '3': play("…– "); break; case '4': play("….- "); break; case '5': play("….. "); break; case '6': play("-…. "); break; case '7': play("–… "); break; case '8': play("—.. "); break; case '9': play("—-. "); break; case '0': play("—– "); break; case ' ': play("/"); break; } i++; } return 0; } void play(char code[]) // Beep { int z=0; while(code[z] != '\0') { Sleep(150); switch(code[z]) { case '.': printf("."); Beep(900, 150); break; case '-': printf("-"); Beep(900, 450); break; case ' ': printf(" "); Sleep(500); break; case '/': printf(" "); Sleep(750); break; } z++; } }
|
|
|
RE: В образовательных целях прикольная прога - 2011-09-23 12:43:30.823333
|
|
|
_SaZ_
Сообщений: 4329
Оценки: 398
Присоединился: 2008-01-30 02:18:05.553333
|
1) нужно использовать тэг [code] для оформления кода 2) не найден файл stdafx.h :) 3) лишний инклюд windows.h 4) прога не читает текст из файла, а читает поток ввода, который по умолчанию идёт от клавиатуры 5) прога поддерживает максимум 98 входных символов (подсказка - не обязательно читать всю строку сразу, можно читать входной поток посимвольно) 6) Чему можно научиться по этому "прикольному", как следует из заголовка темы, коду? Работу с массивами / функциями в языке си объясняют на первых двух лекциях первокурсникам, а винапишные функции Beep и Sleep гуглятся с первого раза. p.s. какая я кака ^^
|
|
|
RE: В образовательных целях прикольная прога - 2011-09-23 13:54:32.993333
|
|
|
vvviperrr
Сообщений: 301
Оценки: 0
Присоединился: 2007-03-20 21:33:16.790000
|
2_SaZ_ удивительно. столько всего наговорил, а то, что прога не работает, не сказал)
[i]switch(txt[i])
{
...
i++
}
[/i][/i] про стиль вообще молчу. а прога (еслиб она была рабочей) прикольна тем, что описывалась в книге "Криптономикон" :) там глав гер знал, что его экран мониторят, и таким способом прочитал файлик с координатами местонахождения золота :) правда выводил сигналы не на бипер, а на led капслока. так то пс. ааааа. этот говнофорум просто порезал код))) нет смещения по i относительно txt
|
|
|
RE: В образовательных целях прикольная прога - 2011-09-23 15:41:50.270000
|
|
|
_SaZ_
Сообщений: 4329
Оценки: 398
Присоединился: 2008-01-30 02:18:05.553333
|
quote:
ORIGINAL: vvviperrr пс. ааааа. этот говнофорум просто порезал код))) нет смещения по i относительно txt Форум всё сделал правильно: воспринял [i] как тэг курсива. Именно для этих случаев и придумали тэг [code]
|
|
|
RE: В образовательных целях прикольная прога - 2011-09-23 16:03:11.323333
|
|
|
shkolote attake
Сообщений: 268
Оценки: 0
Присоединился: 2010-10-19 05:37:44.873333
|
ну запинали ппц…злые вы…уйду я от вас… п.с. прога рабочая.
|
|
|
RE: В образовательных целях прикольная прога - 2011-09-23 19:49:16.590000
|
|
|
_SaZ_
Сообщений: 4329
Оценки: 398
Присоединился: 2008-01-30 02:18:05.553333
|
Не, чего сразу запинали? Это всё - здоровая критика. Если хочешь - можешь на вопросы ответить ))
|
|
|
RE: В образовательных целях прикольная прога - 2011-09-23 21:54:40.790000
|
|
|
rgo
Сообщений: 7170
Оценки: 281
Присоединился: 2004-09-25 05:14:25
|
quote:
ORIGINAL: _SaZ_ 4) прога не читает текст из файла, а читает поток ввода, который по умолчанию идёт от клавиатуры Это как раз очень правильно. Программу, которая читает из stdin легко можно натравить на файл перенаправлением ввода/вывода. При желании, вместо stdin этой программе можно подсунуть pipe и засовывать данные из другого процесса. Если же программа читает из файла, то вот её применимость будет гораздо уже. Точнее, в большинстве ситуаций с этим можно справится, но гораздо сложнее. И я бы сделал это ещё "хуже". =) Я бы написал программку типа:char* trans[] = { ['a'] = ".- ", ['b'] = "-... ", ['c'] = "-.-. ",
['d'] = "-.. ", ['e'] = ". ", ['f'] = "..-. ",
['g'] = "--. ", ['h'] = ".... ", ['i'] = ".. ",
['j'] = ".--- ", ['k'] = "-.- ", ['l'] = ".-.. ",
['m'] = "-- ", ['n'] = "-. ", ['o'] = "--- ",
['p'] = ".--. ", ['q'] = "--.- ", ['r'] = ".-. ",
['s'] = "... ", ['t'] = "- ", ['u'] = "..- ",
['v'] = "...- ", ['w'] = ".-- ", ['x'] = "-..- ",
['y'] = "-.-- ", ['z'] = "--.. ", ['1'] = ".---- ",
['2'] = "..--- ", ['3'] = "...-- ", ['4'] = "....- ",
['5'] = "..... ", ['6'] = "-.... ", ['7'] = "--... ",
['8'] = "---.. ", ['9'] = "----. ", ['0'] = "----- ",
[' '] = "/" };
int main()
{
int ch;
while((ch = getc(stdin)) != EOF) {
if(ch > 0 && ch < 256 && trans[ch])
printf("%s", trans[ch]);
else
fprintf(stderr, "Unknown char at input (#%d)\n", ch);
}
return 0;
} Эта программка бы просто переводила бы ASCII в последовательность символов ".-/ ". И я б написал вторую программку, которая бы пикала:int main()
{
int ch;
while((ch = getc(stdin)) != EOF) {
switch(ch) {
case '.': Beep(900, 150); break;
case '-': Beep(900, 450); break;
case ' ': Sleep(500); break;
case '/': Sleep(750); break;
default:
fprintf(stderr,
"Unknown char at input (#%d)", ch);
break;
}
}
return 0;
} И уже эти две программки, легко можно было бы сочетать в командной строке в любом формате. Можно было бы использовать только первую, и получать графическое представление морзе. Можно было бы использовать совместно и получать только писки, или и писки и графику. Можно было бы использовать только вторую и засовывая в неё морзе, получать на выходе писки. Самый что ни на есть труЪ юникс-вей.
|
|
|
RE: В образовательных целях прикольная прога - 2011-09-24 16:20:57.410000
|
|
|
vvviperrr
Сообщений: 301
Оценки: 0
Присоединился: 2007-03-20 21:33:16.790000
|
quote:
ORIGINAL: _SaZ_ Форум всё сделал правильно: воспринял [i] как тэг курсива. Именно для этих случаев и придумали тэг [code] в нормальных форумах проверяется парность тегов. нет пары - значит просто текст. вывод тот же - говнофорум
|
|
|
RE: В образовательных целях прикольная прога - 2011-09-27 20:07:38.800000
|
|
|
antiporno
Сообщений: 79
Оценки: 0
Присоединился: 2010-12-24 14:22:00.863333
|
Мне понравилось. я ваше незнал что в программировании есть азбука морзе))
|
|
|
|
|