Премини към съдържанието

krisku

Потребител
  • Публикации

    1117
  • Регистрация

  • Последно онлайн

Всичко публикувано от krisku

  1. Не, щом не знаеш английски - почни с него, пък после мисли за програмиране.
  2. Timings на субтитрите нямат нищо общо с плеъра, който ги възпроизвежда. Щом при теб има разлика между video stream-a и субтитрите около минута, значи най-вероятно просто субтитрите не са за този релийз. GOM Player също има вградена възможност за ръчна синхронизация на субтитрите: http://www.keyxl.com/aaa0602/267/GOM-Player-keyboard-shortcuts.htm
  3. krisku

    Малко помощ

    А на какъв език ти трябва?
  4. Толкова трудно ли е със един for() да обходиш структурата, като предварително създадеш няколко работни променливи, които ще пазят броя на отличниците, двойкаджиите и шарлатаните? /* Piece of C-code */ . . . unsigned good_students = 0, poor_students = 0, blade_runner = 0; unsigned minMissings = 0; for(i=0; i<=maxStudents; i++) { if(student[i].rating >= 5.50) good_students++; else if(student[i].rating <= 3.50) poor_students++; if(student[i].missing > minMissings) { minMisings = student[i].missing; blade_runner = i; } } printf("Number of good students: %d\n", good_students); printf("Number of poor students: %d\n", poor_students); printf("The blade runner name is: %s", student[blade_runner].name); . . . // not tested
  5. Кефи ме mail report-a, който праща форума. Дали аз съм зле -- не знам, но със сигурност щеше да бъде по-добре да помислиш малко преди да пишеш, каквото и да било. За да проверим дали едно EGN е валидно, умножаваме всяка позиция по съответната тежест, след което събираме получените произведения и делим с остатък на 11, полученото число трябва да е равно на контролната цифра на EGN-то, не е ли -- явно EGN-то не е толкова валидно, колкото изглежда. Особено "опасни" за подобни проверки са и високосните години!
  6. И един мармот.... http://www.grao.bg/esgraon.html
  7. krisku

    Малко акъл ако може

    Дай условието, не можем да гадаем така какво, кое, как...
  8. krisku

    Имам нужда от помощ !

    Език? Компилатор? Операционна система? Все важни неща, които винаги питащите изпускат... идея си нямам защо! ;-)
  9. krisku

    Задача за C

    #include <stdio.h> #include <conio.h> /* getch() */ #include <string.h> /* strlen(), strtok() */ #include <stdlib.h> /* exit() */ int main(void) { char inputStr[100]; char delimiters[10]; char tmpbuf[10]; char *tmpPtr, *largestWord; unsigned string_length, tmp_length, max_length = 0; unsigned user_choice, word_counter = 0; do { printf("1. Enter string\n"); printf("2. Enter delimiters\n"); printf("3. Print result\n"); printf("4. Exit\n"); printf("Choice: "); scanf("%u", &user_choice); gets(tmpbuf); // gets new-line escape character, scanf() and gets() trouble! :-) switch(user_choice) { case 1: printf("\nEnter input string: "); gets(inputStr); // maybe fgets()? break; case 2: printf("\nEnter delimiters: "); gets(delimiters); // maybe fgets()? break; case 3: // the core of program starts here string_length = (unsigned) strlen(inputStr); // average word length calculations... tmpPtr = strtok(inputStr, delimiters); // the core of algorithm, splits string into tokens (reference: strtok() from string.h) while(tmpPtr!=NULL) { if( (tmp_length = strlen(tmpPtr)) > max_length) { largestWord = tmpPtr; max_length = tmp_length; } tmpPtr = strtok(NULL, delimiters); word_counter++; // count words from stdin } printf("\nLargest word: %s\n", largestWord); printf("Average word length: %u\n\n", string_length / word_counter); break; default: printf("\nTerminate program..."); exit(1); } } while(user_choice < 3); getch(); // hit any key from KBD, before close program... return 0; } // done?
  10. krisku

    Задача за C

    Сега отивам на училище, довечера ще ти я напиша... следи темата, защото вероятно ще си редактирам мнението...
  11. krisku

    Въпрос свързан с С

    Трябва ти просто за да го усвоиш като материал, или какво? Защото наистина ако имаш многомерен масив ( > 2D array) кодът ще е адски неразбираем за външния свят.
  12. krisku

    Въпрос свързан с С

    Проблемът се състои в това, че функцията scanf() очаква да й се подаде адресът на дадения операнд чрез reference operator (&), където да запази стойността прочетена от входа, а ти всъщност използваш dereference operator (*), като по този начин не подаваш адресът, а физическата стойност съхранявана на този адрес. /* scanf() usage */ for(i=0; i<r_max; i++) { for(j=0; j<c_max; j++) { printf("Enter [%d] value: ", i); // starts by 0 (zero) scanf("%d", &tmpArray[i][j]); } } За многомерни масиви, използването само на pointer arithmetic определено прави кода трудно разбираем за останалия свят, както и за теб след време, все пак, ако искаш да научиш как всъщност става и да разбереш отгоре какво всъщност указваш на компилатора по този начин, прегледай следния tutorial: http://www.gamedev.net/reference/articles/article1697.asp
  13. krisku

    помощ за задача по ООП (C++)

    За близо месец и половина все някой, някъде му е написал задачата. ;-)
  14. krisku

    Книга за C

    Не ти се зарежда връзката нещо ;-)
  15. krisku

    Помощ за задача на C++

    Алгоритъма може да се оптимизира доста, особено полезна ще е ако търсим кратни на 5 стойности в големи интервали. // algorithm core for(; n <= m; n++) { // няма нужда от декларирането на нова променлива if( n%5 == 0) { // намираме първата срещната стойност, кратна на 5 while(n <= m) { printf("%d ", n); // печатаме кратните на 5 числа n=n+5; // следващото_кратно = текущото + 5 } } } // end core Значително се намалява броя стъпки за намиране на решението. :-)
  16. krisku

    Задача на С СПЕШНО!

    Къде гърми програмата, компилирах я, въведох произволни данни и не гръмна никъде - не ми се занимава обаче, да видя дали печата коректни резултати.
  17. Ами какво чакаш, работа за няколко минутки е, съвет: изтегли последната версия на необходимия драйвър.
  18. Едно и също е, във Recording настройките няма как да има няколко отметки, на screenshot-a многото отметки са от Playback настройките и по-конкретно за заглушаване на дадено устройство, ако няма отметка - като говориш ще се чуваш в говорителя, ако има отметка - няма. Това, че при разговор в Skype се чува пусната песен от аудио плеъра в случая предполагам означава, че в Recording настройките, не е избран микрофон като устройство по подразбиране.
  19. По-голяма част от софтуера за гласова комуникация, използват Recording настройките на звуковата карта, съответно трябва да провериш дали в: Control Panel > Sound and Audio Devices > [Device Volume] Advanced > Options > Recording, микрофонът не е намален докрай, регулирайки настройките от интерфейса на Skype, реално променяш тези от снимката по-долу. Ако беше "объркан" звуковия драйвър, едва ли щеше да се инсталира, а дори да се беше инсталирал - нямаше да има звук, предполагам проблема се е получил от скоро, да каже от какво, ще те улесни. Но винаги може да деинсталираш старите драйвъри и инсталираш новите - принципно би трябвало всички настройки да се върнат по подразбиране.
  20. krisku

    блок схема за С++

    За следния © код: #include <stdio.h> #include <conio.h> int main(void) { int array[5] = {1, 3, 3, 4, 5}; unsigned i = 0; int inputN = 5; // const, just for algorithm understanding while(array[i]) { if(array[i++] == inputN) { printf("Yep!"); break; } } getch(); return 0; } Правена е на Word, което обяснява несиметричността при някои от елементите на блок схемата. Дано ти свърши работа. P.S.: Написах я по този код, защото нямам твоя и реално няма как да я създам по твоята програма, предполагам това е и условието, де. P.S2: Ако си девойче, Честит Празник! ;-)
  21. krisku

    задача по програмиране - С++

    Целта на тази задача тип "чаша за еднократна употреба" е само и единствено да упражни мисленето и затвърди наученото. Когато не знаеш нещо, защо въобще изказваш мнение? Програмисти на килограм - глупости, всъщност, ако за теб програмист е някой, който може да напише "Hello world" example на няколко езика - грешиш, оправи си гледната точка, че е доста далеч от реалността. Глупаво е да слагаш под общ знаменател всички, в повечето случай един истински програмист (не псевдо-кодер, повтарям псевдо-кодер) е достатъчно интелигентен да си поправи повреден даден домакински или електроуред, и познай коя е причината това да е така - програмистите вършат мисловна дейност, за разлика от повечето днешни строителни работници. Нищо против тях - старите майстори са доказани, но за жалост от новото поколение малко са кадърните хора. Само си представи следната ситуация: Ти си строителен работник и извършвате ремонтно-довършителни дейности в новосъздаден жилищен блок, ако работодателя те накара за един ден да налепиш със плочки по 15см^2, а ти понеже е по-лесно и също ще свърши работа го направиш с 20см^2 плочки, е доволен ли ще е работодателя? Прочети си последното изречение. --- Към автора, никъде в мнението ти не видях директен въпрос?! Но няколко неща ми направиха впечатление: 1) ceil() и round() далеч не превръщат double value в integer, те просто закръглят числото с плаваща запетая - първата фунцкия връща следващото цяло число (примерно: ceil(0,2) = 1) , а втората функция закръгля, базирайки се на математическото правило за закръгляне - ако стойността на дробната част е >=0.5, закръгля до следващото поред цяло число, в противен случай - до предходното. 2) Нали си написал програмче, не принтира коректни резултати ли? Не съм го компилирал, но ако има някакъв проблем - кажи какъв е.
  22. krisku

    проблем с задачка на C++

    Странно как ти работи програмата, не съм я разглеждал обстойно, но на очи ми се наби следния фрагмент: if(s[red][r]==s[red][r+1]==0) return true; операциите в който се изпълняват в последователен ред from left to right, по време на изпълнение, програмата ще провери първо следния израз: s[red][r]==s[red][r+1], и ще върне стойност зависимост дали съждението е вярно или не (т.е. TRUE или FALSE), след което ти сравняваш върнатия резултат със нулата, така при коректен вход (два последователни нулеви елемента) никога няма да проработи програмчето, поне не в този му вид. #define rowMAX 2 #define colMAX 5 #include <stdio.h> #include <conio.h> /* --- Written on: C ---- With this array values, program will print: Row: 1 Row: 2 */ int input[rowMAX][colMAX] = { {1, 0, 0, 3, 0}, {0, 3, 0, 0, 0} }; // initialize array bool checkN(int curROW) { unsigned curCOL; for(curCOL = 0; curCOL < colMAX - 1; curCOL++) if( ( input[curROW][curCOL] == 0) && ( input[curROW][curCOL+1] ==0 ) ) return true; return false; } int main(void) { unsigned curROW; for(curROW=0; curROW<=rowMAX-1; curROW++) { if( checkN(curROW) == true) printf("Row: %d\n", curROW+1); } getch(); return 0; } Ако съм разбрал правилно условието, това е кода който ще ти свърши работа, не претендирам, че е оптимизиран, дори напротив, но все пак не е написан по възможно най-хамалския начин, както и да е. Не съм вмъквал коментари, защото реално няма какво толкова да се обяснява, в проверката използвам логически оператори, благодарение на които мога да сравня двата физически елемента в масива. Това, че срещаш в кода изрази от този вид value±1, конкретно в този случай се дължи на факта, че в C/C++ (а и много други езици) адресацията на масивите започва от нула, а не от еденица.
  23. krisku

    Къде ми е грешката ?

    Да разбирам ли, че се интересуваш от програмиране, а не знаеш що за чудо е това указателя? Странно! Към автора, видях, че в един съседен форум си получил отговор, та за да не бъде коментара ми пълен OFF, ще ти препоръчам четиво за използване на указателите в C/C++: http://www.augustcouncil.com/~tgibson/tutorial/ptr.html Ключът за бараката е в четене... и премисляне, практикуване на прочетеното. Може в началото да ти е трудно - но не се отказвай, продължавай, научи основата и гради бъдещите си знания върху нея, не се хвърляй в дълбоките води директно, само ще се омоташ. Ще видиш как след време резултата сам ще дойде.
  24. Навсякъде. Аз не видях нещо правилно. Условието също е леко кофти, не се разбира какво точно трябва да се направи - просто сумата да се изведе в шестнадесетичен вид или входа също да е шестнадесетично float число? Ако е второто - с маските за четене/писане на шестнадесетично число (%x и %X) - няма да стане, защото те са за unsigned decimal values, а не за float/double такива. Ако наистина трябва да преобразуваш само резултата в шестнадесетичен вид, алгоритъма е сравнително прост: 1. Разбиваш резултата от действието (събиране, изваждане, умножение, деление) на операндите, на дробна част и целочислена част - разгледай функцията modf(), библиотеката math.h 2. Резултата съхраняваш в масив, като първо изчисляваш целочислената част по вече учения в училище начин - след всяка итерация делиш текущата стойност на 16, като остатъка от всяка стъпка ти е следващ елемент в масив, резултата се записва в обратен ред на получаването. За стойности >9, разгледай ASCII таблицата за да разбереш как можеш да запазиш буквеното означение, вместо реалната стойност (пр. A = 10). 3. Дробната част се изчислява малко по-различно, вместо да делиш умножаваш текущия резултат по базата (в случая: 16) и пазиш цялата стойност от всяка итерация, като за ирационални числа може да си създадеш условие за да си спестиш главоболия - примерно цикъла да се върти 6 пъти, което ти осигурява точност 6 цифри след десетичната запетая. * За да не се налага да конкатенираш (допълваш) втория низ към първия, може просто между двата низа да добавиш десетична запетая/точка, като след това инкрементираш променливата брояч, сочеща текущия елемент, след това просто извършваш нужните действия. 4. Ако имаш нужда да извършваш действия в/у получения резултат, може да използваш atoi(), за char* -> int conversion. --- Ако въведените стойности са "сигурни", може да използваш маската за принтиране на цели неотрицателни числа и да смяташ само дробната част, което те улеснява доста. #include <stdio.h> #include <math.h> // modf() #include <conio.h> // getch() int main(void) { double IntPart, tmpInput, FractPart; tmpInput = 79.25; FractPart = modf(tmpInput, &IntPart); // %x - small letters, %X - large letters printf("%.0f (dec) = %X (hex)", IntPart, (unsigned int) IntPart); getch(); return 0; } --- За определяне на знака при компютрите се добавя допълнителен бит (най-старшия), чиято стойност указва дали стойността след него е положителна или отрицателна, при нужда може да си добавиш и това. Ако нещата които съм написал нямат нищо общо със задачата, просто
  25. За почитателите на Firefox, има spell-checker разширение на нашенски: https://addons.mozilla.org/en-US/firefox/addon/3623?collection_uuid=808f620f-4488-e33f-50b8-ad5eb048cab9 Вива Ему!
  • Разглеждащи това в момента   0 потребители

    Няма регистрирани потребители разглеждащи тази страница.

×
×
  • Добави ново...