прога в с++

Тема в разделе "C/C++/C#", создана пользователем Svetlankaya, 17 апр 2010.

  1. Svetlankaya

    Svetlankaya Гость

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


    Код (Delphi):
    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.
    Попыталась перевести на с++...но не получается...помогите плиз ошибки исправить((

    Код (Text):
    #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;
    }
     
  2. Senset

    Senset Well-Known Member

    Регистрация:
    11 сен 2006
    Сообщения:
    136
    Симпатии:
    0
    Код (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();
    }
    исправлено так, чтобы компилятор не ругался - а насчет алгоритма сам смотри
     
  3. Svetlankaya

    Svetlankaya Гость

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

    Senset Well-Known Member

    Регистрация:
    11 сен 2006
    Сообщения:
    136
    Симпатии:
    0
    чем компилишь?
    в общем для таких целей - рекомендую borland c 3.11 - в нете скачать бесплатно можно
    я компилил на нем - не ругается
     
  5. Svetlankaya

    Svetlankaya Гость

    у меня Dev-C++
    не подходит??
     
  6. Senset

    Senset Well-Known Member

    Регистрация:
    11 сен 2006
    Сообщения:
    136
    Симпатии:
    0
    хм... ну как ты можешь понять, раз у меня компилиться - а у тебя нет... то?)))
    и к тому же на деве лучше не учиться писать, слишком много всякой фигни расписывать надо типа namespase и const &char и т.д.
    лучше начинай учиться на том, с чего все начинали (ибо я думаю, что с borland все учиться начинали)
     
  7. Svetlankaya

    Svetlankaya Гость

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

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

    hosm * so what *

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

    Svetlankaya Гость

    ОКЕН, спасибо огромное за помощь99
    но прога никак не хочет идти...
     
Загрузка...

Поделиться этой страницей