Форум программистов, компьютерный форум CyberForum.ru

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

Восстановить пароль Регистрация
 
 
Рейтинг: Рейтинг темы: голосов - 23, средняя оценка - 4.65
димарик
0 / 0 / 0
Регистрация: 26.02.2012
Сообщений: 81
02.04.2012, 20:48     )Вывести квадрат,состоящий из N x N клеток, заполненных числами от до N^2 по спирали(2<=N<=100).Не допускается начинать спираль в ином,кроме верхнего #1
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/upload/...1290801383.JPG

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


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

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

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

output.txt
608,37
Изображения
 
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.04.2012, 20:48     )Вывести квадрат,состоящий из N x N клеток, заполненных числами от до N^2 по спирали(2<=N<=100).Не допускается начинать спираль в ином,кроме верхнего
Посмотрите здесь:

Заполнить матрицу ЛП, от левого верхнего угла по спирали: вправо - вниз - влево - вверх. C++
Массив размерностью 30 заполнить случайными числами, лежащими в диапозоне от -100 до 100 C++
Заполнить массив числами от 1 до n^2, расположенными по спирали, начиная с левого верхнего угла и продвигаясь по часовой стрелке C++
C++ Заполнить массив 3х3 числами по возрастанию, по спирали начиная с центра
Слияние двух массивов, заполненных случайными числами, в третий C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
valeriikozlov
Эксперт C++
 Аватар для valeriikozlov
4660 / 2486 / 321
Регистрация: 18.08.2009
Сообщений: 4,550
02.04.2012, 21:33     )Вывести квадрат,состоящий из N x N клеток, заполненных числами от до N^2 по спирали(2<=N<=100).Не допускается начинать спираль в ином,кроме верхнего #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;
}
димарик
0 / 0 / 0
Регистрация: 26.02.2012
Сообщений: 81
04.04.2012, 15:08  [ТС]     )Вывести квадрат,состоящий из N x N клеток, заполненных числами от до N^2 по спирали(2<=N<=100).Не допускается начинать спираль в ином,кроме верхнего #3
спасибо)

Добавлено через 59 секунд
а кто знает как вторую сделать?
valeriikozlov
Эксперт C++
 Аватар для valeriikozlov
4660 / 2486 / 321
Регистрация: 18.08.2009
Сообщений: 4,550
04.04.2012, 16:14     )Вывести квадрат,состоящий из N x N клеток, заполненных числами от до N^2 по спирали(2<=N<=100).Не допускается начинать спираль в ином,кроме верхнего #4
Цитата Сообщение от димарик Посмотреть сообщение
а кто знает как вторую сделать?
всего три случая:
- круги не пересекаются.
- один круг находится полностью в другом
- круги пересекаются (как на картинке)
Два первых случая простые. Последний случай посложнее, но тоже разрешим.
Вот ссылка: http://http://algolist.manual.ru/mat...lecircle2d.php поможет найти точки пересечения окружностей.

Вот эта ссылка: http://http://www.esci.ru/ttb/solution-89.htm поможет расчитать площадь двух сегменов.
Не получится, выкладывайте то что получилось, будем дальше решать.
димарик
0 / 0 / 0
Регистрация: 26.02.2012
Сообщений: 81
04.04.2012, 16:38  [ТС]     )Вывести квадрат,состоящий из N x N клеток, заполненных числами от до N^2 по спирали(2<=N<=100).Не допускается начинать спираль в ином,кроме верхнего #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 секунд
если есть возможность,помоги решить её оч надо(
valeriikozlov
Эксперт C++
 Аватар для valeriikozlov
4660 / 2486 / 321
Регистрация: 18.08.2009
Сообщений: 4,550
04.04.2012, 16:57     )Вывести квадрат,состоящий из N x N клеток, заполненных числами от до N^2 по спирали(2<=N<=100).Не допускается начинать спираль в ином,кроме верхнего #6
эту формулу:
Цитата Сообщение от димарик Посмотреть сообщение
d=sqrt(sqrt(x1-x2)+sqrt(y1-y2));
откуда брали?
димарик
0 / 0 / 0
Регистрация: 26.02.2012
Сообщений: 81
04.04.2012, 17:03  [ТС]     )Вывести квадрат,состоящий из N x N клеток, заполненных числами от до N^2 по спирали(2<=N<=100).Не допускается начинать спираль в ином,кроме верхнего #7
с книги
valeriikozlov
Эксперт C++
 Аватар для valeriikozlov
4660 / 2486 / 321
Регистрация: 18.08.2009
Сообщений: 4,550
04.04.2012, 17:42     )Вывести квадрат,состоящий из N x N клеток, заполненных числами от до N^2 по спирали(2<=N<=100).Не допускается начинать спираль в ином,кроме верхнего #8
Цитата Сообщение от димарик Посмотреть сообщение
с книги
или в книге ошибка, или кто-то неправильно списал.
димарик
0 / 0 / 0
Регистрация: 26.02.2012
Сообщений: 81
04.04.2012, 17:53  [ТС]     )Вывести квадрат,состоящий из N x N клеток, заполненных числами от до N^2 по спирали(2<=N<=100).Не допускается начинать спираль в ином,кроме верхнего #9
а можете помочь как будет я просто не понимаю как эту задачу сделать.....
valeriikozlov
Эксперт C++
 Аватар для valeriikozlov
