Показать полную графическую версию : Нужно перевести с pascal на C и добавить циклы к ней
Есть прога на паскале. Нужно перевести ее:
Program tochka;
uses crt;
var
r,x,y:real;
begin
clrscr;
writeln ('vvedite x,y,z');
readln (x,y,z);
if ((sqr(x)+sqr(y)<=sqr(r)) and (sqr(r-x)+sqr(r-y)<=sqr(r))) then
begin
if (sqr(x)+sqr(y)=sqr(r)) or (sqr(r-x)+sqr(r-y)=sqr(r)) then
writeln ('popadaet na granicu') else write ('popadaet');
end
else write ('ne popadaet');
readln;
end.
Циклов 3:
1) Проверка R(радиуса). Если R<=0, то R вводим заново. Если обратное - продолжаем; (Потом вводим значения x,y)
2) Далее цикл, спрашивающий: изменить ли значения x,y. Если да, то программа возвращается к моменту после R. Если нет - продолжаем;
3) Далее цикл, спрашивающий: ввести R? Если нет, программа заканчивается, а если да, то программа возвращается к самому началу
Спасибо
не на чем скомпилировать, но на память както так
стандартные библиотеки +
#include <math.h>
#include <iostream.h>
void main()
{
double r;
double x;
double y;
cin << "vvedite x,y,z \n";
cout >> x >> y >> z;
if ( sqrt(x)+sqrt(y) <= sqrt(r) && sqrt(r-x) + sqrt(r-y) <= sqrt(r) )
if (sqrt(x)+sqrt(y) = sqrt(r) || sqrt(r-x) + sqrt(r-y) = sqrt(r) )
cin << "popodaet na granizy \n";
else
cin << "popadaet";
else
cin << "ne popadaet";
getch(); //вот эта строка чтото в памяти осталась что будет ждать нажатия кнопки, не уверен что сработает.
}
это для консоли естественно
а что еще за циклы ты написал?? помочь их реализовать тоже?
Да, было бы не плохо
И прога почему-то не работает
Печальный чайник
26-01-2011, 13:18
"стандартные библиотеки +" в начале листинга проги стёрли, надеюсь?
Во-вторых, Beyound перепутал cin << и cout >>, поменяйте их местами, а внутри условия if замените = на ==, в-третьих, замените все использования функции типа sqrt(x) на x*x, в-четвёртых, добавьте double z;.
No Need In Magic
01-02-2011, 12:35
пардон, а где переменной r присваивается значение?
в паскале, скорее всего, r будет равна нулю
на сях - хз чему
да действительно - нет присваивания.. касяк. Но я переводил то что написано, нету присваивания в паскале - нету и в си.
а на тему что будет... ну в visual 2008 - будет ошибка, которая будет говорить что переменная не инициализирована. Нуля не будет точно... в старых компиляторах (если память не изменяет - то и в таких случаях) просто бралось значение из памяти, выделенной под переменную (фактически случайное число)
No Need In Magic
02-02-2011, 11:58
да действительно - нет присваивания.. касяк. Но я переводил то что написано, нету присваивания в паскале - нету и в си. »
ну это был вопрос не к вам, а к автору
Нуля не будет точно... в старых компиляторах (если память не изменяет - то и в таких случаях) просто бралось значение из памяти, выделенной под переменную (фактически случайное число) »
ну на Code:Blocks, который компилит на си, так и есть, да
я про тот же Turbo Pascal 7, там почти всегда переменные обнуляются уже при инициализации
переписал исходное на cpp и поправил малец очевидное:
// tochka.cpp
// #include <cmath>
#include <iostream>
#include <iomanip>
using namespace std;
#include <conio.h>
int main(int argc, char** argv)
{
float r, x, y;
system("cls");
cout << "Vvedite x, y, r:" << endl;
cin >> x >> y >> r;
cout << endl;
float ry = r - y, rx = r - x;
if( ( x * x + y * y <= r * r ) && ( rx * rx + ry * ry <= r * r ) )
{
if( ( x * x + y * y == r * r ) && ( rx * rx + ry * ry == r * r ) )
cout << "Popodaet na granitsy" << endl;
else
cout << "Popodaet" << endl;
}
else cout << "Ne popodaet" << endl;
cout << "Dlia vihoda najmite liobyio klavishy...";
getch();
return 0;
};
это компилируется и работает. Хм а что оно делает? Вроде проверяет входит ли точка в круг, но проверок имхо больше...
:ok:
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.