Перевод с Pascal на С

Ответить
Foxtrot_1
Сообщения: 1
Зарегистрирован: 20 июн 2009, 22:29

Добрый вечер уважаемые форумчане. Помогите перевести код. Сам не могу пока, учусь.
ТЗ:
1.Написать программу для учета радиостанций.
2.Ввести параметры:
а) координаты,дальность действия стационарных радиостанций (от 0 до 50 км);
б) координаты 2-х людей,дальность действия их переносных радиостанций (от 0 до 50 км);
3.Установить возможность связи двух абонентов с заданными координатами, а также ближайшие к ним станции.

Код: Выделить всё

uses crt;
type
Point=record
      x,y:real;
      end;
Stanc=record
      koor:Point;
      daln:byte;
      end;
function Rasst(a,b:Point):real;
begin
Rasst:=sqrt(sqr(a.x-b.x)+sqr(a.y-b.y));
end;
var m:array[1..4] of Stanc;
    ab1,ab2:Stanc;
    i,k:byte;
    min:real;
begin
clrscr;
writeln('Vvedite dannye po stancyam, dalnost ne dolgna prevyshat 50 km:');
for i:=1 to 4 do
 begin
  writeln('Stancya ',i);
  write(' Koordinata X=');readln(m[i].koor.x);
  write(' Koordinata Y=');readln(m[i].koor.y);
  repeat
  write(' Dalnoct=');readln(m[i].daln);
  until m[i].daln in [1..50];
 end;
writeln('Vvedite dannye po abonentam:');
writeln(' Abonent 1:');
write('  Koordinata X=');readln(ab1.koor.x);
write('  Koordinata Y=');readln(ab1.koor.y);
repeat
write('  Dalnoct=');readln(ab1.daln);
until ab1.daln in [1..50];
writeln(' Abonent 2:');
write('  Koordinata X=');readln(ab2.koor.x);
write('  Koordinata Y=');readln(ab2.koor.y);
repeat
write('  Dalnoct=');readln(ab2.daln);
until ab2.daln in [1..50];
if (Rasst(ab1.koor,ab2.koor)<=ab1.daln)and(Rasst(ab1.koor,ab2.koor)<=ab2.daln)
then writeln('Svyas megdy abonentami vozmogna!')
else writeln('Svyas megdy abonentami ne vozmogna!');
min:=50;k:=1;
for i:=1 to 4 do
if Rasst(ab1.koor,m[i].koor)<min then
 begin
  min:=Rasst(ab1.koor,m[i].koor);
  k:=i;
 end;
writeln('Bligayshaya k abonenty 1, stancya',k);
min:=50;k:=1;
for i:=1 to 4 do
if Rasst(ab2.koor,m[i].koor)<min then
 begin
  min:=Rasst(ab2.koor,m[i].koor);
  k:=i;
 end;
writeln('Bligayshaya k abonenty 2, stancya',k);
writeln('press any key for exit');
readkey;
end.
Вложения
strctr.jpg
strctr.jpg (83.32 КБ) 158 просмотров
Аватара пользователя
Airhand
Сообщения: 239
Зарегистрирован: 06 окт 2005, 16:21
Откуда: Dnepropetrovsk

Переводил на форуме, на "лету". Так, что может не компилиться.
Я просто переводил прогу не вникая в её суть. Нужно подклють также хидеры для компиляции. Примерно так:

Код: Выделить всё

struct Point
{
     float x,y;

};
struct Stanc
{
      Point koor;
      char daln;
};
float Rasst(const Point a,b) //тут изменил тип входящих параметров
{
    return sqrt(sqr(a.x-b.x)+sqr(a.y-b.y));
}
Stanc m[4];
Stanc ab1, ab2;
char k;
float min;
int main() //не помню аргументов
{
    //не помню как делается clrscr
    printf('Vvedite dannye po stancyam, dalnost ne dolgna prevyshat 50 km:');
    for (unsigned int i=0; i<4; ++i)
    {
        printf("Stancya  %d", i);
        printf(" Koordinata X= ");
        scanf(m[i].koor.x); //не помню как
        printf(" Koordinata Y=");
        scanf(m[i].koor.y);
    }
    do
    {
        printf(" Dalnoct=");
        scan(m[i].daln); //тут явная ошибка: не исправлял
    }
    while(!(1 >= m[i].daln && 50 < m[i].daln));

    printf("Vvedite dannye po abonentam:");
    printf(" Abonent 1:");
    printf("  Koordinata X=");
    scan(ab1.koor.x);
    prinf("  Koordinata Y=");
    scan(ab1.koor.y);
    do
    {
        printf("  Dalnoct=");
        scan(ab1.daln);
    }
    while(!(1 >= ab1.daln && 50 < ab1.daln));
    printf(" Abonent 2:");
    printf("  Koordinata X=");
    scan(ab2.koor.x);
    printf("  Koordinata Y=");
    scan(ab2.koor.y);
    do
    {
        printf("  Dalnoct=");
        scan(ab2.daln);
    }
    while(!(1 >= ab2.daln && 50 < ab2.daln));
    if ((Rasst(ab1.koor, ab2.koor) <= ab1.daln) && (Rasst(ab1.koor, ab2.koor) <= ab2.daln))
    {
        printf("Svyas megdy abonentami vozmogna!");
    }
    else
    {
        printf("Svyas megdy abonentami ne vozmogna!");
    }
    min = 50; 
    k = 1;
for (unsigned int i = 0; i < 4; ++i)
{
    if (Rasst(ab1.koor,m[i].koor) < min)
    {
        min = Rasst(ab1.koor,m[i].koor);
        k = i;
    }
}
printf("Bligayshaya k abonenty 1, stancya %d", k);
min = 50;
k = 1;
for (unsigned char i = 0; i < 4; ++i)
{
    if (Rasst(ab2.koor,m[i].koor) < min)
    {
        min = Rasst(ab2.koor, m[i].koor);
        k = i;
    }
}
printf("Bligayshaya k abonenty 2, stancya %d",k);
printf("press any key for exit");
scan();
Ответить