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

Помощь в сортировке - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Ограничить права пользоватей через SECURITY_ATTRIBUTES (подскажите как) http://www.cyberforum.ru/cpp-beginners/thread700751.html
В общем через это: SECURITY_ATTRIBUTES atrs; atrs.nLength=sizeof(atrs); atrs.bInheritHandle=false; ... //какие-то действия для инициации atrs.lpSecurityDescriptor ... atrs.lpSecurityDescriptor=(PSECURITY_DESCRIPTOR) LocalAlloc(LPTR,SECURITY_DESCRIPTOR_MIN_LENGTH);//тут мы, вроде, выделяем память InitializeSecurityDescriptor(atrs.lpSecurityDescriptor,SECURITY_DESCRIPTOR_REVISION);//
C++ Переменная произвольно обнуляется Здравствуйте. Есть класс: template<const int k,const int n> class GF { public: int F; // Массив многочленов. public: // конструктор. Полным перебором заполняем массив многочленов, т.е. строим поле. GF() { int model; int i, j, capacity = pow((double)k,n); http://www.cyberforum.ru/cpp-beginners/thread700748.html
присовение структуре значение int C++
есть две структуры. в одной у нас записаны некие int'ы: typedef struct { unsigned int per1; unsigned int per2; unsigned int per3; } struct1; и есть струкра, с помощью которой надо будет разбить инты побитно: typedef struct { unsigned char a1 : 2;
Формула для рекурсии C++
Помогите, пожалуйста составить формулу для рекурсии. Я никак не понимаю, как туда коэффициент к вставить? Понятно, что надо предыдущий умножить на -1, умножить на х квадрат и разделить на 9, но как формулу с к связать :( http://www.cyberforum.ru/attachment.php?attachmentid=202125&d=1353186681
C++ Оптимизация кода http://www.cyberforum.ru/cpp-beginners/thread700726.html
main: #include <iostream> #include <conio.h> #include "keyBuffer.h" #include "pause.h" #include <windows.h> const char up1=201,up2=187; const char down1=200,down2=188;
C++ Запись результата в файл В файле test.in записана матрица размером N*N. Найти ее определитель. Результат записать в test.out. Для работы с файлами использовать функцию cstdio. Ниже код, который объясняет как считать определитель #include<stdio.h> #include<math.h> #include<conio.h> #include<stdlib.h> #define NN 6 подробнее

Показать сообщение отдельно
Adm!n
0 / 0 / 0
Регистрация: 18.11.2012
Сообщений: 17
18.11.2012, 21:50  [ТС]     Помощь в сортировке
Цитата Сообщение от Amandosov Посмотреть сообщение
у меня там маленькая ошибка в алгоритме,а правильный алгоритм примерно так ну например начиная с Овна должен быть (месяц=3 и день>21) или (месяц=4 и день<=20)и т.д., (в гороскопе посмотришь)

C++
1
2
3
4
5
6
7
for (int counter_rec = 0; counter_rec < size_array; counter_rec++)
    {if (book[counter_rec].l_bday[1] == 3&&book[counter_rec].l_bday[0]>21 ||book[counter_rec].l_bday[1] == 4&&book[counter_rec].l_bday[0] <=20)
        {
         cout << book[counter_rec].l_name;
         cout << book[counter_rec].l_zodiak;
         cout << book[counter_rec].l_bday[0] << "." << book[counter_rec].l_bday[1] << "." << book[counter_rec].l_bday[2] << endl << endl;
        }...
Там собственно задание в другом заключалось
Вообщем смотри,мы считали инфу с файла.Знаки зодиака в разнобой идут.Дата к ним вообще никак не подвязывается,т.е. не надо определить знак зодиака по дате.Допустим я задал так,что Овен будет первым,потом за ним телец.Прога запустит цикл и проверит,если найдет овна,выведет его на первое место,тельца на второе.

Попробуй скомпиль мою прогу,где ввод с клавиатуры.Выкладывал выше.

Введи aaa aaa
Kozerog
31.12.1990

bbb bbb
Oven
12.10.1222

и посмотри как он отсортирует)
он должен поменять их местами

Добавлено через 21 минуту
Не знаю даже,почему он не сортирует,если взять фрагмент кода где считывания с файла и заменить его в то место где ввод с клавиатуры.Вроде все то же самое,выводит массив,вводишь месяц,выдает людей с этим месяцем,а сортировать отказывается(

Добавлено через 2 часа 42 минуты
Помогли на другом форуме,но снова не сортирует, что за ..!

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
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
#include <iostream>
#include <iomanip>
#include <cstring>
 
using namespace std;
 
 
struct ZNAK // объявление структуры ZNAK
{
    char l_name[100]; // имя и фамилия
    char l_zodiak[15]; // знак зодиака
    int  l_bday[3]; // дата рождения
 
};
 
int main()
{
 
setlocale ( LC_ALL, "Russian" );
 
const int size_array = 8; // количество записей ( должно быть 8 )
ZNAK book[size_array];
int counter_rec = 0; // счётчик записей
 
cout << "Сортировать будем в следующей последовательности: " << endl;
cout << " 1. Oven (Овен)" << ' ' << "        2. Telec (Телец) " << ' ' << "       3. Bliznec (Близнецы) " << endl
     << " 4. Rak (Рак)  "<< ' ' << "        5. Lev (Лев) " << ' ' << "           6. Deva (Дева) " << endl
    << " 7. Vesy (Весы)"<< ' ' << "        8. Scorpion (Скорпион) " << ' ' << " 9. Strelec (Стрелец) " << endl
    << " 10. Kozerog (Козерог)"<< ' ' << " 11. Vodoley (Водолей) " << ' ' << "  12. Ryby (Рыбы) " << endl;
 
    char buf[100];
 
    FILE*file=fopen("C:\\7.5\\7.5\\123.txt","r");
 
    for (int counter_rec = 0; counter_rec < size_array; counter_rec++)
    {
        fgets(book[counter_rec].l_name,100,file);
        fgets(book[counter_rec].l_zodiak,15,file);
        fgets(buf,100,file);
        book[counter_rec].l_bday[0]=atoi(buf);
        fgets(buf,100,file);
        book[counter_rec].l_bday[1]=atoi(buf);
        fgets(buf,100,file);
        book[counter_rec].l_bday[2]=atoi(buf);
    }
 
 
 
const char *sign_zodiak[12] = {"Oven", "Telec", "Bliznec", "Rak" , "Lev", "Deva",
                         "Vesy", "Scorpion", "Strelec", "Kozerog", "Vodoley", "Ryby" }; // порядок следования знаков зодиака
 
// сортировка записей в массиве структур
    for (int ctr1 = 0; ctr1 < size_array; ctr1++)
    {
        for (int ctr2 = ctr1 + 1; ctr2 < size_array; ctr2++)
        {
            int i=0,j=0;
            for(;i<12;i++)  if (!strcmp(book[ctr1].l_zodiak ,sign_zodiak[i])) break;
            for(;j<12;j++)  if (!strcmp(book[ctr2].l_zodiak ,sign_zodiak[j])) break;
            if(i<12 && j<12)
            { 
                if(i<j)
                {
                    ZNAK t;
                    memcpy(&t,&book[ctr1],sizeof(book[ctr1]));
                    memcpy(&book[ctr1],&book[ctr2],sizeof(book[ctr1]));
                    memcpy(&book[ctr2],&t,sizeof(book[ctr1]));
                }   
            }
        }
    }   
 
 
    cout << endl;
    for (int counter_rec = 0; counter_rec < size_array; counter_rec++)
    {
    cout << book[counter_rec].l_name; // имя и фамилия
    cout << book[counter_rec].l_zodiak; // знак зодиака
    cout << book[counter_rec].l_bday[0] << "." << book[counter_rec].l_bday[1] << "." << book[counter_rec].l_bday[2] << endl << endl; // дата рождени
    }
 
 
    cout << endl;
    int month = 0;
    cout << "Введите порядковый номер месяца: ";
    cin >> month;
    if (month < 1 || month > 12)
        {
            cout << "Месяц указан не корректно!" << endl;
                    //return 0;
        }
    else
    {
        // печать записей, месяц которых совпадает с введённым
        cout << endl;
        bool no_records = false; // переменная-флаг, отвечающая за существование записей, месяц которых равен введённому
        for (int counter_rec = 0; counter_rec < size_array; counter_rec++)
        {
            if (book[counter_rec].l_bday[1] == month) // если совпадает номер месяца в записи с введённым с клавиатуры
            {
                no_records = true;
                cout << book[counter_rec].l_name; // имя и фамилия
                cout << book[counter_rec].l_zodiak; // знак зодиака
                cout << book[counter_rec].l_bday[0] << "." << book[counter_rec].l_bday[1] << "." << book[counter_rec].l_bday[2] << endl << endl; // дата рождения
            }
        }
            if (!no_records) cout << "Нет людей родившихся " << month << " месяца." << endl;
    }
 
       
 
system("pause");
return 0;
}
 
Текущее время: 12:38. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru