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

Задача "Салфетки" - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ повторный прогон программы http://www.cyberforum.ru/cpp-beginners/thread1004987.html
Подскажите, пожалуйста, как сделать повторный прогон алгоритмов без запуска программы (хотите начать заново? (y/n)). На примере простейшей программы "Hello, world". #include <iostream> int main() { std::cout<<"Hello, world!\n"; }
C++ программа не работает задание: Определить входит ли введённая цифра в заданное натурально число. код выдаёт ошибки и я не могу понять как их исправить т.к. нуб. помогите пожалуйста.... код программы: #include <iostream> using namespace std; int main() { http://www.cyberforum.ru/cpp-beginners/thread1004980.html
Помогите найти ошибку в коде C++
Проблема вот в чём, есть программа, довольно большая по кол-ву строк и поэтому весь код показать не смогу, впринципе вопрос такой: -после завершения работы функции с объектом в меню есть пункт завершения выполнения(case 4), но при выборе этого пункта выскакивает ошибка и я не могу понять почему, может вы поймёте в чем собственно проблема... это вот меню для данного класса: void class::menut()...
Ошибка в алгоритме Рунге-Кутты C++
Здравствуйте! При выполнении курсовой работы по вычислению координат положения спутника ГЛОНАСС столкнулся с ошибкой, что неправильно вычисляются координаты. Числа похожие, но не те. Есть рабочая программа написанная на языке Pascal. Никак не могу найти, чем мой код не соответствует коду, который рабочий. Просьба помочь найти ошибку. Код C++ полностью готов к компилированию, код Pascal не мой и...
C++ Как в файле перейти на новую строчку? http://www.cyberforum.ru/cpp-beginners/thread1004953.html
Как в файле перейти на новую строчку? Пробовал так fstream sc("Save\\1.txt");//Открыл файл sc.getline(infscore,'endl'); //Считал инфу до конца строки ......... lenscore=strlen(infscore)+1; //Жалкая попытка перейти sc.seekg(lenscore); // на новую строку
C++ Вызов функции проверки Доброго времени суток! 2-ой день мучаюсь с задачей. Есть массив прямоугольников, вершины которых я считал с файла. Задача состоит в том, чтобы проверить пересекаются ли они. Сделал соответствующую функцию : bool Intersects(Rect Obj1, Rect Obj2) { int ax,ay,ax1,ay1,bx,by,bx1,by1; ax = Obj1.ItsUpperLeftGetX(); ay = Obj1.ItsUpperLeftGetY(); ax1 = Obj1.ItsLowerRightGetX(); подробнее

Показать сообщение отдельно
triadec_96
12 / 12 / 1
Регистрация: 27.12.2012
Сообщений: 442
Завершенные тесты: 1

Задача "Салфетки" - C++

11.11.2013, 22:24. Просмотров 309. Ответов 4
Метки (Все метки)

Задача:
На квадратный стол размером NХN раскладывают разноцветные прямоугольные салфетки.
Каждая салфетка кладется параллельно сторонам стола , салфетки могут лежать друг на друге и свисать со стола , или даже падать мимо стола.
Салфетка задается координатами углов : левый верхний , правый нижний ( целые числа ) и цветом ( буква)
Левый верхний угол стола имеет координаты 0,0
Какие цвета будут видны на столе когда все салфетки будет разложено .
Входные данные : файл Din.dat
Первая строка число N пропуск число K
Следующие K строк задают салфетки в порядке преподавания
Каждая строка имеет вид: ltrbc (где ltr b - целые числа , с - латинская буква )
Выходные данные : файл Din.res в котором строка букв цветов ( в алфавитном порядке)
Пример:: файл Din.dat
5 5
-1 -1 4 4 R
2 1 2 2 C
1 1 3 2 b
-1 4 6 8 B
6 4 6 6 g
файл Din.res
BRb
Я начал писать эту программу и мой код дошёл до этого вида.
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
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
#include <iostream>
#include <fstream>
#include <math.h>
using namespace std;
void main()
{int n,i,j,l[255],t[255],r[255],b[255],id=0,q=0;
        char* ch;
        char* c;
        char* v;
        char a; bool x; float d,s[255];
ifstream f("Din.dat");
f>>n;
f>>n;
while(!f.eof())
{f>>l[id];
f>>t[id];
f>>r[id];
f>>b[id];
f>>ch[id];}
 
for(i=0;i<=id;i++)
{if(l[i]<0) l[i]=0;
if(t[i]>0) t[i]=0;
if(r[i]>n) r[i]=n;
if(b[i]<n*(-1)) b[i]=n*(-1);}
 
for(i=0;i<=id;i++)//площа квадрата=діагональ в квадраті/2
{d=abs(pow(l[i]-r[i],2)+pow(t[i]-b[i],2));
s[i]=d*d/2;}
 
for(i=0;i<=id;i++)
    for(j=i+1;j<=id;j++)
        if((l[j]<r[i]) && (l[j]>l[i]) && (t[j]<t[i]) && (t[j]>b[i])) s[i]-=(abs(pow(l[j]-r[i],2)+pow(t[j]-b[i],2))*abs(pow(l[j]-r[i],2)+pow(t[j]-b[i],2)))/2;
        else if((r[j]<r[i]) && (r[j]>l[i]) && (t[j]>b[j]) && (t[j]<t[i])) s[i]-=(abs(pow(l[i]-r[j],2)+pow(t[j]-b[i],2))*abs(pow(l[i]-r[j],2)+pow(t[j]-b[i],2)))/2;
        else if((r[j]<r[i]) && (r[j]>l[i]) && (b[j]>b[i]) && (b[j]<t[i])) s[i]-=(abs(pow(l[i]-r[j],2)+pow(t[i]-b[j],2))*abs(pow(l[i]-r[j],2)+pow(t[i]-b[j],2)))/2;
        else if((l[j]<r[i]) && (l[j]>l[i]) && (b[j]<t[i]) && (b[j]>b[i])) s[i]-=pow(abs(pow(l[j]-r[i],2)+pow(t[i]-b[j],2)),2)/2;
        else if((l[j]==l[i]) && (t[j]==t[i]) && (r[j]<r[i]) && (b[j]>b[i])) s[i]-=(abs(pow(l[j]-r[j],2)+pow(t[i]-b[j],2))*abs(pow(l[j]-r[j],2)+pow(t[i]-b[j],2)))/2;
        else if((l[i]==l[j]) && (b[j]==b[i]) && (r[j]<r[i]) && (t[j]<t[i])) s[i]-=pow(abs(pow(l[i]-r[j],2)+pow(t[j]-b[i],2)),2)/2;
        else if((r[i]==r[j]) && (b[i]==b[j]) && (l[j]>l[i]) && (t[j]<t[i])) s[i]-=pow(abs(pow(l[j]-r[i],2)+pow(t[j]-b[i],2)),2)/2;
        else if((l[j]>l[i]) && (t[j]<t[i]) && (r[j]<r[i]) && (b[j]>b[i])) s[i]-=s[j];
        else if((l[j]<l[i]) && (t[j]>t[i]) && (r[j]>r[i]) && (b[j]<b[i])) s[i]=0;
 
        n=0;
        for(i=0;i<=id;i++)
            if(s[i]>0) {c[n]=ch[i];n++;}
 
n=0;
    for(i=0;i<=n;i++)
    {a=c[i];x=0;
        for(j=i+1;j<=n;j++)
            if(a==c[j]) x=1;
        if (x==0)
        {v[q]=c[i];
        q++;}
    }
 
        ofstream ff("Din.txt");
        ff<<v;
        ff.close();
 
}
Но я немного наптупил и забыл учесть тот факт,что салфетку могут положить мимо стола и забыл за число k 9вместо него у меня счётчик id).
В 2012 ВС выбивало ошибку при считывании ch[id].Но когда я запустил эту программу в ВС 2010,то выбивало ошибку на каждом "pow",хотя math.h был подключен.
Ещё ребята смеялись,когда увидили мой код и сказали,что весь код состоит с "четырёх строк".
Напишите пожалуйста алгоритм получше моего.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru