Некоторые проги

Некоторые проги

Повідомлення Batarchuk » 31 березня 2011, 21:07

Должна узнавать пересекается ли два круга или нет, но работает странно и не корректно :
#include <iostream>
#include <math.h>
using namespace std;
// This program is not working
int main()
{
float d,r1,r2,x1,x2,y1,y2;
cout<<"Input r1 = " ;
cin>>r1 ;
cout<<"Input x1 = " ;
cin>>x1;
cout<<"Input y1 = " ;
cin>>y1;
cout<<"Input r2 = " ;
cin>>r2;
cout<<"Input x2 = " ;
cin>>x2;
cout<<"Input y2 = " ;
cin>>y2;

d = sqrt((x2-x1)*(x2-x1)+(y2-y1)*(y2-y1));
if (d>=(r1+r2))
{
cout<<"They are acrossing!!!"<< endl;
}
else
{
cout<<"They aren`t acrossing :-(("<<endl;
}
system ("PAUSE");

}
Група 3. Батарчук Сергій.
Аватар користувача
Batarchuk
 
Повідомлень: 294
З нами з: 18 жовтня 2010, 18:18
Звідки: Сватове

Re: Некоторые проги

Повідомлення Obi-Van » 31 березня 2011, 21:32

if (d<=(r1+r2))
Ефименко тебя убила бы за ето ))
Гринько Олександр, 1 група
Аватар користувача
Obi-Van
 
Повідомлень: 80
З нами з: 20 лютого 2011, 19:56

Re: Некоторые проги

Повідомлення Batarchuk » 01 квітня 2011, 16:22

А так что-ли нельзя?
Група 3. Батарчук Сергій.
Аватар користувача
Batarchuk
 
Повідомлень: 294
З нами з: 18 жовтня 2010, 18:18
Звідки: Сватове

Re: Некоторые проги

Повідомлення Obi-Van » 01 квітня 2011, 16:38

Batarchuk написав:А так что-ли нельзя?

ну какбе круги будут пересекаться если расстояние между центрами МЕНЬШЕ или равно за суму их радиусов...
Гринько Олександр, 1 група
Аватар користувача
Obi-Van
 
Повідомлень: 80
З нами з: 20 лютого 2011, 19:56

Re: Некоторые проги

Повідомлення Василь » 01 квітня 2011, 20:12

ну какбе круги будут пересекаться если расстояние между центрами МЕНЬШЕ или равно за суму их радиусов...

Те, которые не лежат один в одном ))) По моему...
Аватар користувача
Василь
 
Повідомлень: 907
З нами з: 15 жовтня 2010, 02:08

Re: Некоторые проги

Повідомлення Obi-Van » 01 квітня 2011, 20:22

Василь написав:
ну какбе круги будут пересекаться если расстояние между центрами МЕНЬШЕ или равно за суму их радиусов...

Те, которые не лежат один в одном ))) По моему...

хмм... точно )
ну тогда надо рассматривать варианты... типо если х2 лежит в пределах (х1-r1; x1+r1), a y2 в (у1-r1; y1+r1) или как-то так... короче, ето дело математики )
Гринько Олександр, 1 група
Аватар користувача
Obi-Van
 
Повідомлень: 80
З нами з: 20 лютого 2011, 19:56

Re: Некоторые проги

Повідомлення Василь » 29 травня 2011, 09:27

Код: Виділити все
/*
Запитання: Визначити клас ДАТА – інформація про день, місяць, рік.
Реалізувати операцію віднімання двох дат – кількість днів між ними,
а також додавання та віднімання певної кількості днів для одержання нової дати
*/
#include <iostream>
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
using namespace std;

struct Tdmy{ // структура
       long d,m,y; //  число місяць рік
       void dmy_pp(int count=1){ // дата плюс плюс
           int i=0;
           do{
            i++;           
            d++;
            switch (m){
                   case 1: if (d>31) {d=1; m++;} break;
                   case 2: if (d> ((y % 4 == 0) ? 29 : 28)  ) {d=1; m++;} break;
                   case 3: if (d>31) {d=1; m++;} break;
                   case 4: if (d>30) {d=1; m++;} break;
                   case 5: if (d>31) {d=1; m++;} break;
                   case 6: if (d>30) {d=1; m++;} break;
                   case 7: if (d>31) {d=1; m++;} break;
                   case 8: if (d>31) {d=1; m++;} break;
                   case 9: if (d>30) {d=1; m++;} break;
                   case 10: if (d>31){d=1; m++;} break;
                   case 11: if (d>30){d=1; m++;} break;
                   case 12: if (d>31){d=1; m=1; y++;} break;
                   // перевіряємо корректність
            }   
            }while (i<>count);
       }
       void dmy_mm(){ // дата мінус мінус
            d--;
            if (d=0){
                     
              switch (m){
                     case 1: y--; m=12; d=31; break;
                     case 2: m--; d=31; break;
                     case 3: m--; d=(y % 4 == 0) ? 29 : 28; break;
                     case 4: m--; d=31; break;
                     case 5: m--; d=30; break;
                     case 6: m--; d=31; break;
                     case 7: m--; d=30; break;
                     case 8: m--; d=31; break;
                     case 9: m--; d=31; break;
                     case 10: m--; d=30; break;
                     case 11: m--; d=31; break;
                     case 12: m--; d=30; break;
                 }   
            }
       }
       
       void show_date(){ // функція виводить дату
            cout<<"The date is (d.m.y) : "<<d<<"."<<m<<"."<<y<<endl;           
       }
       void enter_date(){ // функція вводить дату
            cout<<"Enter DATE "<<endl;
            cout<<" D : ";
            cin>>d;
            cout<<" M : ";
            cin>>m; 
            cout<<" Y : ";
            cin>>y;
            cout<<endl;           
                     
       }             
};
int test(Tdmy p1,Tdmy p2){
    // функція приймає дві дати і виводить такі результати:
    // кто раньше: 1 - первый; 2 - второй; 0 - одинаковые
     if (p1.y>p2.y){
        return 2;
     }     
     if (p1.y<p2.y){
        return 1;
     }     
     // если года одинаковые... продолжаем наш тест ))
     // ща месяца
     if (p1.m>p2.m){
        return 2;
     }     
     if (p1.m<p2.m){
        return 1;
     }     
     // теперь дни
     if (p1.d>p2.d){
        return 2;
     }     
     if (p1.d<p2.d){
        return 1;
     }     
     // если ничего не подошло - тогда даты одинаковые     
     return 0;
}
long DateIntervalCount(Tdmy p1,Tdmy p2){ // різниця дат (кількість днів між датами)
     // функція підраховує кількість днів між датами
    int result=test(p1,p2); // дати рівні
   
    if ( result == 0 ) return 0; // p1=p2
    if ( result == 2 ) { //p1>p2
       // міняємо місцями дати
          Tdmy temp=p1;
          p1=p2;
          p2=temp;   
    }
    long interval=0; // часовий інтервал = 0
     while (test(p1,p2)!=0)
     {// інкрементуємо дату до тих пір, поки дати не зрівняються
        interval++;
        p1.dmy_pp();
     }
           
     return interval;
}
int main(){
    Tdmy var1; // створили структуру
    Tdmy var2; // створили структуру   
   
    do{
       system("cls");
        cout<<"enter 1: \n";
        var1.enter_date(); // ввели дату 1
        cout<<"enter 2: \n";
        var2.enter_date();// ввели дату 2
       
        var1.show_date();    // вивели дату1
        var2.show_date();        //         2
        cout<<" Date interval is "<< DateIntervalCount(var1,var2)<<endl;// вивели інтервал в днях
        cout<<endl<<"Press ESC to exit..."<<endl;
    } while (getch()!=27); // якщо ESC - то виходимо
    system("PAUSE");   
    return 0;
}
Аватар користувача
Василь
 
Повідомлень: 907
З нами з: 15 жовтня 2010, 02:08

Re: Некоторые проги

Повідомлення Василь » 31 травня 2011, 03:29

Код: Виділити все
/*
Завдання: реалізувати клас- група тварин. Реалізувати можливість
включення та виключення тварин у групу, сортування їх за різними
 ознаками.
*/

#include <iostream>
#include <conio.h>
#include <stdlib.h>
#include <cstring>
#define n 100
#define sdata1 "Nazva knugu"
#define sdata2 "Avtor"

using namespace std;

//===========================================================================
class Tlibrary{
      public:
      char data1[n]; // назва книги
      char data2[n]; // автор
     
     
      void EnterInfo(){
           fflush(stdin);
           cout<<" Enter "<<sdata1<<" : ";
           cin.getline(&data1[0],n);

           cout<<" Enter "<<sdata2<<" : ";
           cin.getline(&data2[0],n);           
      }
      void ShowInfo(){
           fflush(stdin);
           cout<<"  \t"<<sdata1<<" : \t"<<&data1[0];
           cout<<"  \t"<<sdata2<<" : \t"<<&data2[0];
      }
     
};
//===========================================================================
int confirm(){// функція виводить підтвердження на екран
   char key; // зчтьувана клавіша
   do // цикл
   {
      cout<<endl<<" Confirm [Y/N]? "<<endl;
      key=getch();
      cout<<key;
   } while (key!='n' && key!='N' && key!='Y' && key!='y' ); // якщо натиснуто одну з перелічених клавіщ - вийти з циклу
   if (key=='y' || key=='Y') return 1; else return 0; //якщо y - повернути 1, інакше - 0
      
}
//===========================================================================
long EnterNumber(long max){  // функція повертає зчитане введене з клавіатури число, і в випадку, якщо число не з діапазону [0;max] просить користувача, переввести число
   long nn; // в цю змінну буде зчитуватись число введенне з клавіатури
   do{
      cout<<endl<<"Enter number [ 0 - "<<max-1<<" ] :";
      cin>>nn;
   if (nn<0 || nn>max-1) {cout<<endl<<" ERROR!!! "<<endl;}
   }while (nn<0 || nn>max-1); // умова виходу з циклу
   return nn; // воертає ввдеене число
}

//===========================================================================

void AddRecord(Tlibrary *lib,int &count){
     system("cls");
/*
     if (count==0){
          cout<<" No records found!"<<endl;
          system("pause");
        return ;
     }
*/
     Tlibrary temp;
     cout<<"Entering data at "<<count<<" position\n";
     temp. EnterInfo();
     if (confirm()){
        *(lib+count)=temp;
        count++;
     }
}
//===========================================================================
void EditRecord(Tlibrary *lib,int &count){
     system("cls");

     if (count==0){
          cout<<" No records found!"<<endl;
          system("pause");
        return ;
     }
     int nn=EnterNumber(count);
     Tlibrary temp=*(lib+nn);
     cout<<"Editing data at "<<nn<<" position\n";
     temp.ShowInfo();
     cout<<endl<<"===================================================="<<endl;
     temp. EnterInfo();
     if (confirm()){
        *(lib+nn)=temp;
     }
}
void DeleteRecord(Tlibrary *lib,int &count){
     system("cls");

     if (count==0){
          cout<<" No records found!"<<endl;
          system("pause");
        return ;
     }
     int nn=EnterNumber(count);
     Tlibrary temp=*(lib+nn);
     cout<<"Delete data at "<<nn<<" position\n";
     temp.ShowInfo();
     cout<<endl<<"===================================================="<<endl;

     if (confirm()){
        for (int i=nn+1 ; i<count ; i++)
        {
         *(lib+i-1)=*(lib+i);
         }
         count--;
     }
}

//===========================================================================
void ShowRecord(Tlibrary *lib,int &count){
     system("cls");

     if (count==0){
          cout<<" No records found!"<<endl;
          system("pause");
        return ;
     }
     int nn=EnterNumber(count);
     Tlibrary temp=*(lib+nn);
     cout<<"Data at "<<nn<<" position\n";
     temp.ShowInfo();
     cout<<endl<<"===================================================="<<endl;
    system("pause");
}
//===========================================================================
void FindRecord(Tlibrary *lib,int &count){
     system("cls");

     if (count==0){
          cout<<" No records found!"<<endl;
          system("pause");
        return ;
     }
     char *query = new char [n*3];
     cout<<"\nEnter find query : ";
     cin.getline(query,n*3);
     int founded=0;
     for (int i = 0 ; i < count ; i++){
         if (
         (strcmp(((lib+i)->data1), (query) )==0)
         ||
         (strcmp(((lib+i)->data2), (query) )==0)

         )
         {
          cout<<i<<" : ";
                  (lib+i)->ShowInfo();
                  cout<<endl;
                  founded++;
         }

         

     }
         cout<<"Founded "<<founded<<" record(s)\n";
     cout<<endl<<"===================================================="<<endl;
    system("pause");
}

//===========================================================================
void showmenu(){
//     setlocale(LC_ALL,"cp1251");
      Tlibrary *lib=new Tlibrary[n];
      int count=0;
     char key;
     do
     {
          system("cls");
          cout<<" Your database have "<<count<<" record(s) "<<endl<<endl;
          cout<<" Program main menu: "<<endl<<endl;
          cout<<" 1) Add record"<<endl;
          cout<<" 2) Edit record "<<endl;                   
          cout<<" 3) Delete record "<<endl;                             
          cout<<" 4) Show record "<<endl;                     
          cout<<" 5) Find record "<<endl;                     
         
          cout<<" ESC) Exit "<<endl;                     
          key=getch();         
          switch (key){
                 case '1': AddRecord(lib,count); break;
                 case '2': EditRecord(lib,count); break;
                 case '3': DeleteRecord(lib,count); break;
                 case '4': ShowRecord(lib,count); break;                                                   
                 case '5': FindRecord(lib,count); break;
          }
                             

     } while (key!=27);
}
//===========================================================================
int main(){
    showmenu();
    return 0;
}
Аватар користувача
Василь
 
Повідомлень: 907
З нами з: 15 жовтня 2010, 02:08


Повернутись до Флуд

Хто зараз онлайн

Зараз переглядають цей форум: Немає зареєстрованих користувачів і 3 гостей

cron