Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: Перевод программы с Паскаля на Си  (Прочитано 6969 раз)
0 Пользователей и 1 Гость смотрят эту тему.
macoman99
Новенький

ru
Offline Offline

« : 24-05-2012 19:07 » 

Помогите перевести программу с Паскаля на Си
Код: (Pascal)
Program P1;
Var x0,x1,n,nom,N0,C1: integer;
s0,s1,sh,xt0,sm0,int0,xt1,sm1,int1, PU: real; //Описываем типы данных
function Sinus(gradus : real) : real; // Функция синуса для задания сигнала
var rad : real;
begin
rad:= gradus*Pi/180;
Sinus:= sin(rad);
end;
function integral(x:real):real; // Определенный интеграл, для использования
var //в 3 и 4 блоке структуры оптимального приема
n1,i : integer;
a,b,shag,sum,itog : real;
BEGIN
write('Начало интегрирования a = '); readln(a);
write('Конец интегрирования b = '); readln(b);
write('Количество разбиений интервала n = '); readln(n1);

shag:=(b-a)/n1;
sum:=0;
for i:=1 to n-1 do
sum := sum + sinus(shag*i+a);
sum := sum + (sinus(a)+sinus(b))/2;
itog:=(b-a)/n * sum;
Integral:=itog;
End;

Begin // Начало программы.
Randomize;
n:=Random(100); //Зададим шум, использую ГСЧ.
N0:=Random(1000);
Writeln('Ввод значения сигналов S0 и S1'); //Вводим извествые сигналы S0 и S1.
Readln(x0,x1);
s0:=sinus(x0); s1:=sinus(x1);
sh:=sinus(n);
Writeln('Предположим, что передавался сигнал:');
Readln(nom); //Будем считать что передавался либо сигнал S0, либо сигнал S1.
C1:=0; //Значение порога.
If nom=1 Then
Begin // При условии что в самом начале передавался S0.
xt0:=s0+sh; //Смесь сигнала и шума
sm0:=s0*xt0; // Результат после блока 2.
int0:=(2/N0)*integral(sm0); //Результат после блока 4.

xt1:=s1+sh; //Смесь сигнала и шума.
sm1:=s1*xt1; // Результат после блока 1.
int1:=(2/N0)*integral(sm1); //Результат после блока 3
Writeln;

PU:=s0-s1; // Блок 5.
//Пороговое устройство. Блок 6.
If PU>=C1 Then Writeln('Гипотеза Н0') //Блок 7. Гипотезы.
Else Writeln('Гипотеза Н1'); //Блок 7.
End
Else
Begin
xt1:=s1+sh; //Смесь сигнала и шума
sm1:=s1*xt1; // Результат после блока 2.
int0:=(2/N0)*integral(sm1); //Результат после блока 3

xt0:=s0+sh; //Смесь сигнала и шума
sm0:=s0*xt0; // Результат после блока 2.
int0:=(2/N0)*integral(sm0); //Результат после блока 4
Writeln;

PU:=s1-s0;
If PU>=C1 Then Writeln('Гипотеза Н0') //Блок 7. Гипотезы.
Else Writeln('Гипотеза Н1'); //Блок 7.
End;
End.
проверка на запуск:
Ввод значения сигналов S0 и S1
56 -56
Предположим, что передавался сигнал:
1
Начало интегрирования a = 0
Конец интегрирования b = 15
Количество разбиений интервала n = 1
Начало интегрирования a = 0
Конец интегрирования b = 15
Количество разбиений интервала n = 1

Гипотеза Н0
« Последнее редактирование: 25-05-2012 06:34 от Джон » Записан
RXL
Технический
Администратор

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #1 : 24-05-2012 19:15 » 

В чем трудность?
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines