Премини към съдържанието
Форумът в приложение

По-лесно сърфиране. Научи повече.

Kaldata.com - Форуми

Приложение на форума на цял екран с push известия, значки и други.

За да инсталирате това приложение на iOS и iPadOS
  1. Докоснете Иконата за споделяне в Safari
  2. Превъртете менюто и докоснете Добавяне към началния екран.
  3. Докоснете Добавяне в горния десен ъгъл.
За да инсталирате това приложение на Android
  1. Докоснете менюто с 3 точки (⋮) в горния десен ъгъл на браузъра.
  2. Докоснете Добавяне към началния екран или Инсталиране на приложение.
  3. Потвърдете, като докоснете Инсталиране.

Добре дошли!

Добре дошли в нашите форуми, пълни с полезна информация. Имате проблем с компютъра или телефона си? Публикувайте нова тема и ще намерите решение на всичките си проблеми. Общувайте свободно и открийте безброй нови приятели.

Моля, регистрирайте се за да публикувате тема и да получите пълен достъп до всички функции.

 

Задача на C++ - Курсова работа

Featured Replies

Точките в координатната равнина описваме с абсциса, ордината и назоваваща буква (голяма, латинска). Да се напише компютърна програма, която:

А. Въвежда данните за 22 точки, като контролира ординатите на всеки две въведени точки да бъдат или равни, или с противоположни знакове. След въвеждане на данни за точка, нарушаващи указаното изискване, да се въвеждат наново неправилните или пълните данни за тази точка, но да не се променят данните за въведените преди нея точки.

Б. Извежда данните за всички точки по ред на нарастване на разстоянието от точката до абсцисната ос, а при равно 

 

Някой може ли да удари едно рамо за тази задача?

  • 2 седмици по-късно...
  • Автор

Вярна ли е ?

 

#include <stdafx.h>
#include <iostream>
using namespace std;

int x[4], y[4], t, r;
char A[4];
int main()
{
    for (int i = 1; i <= 4; i++)
    {
    B:
        cout << "Vyvedi bukwa na tochka " << i << " :";
        cin >> A;
        for (t = 1; t < i; t++)
        {
            if (A == A[t]) goto B;

        }
    C:
        cout << "Vyvedi absciza na tochka " << A << ":";
        cin >> x;
        cout << "Vyvedi ordinata na tochka " << A << ":";
        cin >> y;
        int j = i - 1;
        while (j > 0)
        {
            if (((y == y[j]) && (x != x[j])) || ((y > 0 && y[j] < 0) || (y[j] > 0 && y < 0)) || i==1)

                j=0;

            else {
                cout << "Nekorektni danni na tochka" << endl;
                goto C;
            }


        }

    }


    system("PAUSE");
    return 0;
}

 

Редактирано от wazap2 (преглед на промените)

#include <iostream>

using namespace std;

#define N 22

struct point
    {
        char A;
        double X;
        double Y;
    };

void swap(point a[], int i, int j)
{
     char c;
     double t;
     c=a[i].A; a[i].A=a[j].A; a[j].A=c;
     t=a[i].X; a[i].X=a[j].X; a[j].X=t;
     t=a[i].Y; a[i].Y=a[j].Y; a[j].Y=t;
}

int main()
{
    point a[N];
    int flag;
    
    for (int i=0; i<N; ++i)
    {
        a[i].A='A'+i;
        do
        {
            cout<<"Point "<<a[i].A<<".X = ";
            cin>>a[i].X;
            cout<<"Point "<<a[i].A<<".Y = ";
            cin>>a[i].Y;
            flag=(i==0)||(a[i-1].Y==a[i].Y)||((a[i-1].Y<0)^(a[i].Y<0));
            if (!flag) cout<<"Wrong data for point "<<a[i].A;
            cout<<endl;
        } while(!flag);
    }
    
    for (int i=0; i<N-1; ++i)
    {
        int m=i;
        for (int j=i+1; j<N; ++j)
            if (a[m].X>a[j].X) m=j;
        swap(a,i,m);
    }
    
    for (int i=0; i<N; ++i)
        cout<<a[i].A<<'\t'<<a[i].X<<'\t'<<a[i].Y<<endl;
    system("pause");
}

В условието липсва какво трябва да се направи при сортирането ако абцисите на точките са равни

Цитат

Б. Извежда данните за всички точки по ред на нарастване на разстоянието от точката до абсцисната ос, а при равно ???

 

  • Автор

Извинявам се

Б. Извежда данните за всички точки по ред на нарастване на разстоянието от точката до абсцисната ос, а при равно такова разстояние ‒ по ред на намаляване на абсцисата. 

 

преди 10 часа, wazap2 написа:

Извинявам се

Б. Извежда данните за всички точки по ред на нарастване на разстоянието от точката до абсцисната ос, а при равно такова разстояние ‒ по ред на намаляване на абсцисата. 

Не съм сигурен какво би трябвало да значи " нарастване на разстоянието от точката до абсцисната ос" - може би абсолютната стойност на ординатата???

 

Редактирано от ined (преглед на промените)

  • 2 седмици по-късно...
  • 1 месец по-късно...

Здравейте ! Имам проблем с една задача която ми е за курсова работа...ще съм благодарна ако някой ми помогне . Докарвам задачата до case 2 и по натам не мога да се сетя как да изкарам исканата информация . Благодаря предварително за помоща!

Задачата е :

В една аптека всяко лекарство(наименование,цена,срок на годност)е доставено
от доставчик(име, тел, адрес)и вносител(име,тел,адрес).
Данните за всяко лекарство, неговия доставчик и вносител се съхраняват в масив
Да се състави програма, която изпълнява от меню следните опреации:
- добавя към масива данните на ново лекарство;
-извежда всички въведени данни;
-Извежда данните на вносителя,с които работи определен доставчик
-Създава масив с данните за лекарствата,внасяни от посочения вносител
-Създава масив с данните на всички вносители,внасящи посоченото лекарство.

 Аз съм написала това :

#include <iostream>
#include <conio.h>
#include <stdlib.h>
#include <string.h>
using namespace std;

class CDost{ // Доставчик
public:
    char name[21], adress[16], phone[15];
    void getData();
    void display();
};
void CDost::getData(){
    cout << "Въведи Име на доставчика: "; cin.getline(name, 21);
    cout << "Въведи адрес на доставчика: "; cin.getline(adress, 16);
    cout << "Въведи телефон на доставчика: "; cin >> phone;
    cin.ignore();
}
void CDost::display(){
    cout << "Име: " << name << endl;
    cout << "Адрес: " << adress << endl;
    cout << "Телефон: " << phone << endl;
}
class CVnos{ // вносител
public:
    char name[21], adress[16], phone[15];
    void getData();
    void display();
};
void CVnos::getData(){
    cout << "Въведи Име на вносителя: "; cin.getline(name, 21);
    cout << "Въведи адрес на вносителя: "; cin.getline(adress, 16);
    cout << "Въведи телефон на вносителя: "; cin >> phone;
    cin.ignore();
}
void CVnos::display(){
    cout << "Име: " << name << endl;
    cout << "Адрес: " << adress << endl;
    cout << "Телефон: " << phone << endl;
}
class CSrok{         //срок на годност
public:
    int D, M, G;
     void getData();
     void display();
};
void CSrok::getData(){
    cout << "Въведете ден: "; cin >> D;
    cout << "Въведете месец: "; cin >> M;
    cout << "Въведете година: "; cin >> G;
    cin.ignore();
}
void CSrok::display(){
    cout << "ден: " << D << "месец: " << M << "година: " << G << endl;
}
class CLekarstva :public CDost, public CVnos{
public:
    char namelek[21];
    float price;
    CSrok date;
    void getData();
    void display();
};
void CLekarstva::getData(){
    cout << " Въведи наименование на лекарството:"; cin.getline(namelek, 21);
    cout << "Доставчик:" << endl;
    CDost::getData();
    cout << "Вносител:" << endl;
    CVnos::getData();
    cout << " Цена на лекарството:"; cin >> price;
    cout << "Ср. на годност:"; date.getData();
}
void CLekarstva::display(){
    cout << "лекарство:" << namelek << endl;
    cout << "Доставчик:" << endl;
    CDost::display();
    cout << "Вносител:" << endl;
    CVnos::display();
    cout << "Цена:" << price << endl;
    cout << "Годност до:"; date.display();
}
int compareDates(CSrok d1, CSrok d2){
    if (d1.G != d2.G)return d1.G - d2.G;
    else if (d1.M != d2.M)return d1.M - d2.M;
    else return d1.D - d2.D;
}
int main(){
    system("chcp 1251");
    int i,N = 0;//брой лекарства
    CLekarstva MasMedical[20];
    char ZadVnos[20],ZadDost[20];
    int ans;
    do{
        cout << "\n Меню на изпълняваните операции:\n";
        cout << "\n 0-exit:\n";
        cout << "1 - За добавяне данни за ново лекарство\n";
        cout << "2 - За извежданена всички въведени данни\n";
        cout << "3 - Извежда данните на вносителя,с които работи определен доставчик\n";
        cout << "4 - Създава масив с данните за лекарствата,внасяни от посочения вносител\n";
        cout << "5 - Създава масив с данните на всички вносители,внасящи посоченото лекарство\n";
        cout << "choose: "; cin >> ans;
        cin.ignore();
        switch (ans){
        case 0:break;
        case 1:
            cout << "Добави данни за ново лекарство:" << endl;
            MasMedical[N++].getData();
            break;
        case 2:
            cout<<"\n Списък на всички въведени лекарства:\n";
            for(i=0;i<N;i++)MasMedical.display();
            break;
        case 3:
                cout<<"Задайте доставчик:";cin.getline(ZadDost,20);
                  for(i=0;i<N;i++)
                        if(strcmp(MasMedical.CVnos::name,ZadDost)==0){
                       MasMedical.CVnos::display();
                  }
                  break;
        case 4:
                cout<<"Задайте Вносител:";cin.getline(ZadVnos,20);
                  for(i=0;i<N;i++){
                        if(strcmp(MasMedical.CDost::name,ZadVnos)==0){
                   MasMedical.CVnos::display();
                  }
                  }
                  break;
        case 5:
                cout << "посочете лекарство:"<<endl;
                 for(i=0;i<N;i++){
                        if(strcmp(MasMedical.CVnos::name,ZadVnos)==0){
                   MasMedical.CVnos::display();
                 }
                 }
                  break;
        }
    } while (ans != 0);
    }

 

Архивирана тема

Темата е твърде стара и е архивирана. Не можете да добавяте нови отговори в нея, но винаги можете да публикувате нова тема, в която да продължи дискусията. Регистрирайте се или влезте във вашия профил за да публикувате нова тема.

Разглеждащи това в момента 0

  • Няма регистрирани потребители разглеждащи тази страница.

Дарение

  • Подкрепи съществуването на форума - направи дарение
    25%
    Дарени 252.69 EUR от нужните 1,000.00 EUR

Бюлетин

Получавайте известие, когато има важна промяна или новина свързана с форума.

Профил

Навигация

Търсене

Търсене

Конфигуриране на push известия в браузъра

Chrome (Android)
  1. Докоснете иконата на катинар до адресната лента.
  2. Докоснете Разрешения → Известия.
  3. Променете предпочитанията си.
Chrome (Desktop)
  1. Кликнете върху иконата на катинар в адресната лента.
  2. Изберете Настройки на сайта.
  3. Намерете Известия и коригирайте предпочитанията си.