Вернуться   Foxter.ru > Мой компьютер > Программирование

Ответ
 
Опции темы Опции просмотра
Старый 10.12.2005, 15:12   #4832  
Модератор
 
Аватар для azalio
 
Репутация: 6476Репутация: 6476Репутация: 6476Репутация: 6476Репутация: 6476Репутация: 6476Репутация: 6476Репутация: 6476Репутация: 6476Репутация: 6476Репутация: 6476
Регистрация: 07.12.2005
Сообщения: 260
По умолчанию C++

Есть тут люди, кто в этом шарит? :-)
Есть вопросы - хотел бы задать :-)
azalio вне форума   Ответить с цитированием
Старый 15.06.2008, 17:40   #56431  
Сейлормун
(луна в тельняшке)
 
Аватар для Rocker_dead
 
Репутация: 498335Репутация: 498335Репутация: 498335Репутация: 498335Репутация: 498335Репутация: 498335Репутация: 498335Репутация: 498335Репутация: 498335Репутация: 498335Репутация: 498335
Регистрация: 04.11.2005
Адрес: Москва, ЮАО, ЧЮ
Сообщения: 504
По умолчанию

Kostyan, укажи тогда хоть на баги
__________________

Rocker_dead вне форума   Ответить с цитированием
Старый 22.06.2008, 14:09   #56815  
Старожила
 
Аватар для Kostyan
 
Репутация: 132277Репутация: 132277Репутация: 132277Репутация: 132277Репутация: 132277Репутация: 132277Репутация: 132277Репутация: 132277Репутация: 132277Репутация: 132277Репутация: 132277
Регистрация: 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 года началось вторжение немецких войск на территорию СССР... если кто помнит
__________________
the signature is absent
Kostyan вне форума   Ответить с цитированием
Старый 23.06.2008, 22:25   #56829  
Сейлормун
(луна в тельняшке)
 
Аватар для Rocker_dead
 
Репутация: 498335Репутация: 498335Репутация: 498335Репутация: 498335Репутация: 498335Репутация: 498335Репутация: 498335Репутация: 498335Репутация: 498335Репутация: 498335Репутация: 498335
Регистрация: 04.11.2005
Адрес: Москва, ЮАО, ЧЮ
Сообщения: 504
По умолчанию

Kostyan, во-первых - спасибо тебе большое за то, что откликнулся.

Цитата:
Сообщение от Kostyan
сегодня день траура...
Да, помним...

Цитата:
Тогда я не понимаю, какой вообще смысл запрашивать его у пользователя?
Это просто так, для наглядности, программа не работает на какой то эффект.
Цитата:
расскажи хоть алгоритм для начала, там бы подумали...
После прохождения проверки маркера на вход программы (теоретически с порта) идёт последовательность 0 и 1. и нужно определить наличие в ней этого маркера и вывести эту последовательность, оставив единицы тока этого бит-маркера, а остальное заполнить нулями
__________________

Rocker_dead вне форума   Ответить с цитированием
Старый 27.06.2008, 01:38   #56855  
Старожила
 
Аватар для Kostyan
 
Репутация: 132277Репутация: 132277Репутация: 132277Репутация: 132277Репутация: 132277Репутация: 132277Репутация: 132277Репутация: 132277Репутация: 132277Репутация: 132277Репутация: 132277
Регистрация: 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;
}
2. тут в принципе тоже самое, только эмулируется битовый последовательный поток:
Код:
#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], " ");
__________________
the signature is absent
Kostyan вне форума   Ответить с цитированием
Ответ


Здесь присутствуют: 2 (пользователей - 0 , гостей - 2)
 

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход



Powered by vBulletin
Copyright ©2000-2024, Jelsoft Enterprises Ltd.
[Foxter Skin] developed by: Foxter.ru