4660 / 2486 / 321
Регистрация: 18.08.2009
Сообщений: 4,550
04.04.2012, 17:59     )Вывести квадрат,состоящий из N x N клеток, заполненных числами от до N^2 по спирали(2<=N<=100).Не допускается начинать спираль в ином,кроме верхнего #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
Регистрация: 26.02.2012
Сообщений: 81
04.04.2012, 18:13  [ТС]     )Вывести квадрат,состоящий из N x N клеток, заполненных числами от до N^2 по спирали(2<=N<=100).Не допускается начинать спираль в ином,кроме верхнего #11
заменил а что дальше?

Добавлено через 54 секунды
заменил,а что дальше?
valeriikozlov
Эксперт C++
 Аватар для valeriikozlov
4660 / 2486 / 321
Регистрация: 18.08.2009
Сообщений: 4,550
04.04.2012, 18:20     )Вывести квадрат,состоящий из N x N клеток, заполненных числами от до N^2 по спирали(2<=N<=100).Не допускается начинать спираль в ином,кроме верхнего #12
Переходите по первой ссылке. Расчитывайте (как показано в ссылке) сначало a (d вы уже расчитали), потом h, потом две x3 (допустим назовете их x3a, x3b) и потом две y3 (назовите их y3a, y3b). Потом показывайте что получилось, дальше пока не нужно.
димарик
0 / 0 / 0
Регистрация: 26.02.2012
Сообщений: 81
04.04.2012, 18:22  [ТС]     )Вывести квадрат,состоящий из N x N клеток, заполненных числами от до N^2 по спирали(2<=N<=100).Не допускается начинать спираль в ином,кроме верхнего #13
ссылки не открывает
valeriikozlov
Эксперт C++
 Аватар для valeriikozlov
4660 / 2486 / 321
Регистрация: 18.08.2009
Сообщений: 4,550
04.04.2012, 18:25     )Вывести квадрат,состоящий из N x N клеток, заполненных числами от до N^2 по спирали(2<=N<=100).Не допускается начинать спираль в ином,кроме верхнего #14
http://algolist.manual.ru/maths/geom...lecircle2d.php

Добавлено через 42 секунды
вторая:
http://www.esci.ru/ttb/solution-89.htm
димарик
0 / 0 / 0
Регистрация: 26.02.2012
Сообщений: 81
04.04.2012, 18:30  [ТС]     )Вывести квадрат,состоящий из N x N клеток, заполненных числами от до N^2 по спирали(2<=N<=100).Не допускается начинать спираль в ином,кроме верхнего #15
я не понял формулы как найти а и h(не напишите)?
valeriikozlov
Эксперт C++
 Аватар для valeriikozlov
4660 / 2486 / 321
Регистрация: 18.08.2009
Сообщений: 4,550
04.04.2012, 18:35     )Вывести квадрат,состоящий из N x N клеток, заполненных числами от до N^2 по спирали(2<=N<=100).Не допускается начинать спираль в ином,кроме верхнего #16
Цитата Сообщение от димарик Посмотреть сообщение
я не понял формулы как найти а и h(не напишите)?

Не по теме:

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


Что не понятного в нахождении a? d уже расчитано, r0 - радиус первого круга, r1 - радиус второго круга.
димарик
0 / 0 / 0
Регистрация: 26.02.2012
Сообщений: 81
04.04.2012, 18:38  [ТС]     )Вывести квадрат,состоящий из N x N клеток, заполненных числами от до N^2 по спирали(2<=N<=100).Не допускается начинать спираль в ином,кроме верхнего #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;
так?
valeriikozlov
Эксперт C++
 Аватар для valeriikozlov
4660 / 2486 / 321
Регистрация: 18.08.2009
Сообщений: 4,550
04.04.2012, 18:44     )Вывести квадрат,состоящий из N x N клеток, заполненных числами от до N^2 по спирали(2<=N<=100).Не допускается начинать спираль в ином,кроме верхнего #18
Цитата Сообщение от димарик Посмотреть сообщение
C++
1
h*h=r1*r1-a*a;
заменить на:
C++
1
h=sqrt(r1*r1-a*a);
да еще все переменные делайте не int а double.
димарик
0 / 0 / 0
Регистрация: 26.02.2012
Сообщений: 81
04.04.2012, 18:58  [ТС]     )Вывести квадрат,состоящий из N x N клеток, заполненных числами от до N^2 по спирали(2<=N<=100).Не допускается начинать спираль в ином,кроме верхнего #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
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
04.04.2012, 19:03     )Вывести квадрат,состоящий из N x N клеток, заполненных числами от до N^2 по спирали(2<=N<=100).Не допускается начинать спираль в ином,кроме верхнего
Еще ссылки по теме:

C++ Заполнить квадратную матрицу от левого верхнего угла по спирали
C++ Заполните матрицу натуральными числами по спирали и змейкой
C++ Заполнить квадратную матрицу натуральными числами по спирали

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

Или воспользуйтесь поиском по форуму:
valeriikozlov
Эксперт C++
 Аватар для valeriikozlov
4660 / 2486 / 321
Регистрация: 18.08.2009
Сообщений: 4,550
04.04.2012, 19:03     )Вывести квадрат,состоящий из N x N клеток, заполненных числами от до N^2 по спирали(2<=N<=100).Не допускается начинать спираль в ином,кроме верхнего #20
димарик, слушайте, без обид, в классе 7 в школе проходят решение квадратных уравнений, при вычислении x используют значек (плюс-минус). Здесь такая же ситуация....
Yandex
Объявления
04.04.2012, 19:03     )Вывести квадрат,состоящий из N x N клеток, заполненных числами от до N^2 по спирали(2<=N<=100).Не допускается начинать спираль в ином,кроме верхнего
Ответ Создать тему
Опции темы

Текущее время: 11:02. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru