Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 13.01.2011, 21:48   #1
athleet
Пользователь
 
Регистрация: 18.12.2010
Сообщений: 22
По умолчанию Ошибка в программе про передачу кадров

Всем привет. Помогите найти ошибку. Ошибка не синтаксическая, а в целом в написании программы.
Блок-схема к программам http://c-tt.ru/content/?fl=484&sn=269

Отправка:
Код:
program netkadr;
var i, k, j, succ, err: integer;
p: real;
begin
Randomize;
write('Vvedite veroyatnost: '); read(p);
succ := 0;
err := 0;
for i:=1 to 1000 do begin
k := 1;
while Random < p do begin
writeln('Delay. Waiting...');
end;
writeln('Delay IFG.');
for j := 1 to 16 do begin
if Random < p then begin
writeln('Send jam-signal.');
Inc(k);
end;
end;
writeln(k);
if (k = 15) then begin
write(i);
writeln(' cadr not sended. ERROR STATUS!');
Inc(err)
end else begin
write(i);
writeln(' cadr successfully sended. OK STATUS!');
Inc(succ);
end;
end;
write('Summ count of successes - '); writeln(succ);
write('Summ count of errors - '); writeln(err);
end.
Получение:
Код:
program receiveCadr;
var p: real;
i, received, reseted: integer;
failed: boolean;
begin
Randomize;
reseted := 0;
received := 0;
write('Vvedite veroyatnot: ');
readln(p);
for i := 1 to 1000 do begin
failed := false;
write('Poluchenie kadra # ');
writeln(i);
while Random < p do begin
writeln('Ne obnaruzhen priemnyj signal.');
end;
writeln(Random:0:2);
if Random < p then begin
failed := true;
write('Pole FCS neverno. Kadr # ');
write(i);
writeln(' sbroshen.');
Inc(reseted);
end;
if (Random < p) and (failed = false) then begin
failed := true;
write('Adres naznacheniya ne sovpadaet s shirokoveschatelnym adresom. Kadr # ');
write(i);
writeln(' sbroshen.');
Inc(reseted);
end;
if (failed = false) then begin
write('Kadr # ');
write(i);
writeln(' prinyat i peredan na obrabotku protokolom bolee vysokogo urovnya.');
Inc(received);
end;
end;
write('Vsego polucheno: ');
writeln(received);
write('Vsego sbrosheno: ');
writeln(reseted);
end.
athleet вне форума Ответить с цитированием
Старый 14.01.2011, 20:01   #2
athleet
Пользователь
 
Регистрация: 18.12.2010
Сообщений: 22
По умолчанию

Видит кто-нибудь?
athleet вне форума Ответить с цитированием
Старый 14.01.2011, 23:02   #3
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

А в чем проявляется ошибка?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 15.01.2011, 18:23   #4
athleet
Пользователь
 
Регистрация: 18.12.2010
Сообщений: 22
По умолчанию

Что-то связано с "p". Наверное слишком часто идет значение меньше p. Так построена правильно, но есть маленький недочет. Какой не знаю. Не программист.
athleet вне форума Ответить с цитированием
Старый 15.01.2011, 18:53   #5
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

В первой поправь на
Код:
write('Vvedite veroyatnost: '); readln(p);
И в конце обоих поставь
Код:
readln;
end.
А так они работают
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 15.01.2011, 20:49   #6
athleet
Пользователь
 
Регистрация: 18.12.2010
Сообщений: 22
По умолчанию

Спасибо, исправлю. Препод показывал на сравнение рандома и вероятности, и говорил что так не должно быть, но задача в целом написана правильно =)

Последний раз редактировалось athleet; 15.01.2011 в 20:52.
athleet вне форума Ответить с цитированием
Старый 15.01.2011, 21:07   #7
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Препод показывал на сравнение рандома и вероятности, и говорил что так не должно быть
Почему? Вполне может. Если в Random не указан параметр то он вернет число между 0 и единицей. Так что все там норм.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 15.01.2011, 21:34   #8
athleet
Пользователь
 
Регистрация: 18.12.2010
Сообщений: 22
По умолчанию

Так, что-то упомянул про то что рандом может быть и выше вероятности и это тоже надо учесть.
athleet вне форума Ответить с цитированием
Старый 16.01.2011, 19:11   #9
athleet
Пользователь
 
Регистрация: 18.12.2010
Сообщений: 22
По умолчанию

Появилась подробность. Вероятность приема\передачи кадра нужно измерять двумя переменными, чтобы получились более правдоподобные результаты.

Как это осуществить?
athleet вне форума Ответить с цитированием
Старый 16.01.2011, 19:31   #10
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Кажись так:
Код:
(a-Random(b)) < p
Учитывая что число будет выпадать в пределах [a;b]
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вопрос. Про передачу массива DartDayring Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 4 29.03.2010 02:27
Не могу найти ошибку в программе про рентабельность pergeot Паскаль, Turbo Pascal, PascalABC.NET 1 03.11.2009 14:46
Ошибка в программе на С++ Vikelf Помощь студентам 3 15.05.2009 15:05
не работает удаление и поиск в программе про бинарное дерево Барби Общие вопросы C/C++ 6 24.12.2008 22:20
Осуществить передачу с клавы в объекты в программе с++ Барби Фриланс 1 23.12.2008 11:17