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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 23, средняя оценка - 4.65
димарик
0 / 0 / 0
Регистрация: 26.02.2012
Сообщений: 81
#1

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

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

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++):

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

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

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

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

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

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

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
valeriikozlov
Эксперт C++
4669 / 2495 / 321
Регистрация: 18.08.2009
Сообщений: 4,550
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;
}
димарик
0 / 0 / 0
Регистрация: 26.02.2012
Сообщений: 81
04.04.2012, 15:08  [ТС] #3
спасибо)

Добавлено через 59 секунд
а кто знает как вторую сделать?
valeriikozlov
Эксперт C++
4669 / 2495 / 321
Регистрация: 18.08.2009
Сообщений: 4,550
04.04.2012, 16:14 #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  [ТС] #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++
4669 / 2495 / 321
Регистрация: 18.08.2009
Сообщений: 4,550
04.04.2012, 16:57 #6
эту формулу:
Цитата Сообщение от димарик Посмотреть сообщение
d=sqrt(sqrt(x1-x2)+sqrt(y1-y2));
откуда брали?
димарик
0 / 0 / 0
Регистрация: 26.02.2012
Сообщений: 81
04.04.2012, 17:03  [ТС] #7
с книги
valeriikozlov
Эксперт C++
4669 / 2495 / 321
Регистрация: 18.08.2009
Сообщений: 4,550
04.04.2012, 17:42 #8
Цитата Сообщение от димарик Посмотреть сообщение
с книги
или в книге ошибка, или кто-то неправильно списал.
димарик
0 / 0 / 0
Регистрация: 26.02.2012
Сообщений: 81
04.04.2012, 17:53  [ТС] #9
а можете помочь как будет я просто не понимаю как эту задачу сделать.....
valeriikozlov
Эксперт C++
4669 / 2495 / 321
Регистрация: 18.08.2009
Сообщений: 4,550
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
Регистрация: 26.02.2012
Сообщений: 81
04.04.2012, 18:13  [ТС] #11
заменил а что дальше?

Добавлено через 54 секунды
заменил,а что дальше?
valeriikozlov
Эксперт C++
4669 / 2495 / 321
Регистрация: 18.08.2009
Сообщений: 4,550
04.04.2012, 18:20 #12
Переходите по первой ссылке. Расчитывайте (как показано в ссылке) сначало a (d вы уже расчитали), потом h, потом две x3 (допустим назовете их x3a, x3b) и потом две y3 (назовите их y3a, y3b). Потом показывайте что получилось, дальше пока не нужно.
димарик
0 / 0 / 0
Регистрация: 26.02.2012
Сообщений: 81
04.04.2012, 18:22  [ТС] #13
ссылки не открывает
valeriikozlov
Эксперт C++
4669 / 2495 / 321
Регистрация: 18.08.2009
Сообщений: 4,550
04.04.2012, 18:25 #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  [ТС] #15
я не понял формулы как найти а и h(не напишите)?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
04.04.2012, 18:30
Привет! Вот еще темы с ответами:

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
04.04.2012, 18:30
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru