0 / 0 / 0
Регистрация: 26.02.2012
Сообщений: 81
1

)Вывести квадрат,состоящий из N x N клеток, заполненных числами от до N^2 по спирали(2<=N<=100).Не допускается начинать спираль в ином,кроме верхнего

02.04.2012, 20:48. Показов 10208. Ответов 21
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
1)Вывести квадрат,состоящий из N x N клеток, заполненных числами от до N^2 по спирали(2<=N<=100).Не допускается начинать спираль в ином,кроме верхнего левого угла, закручивать спираль против часовой стрелки или изнутри наружу.
Входные данные: Выходные данные:
из файла - в первой строке число N. В файл - N строк по N чисел, разделённых пробелами

Примеры

Input.txt
1 2 3
8 9 4
7 6 5

Output.txt
1 2 3 4
12 13 14 5
11 16 15 6
10 9 8 7

2)Круговая площадь
Два круга заданы координатами центров в прямоугольной декартовой системе координат и радиусами. Найти площадь их пересечения.

рисунок:http://www.e-olimp.com/media/u... 801383.JPG

Технические условия
Входные данные
из файла в первой строке через пробел шесть чисел: координаты центра и радиус первого круга, координаты центра и радиус второго круга


Выходные данные

в файл - одно число с двумя знаками после запятой: площадь пересечения кругов

Пример
input.txt
20 30 15 40 30 30

output.txt
608,37
Изображения
 
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
02.04.2012, 20:48
Ответы с готовыми решениями:

Вывести квадрат, состоящий из NxN клеток, заполненных числами от 1 до N2 по спирали
В этой задаче вам необходимо вывести квадрат, состоящий из NxN клеток, заполненных числами от 1 до...

Вывести квадрат, состоящий из NxN клеток, заполненных числами от 1 до N^2 по спирали
Вывести квадрат, состоящий из NxN клеток, заполненных числами от 1 до N2 по спирали (см. примеры)....

Вывести квадрат, состоящий из NxN клеток, заполненных числами от 1 до N² по спирали
Помогите пожалуйста, очень нужно решить эту задачу Вывести квадрат, состоящий из NxN клеток,...

Вывести квадрат, состоящий из клеток, заполненных числами
Здравствуйте, участники форума. Помогите в решении следующей задачи. Вывести квадрат, состоящий...

21
Эксперт С++
4727 / 2548 / 757
Регистрация: 18.08.2009
Сообщений: 4,568
02.04.2012, 21:33 2
1-ая:
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
#include <stdio.h>
 
int main()
{
     freopen("input.txt","r",stdin);
     freopen("output.txt","w",stdout);
     int N, i, j, a[100][100], t=1;
     scanf("%d", &N);
     for(i=0; i<N/2; i++)
     {
         for(j=i; j<N-i; j++)
             a[i][j]=t++;
         for(j=i+1; j<N-i; j++)
             a[j][N-1-i]=t++;
         for(j=N-2-i; j>=i; j--)
             a[N-1-i][j]=t++;
         for(j=N-2-i; j>i; j--)
             a[j][i]=t++;
     }
     if(N%2==1)
         a[N/2][N/2]=t;
     for(i=0; i<N; i++)
     {
         for(j=0; j<N; j++)
             printf("%d ", a[i][j]);
         printf("\n");
     }
 
    return 0;
}
1
0 / 0 / 0
Регистрация: 26.02.2012
Сообщений: 81
04.04.2012, 15:08  [ТС] 3
спасибо)

Добавлено через 59 секунд
а кто знает как вторую сделать?
0
Эксперт С++
4727 / 2548 / 757
Регистрация: 18.08.2009
Сообщений: 4,568
04.04.2012, 16:14 4
Цитата Сообщение от димарик Посмотреть сообщение
а кто знает как вторую сделать?
всего три случая:
- круги не пересекаются.
- один круг находится полностью в другом
- круги пересекаются (как на картинке)
Два первых случая простые. Последний случай посложнее, но тоже разрешим.
Вот ссылка: http://http://algolist.manual.... rcle2d.php поможет найти точки пересечения окружностей.

Вот эта ссылка: http://http://www.esci.ru/ttb/solution-89.htm поможет расчитать площадь двух сегменов.
Не получится, выкладывайте то что получилось, будем дальше решать.
0
0 / 0 / 0
Регистрация: 26.02.2012
Сообщений: 81
04.04.2012, 16:38  [ТС] 5
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
//---------------------------------------------------------------------------
 
#pragma hdrstop
#include <iostream>
#include <conio.h>
#include <math.h>
using namespace std;
//---------------------------------------------------------------------------
 
#pragma argsused
int main(int argc, char* argv[])
{
        int x1,y1,r1,x2,y2,r2,d,x,a,u1,u2,ss1,st1,s1,ss2,st2,s,s2;
        cout<<"vvedite koordinati centra u radius pervogo kruga";
        cin>>x1,y1,r1;
        cout<<"vvedite koordinati centra u radius vtorogo kruga";
        cin>>x2,y2,r2;
        d=sqrt(sqrt(x1-x2)+sqrt(y1-y2));
        {
        if (d>=r1+r2)
        s=0;
 
        else
        if (d<=abs(r1-r2))
        {
        if (r1<r2)
        s=3.14*r1*r1;
        else
        s=3.14*r2*r2;
        }}
        x=(d*d-r1*r1+r2*r2)/(2*d);
        a=sqrt(r1*r1-x*x);
        u1=2*atan(a/x);
        s1=r1*r1*(u1-sin(u1))/2;
        u2=2*atan(a/(d-x));
        s2=r2*r2*(u2-sin(u2))/2;
        s=s1+s2;
        cout<<"ploshad"<<s<<endl;
        _getch();
        return 0;
}
//---------------------------------------------------------------------------

вот мой код но он не правильный почему то(

Добавлено через 58 секунд
если есть возможность,помоги решить её оч надо(
0
Эксперт С++
4727 / 2548 / 757
Регистрация: 18.08.2009
Сообщений: 4,568
04.04.2012, 16:57 6
эту формулу:
Цитата Сообщение от димарик Посмотреть сообщение
d=sqrt(sqrt(x1-x2)+sqrt(y1-y2));
откуда брали?
0
0 / 0 / 0
Регистрация: 26.02.2012
Сообщений: 81
04.04.2012, 17:03  [ТС] 7
с книги
0
Эксперт С++
4727 / 2548 / 757
Регистрация: 18.08.2009
Сообщений: 4,568
04.04.2012, 17:42 8
Цитата Сообщение от димарик Посмотреть сообщение
с книги
или в книге ошибка, или кто-то неправильно списал.
0
0 / 0 / 0
Регистрация: 26.02.2012
Сообщений: 81
04.04.2012, 17:53  [ТС] 9
а можете помочь как будет я просто не понимаю как эту задачу сделать.....
0
Эксперт С++
4727 / 2548 / 757
Регистрация: 18.08.2009
Сообщений: 4,568
04.04.2012, 17:59 10
Вы даже не нашли точки пересечения окружностей, а начали дальше вычислять. Не вычисляйте сразу площадь, сначало используя материал первой ссылки, расчитайте координаты точек пересечения окружности и покажите что получилось. При этом учтите, что там даны расчеты, когда первая окружность находится в центре системы координат - т.е. Вам нужно обе эти окружности смещать.

Добавлено через 1 минуту
C++
1
d=sqrt(sqrt(x1-x2)+sqrt(y1-y2));
замените на:
C++
1
d=sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2));
0
0 / 0 / 0
Регистрация: 26.02.2012
Сообщений: 81
04.04.2012, 18:13  [ТС] 11
заменил а что дальше?

Добавлено через 54 секунды
заменил,а что дальше?
0
Эксперт С++
4727 / 2548 / 757
Регистрация: 18.08.2009
Сообщений: 4,568
04.04.2012, 18:20 12
Переходите по первой ссылке. Расчитывайте (как показано в ссылке) сначало a (d вы уже расчитали), потом h, потом две x3 (допустим назовете их x3a, x3b) и потом две y3 (назовите их y3a, y3b). Потом показывайте что получилось, дальше пока не нужно.
0
0 / 0 / 0
Регистрация: 26.02.2012
Сообщений: 81
04.04.2012, 18:22  [ТС] 13
ссылки не открывает
0
Эксперт С++
4727 / 2548 / 757
Регистрация: 18.08.2009
Сообщений: 4,568
04.04.2012, 18:25 14
http://algolist.manual.ru/math... rcle2d.php

