• B правой части каждого сообщения есть стрелки и . Не стесняйтесь оценивать ответы. Чтобы автору вопроса закрыть свой тикет, надо выбрать лучший ответ. Просто нажмите значок в правой части сообщения.

прога в с++

  • Автор темы Svetlankaya
  • Дата начала
S

Svetlankaya

извините, начали изучение с++ буквально вчера...но уже дали прогу написать...только вот не оч выходит..
Программа решает след задачу:Находит количество точек с целочисленными координатами в кольце, образованном двумя радиусами...вот такая прога на Паскале=>


Код:
uses Crt;
var x0,y0,r1,r2,r,c:real;
y1,y2,x1,x2,n,i,ii:integer;

begin
ClrScr;
write('Vvedite r1: ');
readln(r1);
write('Vvedite r2: ');
readln(r2);
write('Vvedite x0: ');
readln(x0);
write('Vvedite y0: ');
readln(y0);
if r2>r1 then
begin
c:=r1;
r1:=r2;
r2:=c;
end;
x1:=trunc(x0-r1)-1;
y1:=trunc(y0+r1)+1;
x2:=trunc(x0+r1)+1;
y2:=trunc(y0-r1)-1;
for i:=x1 to x2 do
begin
for ii:=y1 downto y2 do
begin
r:=sqrt(sqr(i-x0)+sqr(ii-y0));
if (r>r2) and (r<r1) then
n:=n+1;
end;
end;
writeln('rezult = ',n);
readln;
end.
Попыталась перевести на с++...но не получается...помогите плиз ошибки исправить((

Код:
#include<stdio.h>;
void Main()
{float r1,r2,x0,y0;
printf("Vvedite r1,r2,x0,y0 \n");
scanf("%f%f%f%f",&r1,&r2,&x0,&y0);
if (r1>r2)
{float c=r1;
r1=r2;
r2=c;}
x1=int(x0-r1)-1;
y1=int(y0+r1)+1;
x2=int(x0+r1)+1;
y2=int(y0-r1)-1;
for i=y1 downto y2 do
{
r=sqrt(sqr(i-x0)+sqr(ii-y0));
if ((r>r2) && (r<r1)) 
n:=n+1;
}}print f("Rezultat= ",n);scan f;
}
 
S

Senset

C++:
#include <stdio.h>
#include <math.h>
#include <conio.h>

void main()
{float r1,r2,x0,y0;
printf("Vvedite r1,r2,x0,y0 \n");
scanf("%f%f%f%f",&r1,&r2,&x0,&y0);
if (r1>r2)
{float c=r1;
r1=r2;
r2=c;}
int x1=int(x0-r1)-1;
int y1=int(y0+r1)+1;
int x2=int(x0+r1)+1;
int y2=int(y0-r1)-1;
int n=0;
for (int i=x1;i<=x2;i++)
for (int ii=y1;ii<=y2;ii--)
{
float r=sqrt((i-x0)*(i-x0)+(ii-y0)*(ii-y0));
if (((r>r2)&&(r<r1))) n++;
}
printf("Rezultat=%d",n);
getch();
}

исправлено так, чтобы компилятор не ругался - а насчет алгоритма сам смотри
 
S

Svetlankaya

ага, понятно Senset, спасибо....но почему-то какую то ошибку выдает(((
Ругается((
 
S

Senset

чем компилишь?
в общем для таких целей - рекомендую borland c 3.11 - в нете скачать бесплатно можно
я компилил на нем - не ругается
 
S

Senset

хм... ну как ты можешь понять, раз у меня компилиться - а у тебя нет... то?)))
и к тому же на деве лучше не учиться писать, слишком много всякой фигни расписывать надо типа namespase и const &char и т.д.
лучше начинай учиться на том, с чего все начинали (ибо я думаю, что с borland все учиться начинали)
 
S

Svetlankaya

хорошо, сейчас скачаю)

Добавлено: Senset, а пож объясни мне что делается в каждой из этих строчек(( блин так оказывается трудно переходить с одного языка на другой((
int n=0;
for (int i=x1;i<=x2;i++)
for (int ii=y1;ii<=y2;ii--)
getch();
 
H

hosm

getch(); ждет символа, вместо readln
for (int i=x1;i<=x2;i++) - почитайте в хелпе, вот для этого примера, не усложняя, каждая часть описана в 2 словах:
1)инициализация нач.условие цикла; выполняется перед циклом 1 раз, в данном случае аналог того, что между for и to/downto в паскале
2)условие продолжения цикла, проверка условия выполняется на каждой итерации
3)i++/ii-- инкремент/декремент счетчика цикла, тут аналог того, что определяется путем указания to/downto (в отличие от паскаля, можно указывать не только увеличение-уменьшение на 1)
 
S

Svetlankaya

ОКЕН, спасибо огромное за помощь99
но прога никак не хочет идти...
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!