Есть тут люди, кто в этом шарит? :-)
Есть вопросы - хотел бы задать :-)
22.06.2008, 14:09 | #56815 |
Старожила
Регистрация: 17.10.2005
Адрес: где то в степях Ярославщины
Сообщения: 399
|
Rocker_dead,баги может и не совсем баги, а так, недочеты, но...
рассмотрим исходник: 1. char m, str[9], mark[9]="01111111"; printf("Vvedite bite-marker \n"); scanf("%s", str); if (strcmp(mark,str)) printf("ERROR"); else printf("Vvedenniy bite marker verniy - 0x7f \n Vipolnit' poisk?"); не совсем понятный фрагмент. Здесь программа просит ввести бит маркер, затем сравнивает его с эталонным (0х7F) и если введен неправильный маркер выдается ошибка. Тогда я не понимаю, какой вообще смысл запрашивать его у пользователя? Не проще ли зашить его жестко в программу? Потом, здесь же, если введенный бит маркер неверен, программа просто выбросит еррор и... продолжит выполняться дальше. Разве что мы не увидим приглашение о поиске. И кстати, дальше в программе ты в цикле проверяешь какие то данные с этим бит маркером, жестко зашитим жестко в проге. 2. if (m=='y') printf("Vvedite massiv is 16 znakov \n"); следующий фрагмент. Мы проверяем ответ пользователя (y/n) и если у, то выводим сообщение на экран и все. программа опять же продолжит выполняться в том же направлении. Тогда смысл подобной проверки? Касательно двух вышеприведенных фрагментов я так понимаю, что ты решил не злоупотреблять фигурными скобками и переусердствовал? 3. for (i=0;i<16;i++) { scanf("%d", a[i]); printf("\n"); for (i=0;i<16;i++) printf("%d", a[i], " "); /*Searching*/ for (i=0;i<9;i++) { if (a[i]==0 && a[i+1]==1 && a[i+2]==1 && a[i+3]==1 && a[i+4]==1 && a[i+5]==1 && a[i+6]==1 && a[i+7]==1) { z[i]=a[i]; z[i+1]=a[i+1]; z[i+2]=a[i+2]; z[i+3]=a[i+3]; z[i+4]=a[i+4]; z[i+5]=a[i+5]; z[i+6]=a[i+6]; z[i+7]=a[i+7]; i=i+8; } else z[i]=0; } for (j=9;j<16;j++) { z[j]=0; } printf("\n"); for (i=0;i<16;i++) { printf("%d", z[i], " "); } getch(); } насчет этого фрагмента. Тут чего то я вообще запутался, равно как и мой отладчик. Вложенные циклы и все такое. Ты используешь переменную i для основного цикла, потом ее же используешь для вложенного. Ладно, это ерунда, так можно делать, но ты не учел, что после первого же вложенного циклапеременная у тебя принимает последнее значение, т.е. 16... короче, смотри сам, программа непонятная, чего она делает я пока не разобрался (пью пока еще).... расскажи хоть алгоритм для начала, там бы подумали... ЗЫ а сегодня день траура... 22 июна в 4 часа утра 1941 года началось вторжение немецких войск на территорию СССР... если кто помнит
__________________
|
23.06.2008, 22:25 | #56829 | |||
Сейлормун
(луна в тельняшке) Регистрация: 04.11.2005
Адрес: Москва, ЮАО, ЧЮ
Сообщения: 504
|
Kostyan, во-первых - спасибо тебе большое за то, что откликнулся.
Цитата:
Цитата:
Цитата:
__________________
[ |
|||
27.06.2008, 01:38 | #56855 |
Старожила
Регистрация: 17.10.2005
Адрес: где то в степях Ярославщины
Сообщения: 399
|
Rocker_dead, все, кажется вкурил. Тогда сдается неправильно реализовал идею.. хотя бы тут:
Код:
if (a[i]==0 && a[i+1]==1 && a[i+2]==1 && a[i+3]==1 && a[i+4]==1 && a[i+5]==1 && a[i+6]==1 && a[i+7]==1) я тут прикинул пару вариантов, посмотри, может чем то поможет. 1. банально посимвольное сравнение (даем проге символ, он сравнивается со всеми вытекающими.. ): Код:
#include <stdio.h> #include <conio.h> int main() { int symbol=0; int bit_marker = 0x7F; // 0x01111111b printf("start: \n"); for(;;) { symbol = getch(); if(symbol==bit_marker) { printf("symbol found: %02X\n",symbol); } else { symbol=0; printf("symbol: %02X\n",symbol); } } return 0; } Код:
#include <stdio.h> #include <conio.h> void main() { unsigned char bit,data=0,out=0; int bit_marker = 0x7F; printf("start: \n"); for(;;) { bit = getch(); if(bit==0x31 || bit ==0x30) { bit &= 0x01; data <<= 1; data &= 0xFE; data |= bit; if(data == bit_marker) { printf("\nbit_marker found!\n"); out = data; } else out = 0; printf("%02X ",out); } } } Код:
printf("%d", a[i], " ");
__________________
|
Здесь присутствуют: 2 (пользователей - 0 , гостей - 2) | |
|
|