Добавлено через 42 секунды
вторая:
http://www.esci.ru/ttb/solution-89.htm
0
0 / 0 / 0
Регистрация: 26.02.2012
Сообщений: 81
04.04.2012, 18:30  [ТС] 15
я не понял формулы как найти а и h(не напишите)?
0
Эксперт С++
4727 / 2548 / 757
Регистрация: 18.08.2009
Сообщений: 4,568
04.04.2012, 18:35 16
Цитата Сообщение от димарик Посмотреть сообщение
я не понял формулы как найти а и h(не напишите)?

Не по теме:

зачем вам решать тогда подобные задачи?


Что не понятного в нахождении a? d уже расчитано, r0 - радиус первого круга, r1 - радиус второго круга.
0
0 / 0 / 0
Регистрация: 26.02.2012
Сообщений: 81
04.04.2012, 18:38  [ТС] 17
int x1,y1,r1,x2,y2,r2,d,x3a,x3b,y3a,y3b,a,h;
cout<<"vvedite koordinati centra u radius pervogo kruga";
cin>>x1,y1,r1;
cout<<"vvedite koordinati centra u radius vtorogo kruga";
cin>>x2,y2,r2;
d=sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2));
a=(r1*r1-r2*r2+d*d)/(2*d);
h*h=r1*r1-a*a;
так?
0
Эксперт С++
4727 / 2548 / 757
Регистрация: 18.08.2009
Сообщений: 4,568
04.04.2012, 18:44 18
Цитата Сообщение от димарик Посмотреть сообщение
C++
1
h*h=r1*r1-a*a;
заменить на:
C++
1
h=sqrt(r1*r1-a*a);
да еще все переменные делайте не int а double.
0
0 / 0 / 0
Регистрация: 26.02.2012
Сообщений: 81
04.04.2012, 18:58  [ТС] 19
int x1,y1,r1,x2,y2,r2,d,x3a,x3b,y3a,y3b,a,h;
cout<<"vvedite koordinati centra u radius pervogo kruga";
cin>>x1,y1,r1;
cout<<"vvedite koordinati centra u radius vtorogo kruga";
cin>>x2,y2,r2;
d=sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2));
a=(r1*r1-r2*r2+d*d)/(2*d);
h=sqrt(r1*r1-a*a);
x3a=x2+-h*(y2-y1)/d;
x3b=x2+-h*(y2-y1)/d;
y3a=y2-+h*(x2-x1)/d;
y3b=y2-+h*(x2-x1)/d;
вот так?

Добавлено через 10 минут
ну так как

Добавлено через 58 секунд
поменял на double
0
Эксперт С++
4727 / 2548 / 757
Регистрация: 18.08.2009
Сообщений: 4,568
04.04.2012, 19:03 20
димарик, слушайте, без обид, в классе 7 в школе проходят решение квадратных уравнений, при вычислении x используют значек (плюс-минус). Здесь такая же ситуация....
0
04.04.2012, 19:03
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
04.04.2012, 19:03
Помогаю со студенческими работами здесь

Вывести квадрат заполненный числами по спирали
Есть код, но на сайте пишет неправильный вид вывода, подскажите в чем причина? Заранее спасибо)...

Заполнить массив состоящий из N элементов случайными числами в интервале от -100 до 100
Как заполнить массив состоящий из N элементов случайными числами в интервале от -100 до 100. В...

Заполнить массив числами от 1 до n^2, расположенными по спирали, начиная с левого верхнего угла и продвигаясь по часовой стрелке
Помогите построить задачку на двумерный массив! Заполнить квадратную таблицу размером n*n...

Заполнить двумерный массив указанного размера последовательными натуральными числами, двигаясь от верхнего левого элемента вправо и далее по спирали
Заполнить двумерный массив указанного размера последовательными натуральными числами, двигаясь от...

Заполнить двумерный массив целыми числами от 1 до 100 по спирали
Заполнить двумерный массив целыми числами от 1 до 100 по спирали

Заполнить двумерный массив целыми числами от 1 до 100 по спирали
Заполнить двумерный массив целыми числами от 1 до 100 по спирали Начал изучение c++. Работаю в...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru