Тема: Допоможіть з сортуванням в C++

Потрібно скласти базу даних, на тему "Облік паспортів", описати через клас, з такими відкритими полями :
-Номер паспорту
-Прізвище власника
-Адреса власника
-Наявність дітей
Введення даних в масив з 12 об`єктів з клавіатури, дані впорядкувати за Прізвищем власника, а також тих у яких є діти, ну і меню

Проблема така ,другий пункт меню ,не працює ,хоча ніби все правильно.
І підкажіть будь-ласка ,який сюди алгоритм сортування впихнути ,потрібне сортування за прізвищем власника паспорту?

#include<windows.h>
#include<string.h>
#include <iostream>

using namespace std;

struct obl_pasp
{
       public:
              
       int nomer_pasportu;
       string prizvysche;
       string adresa;
       int nay_ditey;
       void vvod()
       {
            system("cls");
            cout<<"nomer pasportu vlasnyka";
            cin>>nomer_pasportu;
            cout<<"prizvysche vlasnyka";
            cin>>prizvysche;
            cout<<"adresa vlasnyka";
            cin>>adresa;
            cout<<"nayavnist ditey";
            cin>>nay_ditey;
}

void vuvod()

{
     
     cout<<"/nnom_pas"<<nomer_pasportu<<endl;
     cout<<"prizv: "<<prizvysche <<endl;
     cout<<"adres: "<<adresa<<endl;
     cout<<"nay_dit:"<<nay_ditey<<endl;
     
     
      }};
     
     int main()
     {
         const int n=12;
         setlocale (LC_CTYPE, "Ukrainian");
         obl_pasp mus[12];
         int i ; int prizvysche;
         {
             system("cls");
         cout<<"----------------ÊÓÐÑÎÂÀ ÐÎÁÎÒÀ íà òåìó *Îáëiê ïàñïîðòiâ*----------------"<<endl;
         
         cout<<"1. Ââåñòè äàíi\n"<<endl;
         
         cout<<"2. Âèâåñòè äàíi\n"<<endl;
         
         cout<<"0. Âèõiä\n\n"<<endl;
         cin>>prizvysche;
         switch (prizvysche)
         {
                case 1: obl_pasp vvod();
                cout<<"Vvedit obl_pasp:nomer_pasportu,prizvysche,adresa,nay_ditey"<<endl;
                for(int i=0;i<n;i++)
                mus[i].vvod();
                break;
                
                case 2: obl_pasp vuvod();
                system("cls");
                cout<<"\nnay_ditey:"<<endl;
                for(int i=0;i<n;i++)
                mus[i].vuvod();
                break;
                
                case 0:
                cout<<"\nÄî ïîáà÷åííÿ\n";
                cin.get();
                return 0; 
                break;
                default:
                
                cout<<"\tÒàêîãî ïóíêòó íåìà :(";
                cin.get();cin.get();
                }
                } 
                          return 0; 
                          }

2

Re: Допоможіть з сортуванням в C++

Не працює — це дуже широке поняття. Не компілюється? Падає? Робить не те що треба?

Відформатуйте код, бо я так і не зрозумів, що відкриває дужка в 46 рядку. І що відбувається зразу ж після case 1 і case 2?

3

Re: Допоможіть з сортуванням в C++

Програма працює ,але після вибору другого пункту меню ,закривається моментально

4

Re: Допоможіть з сортуванням в C++

У вас вже є гілка із цим завданням. Перенесіть код в неї, не засмічуйте форум. І на питання quez повідповідайте (крім питання про дужку - вона несе суто декоративну функції, але, на диво, вдало стоїть на початку того, що може стати основним циклом).

5

Re: Допоможіть з сортуванням в C++

roma.kutsenko написав:

Програма працює ,але після вибору другого пункту меню ,закривається моментально

Нічого подібного, ось вивід. Може ви щось зрозумієте в цій маячні.

Прихований текст

nay_ditey:
/nnom_pas-1
prizv:
adres:
nay_dit:650616832
/nnom_pas648407872
prizv:
adres:
nay_dit:648499264
/nnom_pas648404800
prizv:
adres:
nay_dit:1992390864
/nnom_pas648503904
prizv:
adres:
nay_dit:6299712
/nnom_pas0
prizv:
adres:
nay_dit:1
/nnom_pas1992391104
prizv:
adres:
nay_dit:0
/nnom_pas648396688
prizv:
adres:
nay_dit:1992391104
/nnom_pas6299112
prizv:
adres:
nay_dit:6
/nnom_pas6299824
prizv:
adres:
nay_dit:639452105
/nnom_pas1
prizv:
adres:
nay_dit:4198272
/nnom_pas639271336
prizv:
adres:
nay_dit:4198293
/nnom_pas2
prizv:
adres:
nay_dit:0

6

Re: Допоможіть з сортуванням в C++

В Dev C++ викидає ,зараз попробую через CodeBlocks

7

Re: Допоможіть з сортуванням в C++

Дякую ,в CodeBlocks працює ,підкажіть будь-ласка по другому питанню

8

Re: Допоможіть з сортуванням в C++

Найпростішого сортування бульбашкою буде достатньо.

9 Востаннє редагувалося Joker (26.10.2014 13:22:13)

Re: Допоможіть з сортуванням в C++

Як щодо такого, кажуть на олімпіадах він працює найшвидше

#include <algorithm>
sort (a.begin(), a.end());

10

Re: Допоможіть з сортуванням в C++

Joker написав:

Як щодо такого, кажуть на олімпіадах він працює найшвидше

#include <algoritm>
sort (a.begin, a.end);

Новачкам краще написати кілька алгоритмів сортування самостійно перед використанням стандартних - просто щоб розуміти, як вони працюють.
А те, що ви написали, не працює (a - масив, а не вектор, і ви не поставили дужки; ну і "алгоритм" не так пишеться.).

Подякували: FakiNyan, roma.kutsenko2

11

Re: Допоможіть з сортуванням в C++

Новачкам краще написати кілька алгоритмів сортування самостійно перед використанням стандартних - просто щоб розуміти, як вони працюють.
А те, що ви написали, не працює (a - масив, а не вектор, і ви не поставили дужки; ну і "алгоритм" не так пишеться.).

Виправив для вектора. Мені здається, що за допомогою вказівників ( а масиви і вказівники тісно пов'язанні) можна відсортувати і звичайний масив. http://www.cplusplus.com/reference/algo … t/?kw=sort

12

Re: Допоможіть з сортуванням в C++

Та можна, звісно, я ж не заперечую:

sort( a, a + sizeof( a ) / sizeof( *a ) );
Подякували: Joker1

13

Re: Допоможіть з сортуванням в C++

Я не розумію ,допоможіть ,я навіть не знаю куди його впихнути ,будь-ласка

14

Re: Допоможіть з сортуванням в C++

Ви зарано взялися за класи, н.м.д. Напишіть краще бульбашкове сортування масиву цілих чисел, тоді вже щось почнете розуміти.

15

Re: Допоможіть з сортуванням в C++

Добре краще дійсно почніть з того, щоб зрозуміти як працюють різні алгоритми сортування.
http://uk.wikipedia.org/wiki/Швидке_сортування
http://uk.wikipedia.org/wiki/Сортування_вибором
http://uk.wikipedia.org/wiki/Сортування_включенням
http://uk.wikipedia.org/wiki/Сортування_бульбашкою

16

Re: Допоможіть з сортуванням в C++

Вибачте за нахабність ,просто програма потрібна на завтра ,нема часу розбиратись ,бо потрібно ще 30 листків теорії писати

17

Re: Допоможіть з сортуванням в C++

Пишіть заяву на викладача, який задає за два дні розібратися в купі теорії і практики.

18

Re: Допоможіть з сортуванням в C++

koala написав:

Та можна, звісно, я ж не заперечую:

sort( a, a + sizeof( a ) / sizeof( *a ) );

Може не в тему але мене зацікавило чи можна замінити ваш код

sort( a, a + sizeof( a ) / sizeof( *a ) );

на такий

sort (a,a+n);

Але я вважаю, що ваш код буде швидший. Я правий?

19

Re: Допоможіть з сортуванням в C++

Ні, швидкість буде однакова. Але мій код працюватиме для масиву будь-якого розміру, а ваш - тільки розміру n.

Подякували: Joker1

20

Re: Допоможіть з сортуванням в C++

Ні, швидкість буде однакова. Але мій код працюватиме для масиву будь-якого розміру, а ваш - тільки розміру n.

Дякую, думаю мій варіант мене також влаштує.