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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Adamaras
0 / 0 / 0
Регистрация: 17.06.2013
Сообщений: 21
#1

Зацикливается. Надо исправить - C++

03.07.2013, 18:56. Просмотров 305. Ответов 5
Метки нет (Все метки)

Программу я пишу очень известную здесь на форуме:
Описать структуру с именем ZNAK, содержащую следующие поля:
  • Фамилия, имя;
  • Знак Зодиака;
  • Дата рождения (массив из трёх чисел).
Написать программу, выполняющую следующие действия (действия оформить в виде подпрограмм):
  • Ввод с клавиатуры данных в массив, состоящий из восьми элементов типа ZNAK; записи должны быть упорядочены по знакам Зодиака;
  • Вывод на экран информации о людях, родившихся в месяц, значение которого введено с клавиатуры;
  • Если таких нет, выдать на экран соответствующее сообщение.

Так вот, прога зацикливается. Что не так?

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
#include <iostream>
#include <string.h>
#include <conio.h>
#include <locale.h>
using namespace std;
 
 
struct znak {
    char surname[20];
    char name[20];
    char astrosign[20];
    int birthday[3];
};
 
void NotFound() {
     setlocale(LC_ALL, "Russian");
     cout << "В списке нет людей, родившихся в этом месяце!";
}
 
int Search (znak arr[], int num, int xx) {
    setlocale(LC_ALL, "Russian");
    bool astrosign1 = false;
    for (int i = 0; i < num; i++) {
        astrosign1 = false;
        if (arr[i].birthday[1] == xx) {
            astrosign1 = true;
            cout << "Человек №" << i + 1 <<": " << endl;
            cout << arr[i].surname << " " << arr[i].name << endl;
            cout << arr[i].birthday[0] << "." << arr[i].birthday[1] << "." << arr[i].birthday[2] << endl;
            cout << "Знак зодиака: " << arr[i].astrosign << endl;
            cout << endl;
        }
        if (astrosign1 == false) NotFound();
    };
    return astrosign1;
}
 
void main() {
    setlocale(LC_ALL, "Russian");
    int n, i, xx;
    bool astrosign1 = true;
    cout << "================================================" << endl;
    cout << "                  ЗНАКИ ЗОДИАКА" << endl;
    cout << "================================================" << endl;
    cout << "Ввод данных - латиницей. Примеры знаков зодиака: \n"
            "                 Овен - Oven\n"
            "                Телец - Telec\n"
            "             Близнецы - Bliznecy\n"
            "                  Рак - Rak\n"
            "                  Лев - Lev\n"
            "                 Дева - Deva\n"
            "                 Весы - Vesy\n"
            "             Скорпион - Skorpion\n"
            "              Стрелец - Strelec\n"
            "              Козерог - Kozerog\n"
            "              Водолей - Vodolej\n"
            "                 Рыбы - Ryby" << endl << endl;
    cout << "Введите количество человек: "; cin >> n ; cout <<"\n";
    znak *arr = new znak[n];
    for (i = 0; i < n; i++) {
        cout << "Человек №" << i + 1 <<": " << endl;
        cout << "      Введите фамилию: ";
        cin >> arr[i].surname;
        cout << "          Введите имя: ";
        cin >> arr[i].name;
        cout << " Введите знак Зодиака: " ;
        cin >> arr[i].astrosign;
        cout << "Введите дату рождения: " << endl;
        cout << "                 День: ";
        cin >> arr[i].birthday[0];
        cout << "                Месяц: ";
        cin >> arr[i].birthday[1];
        cout << "                  Год: ";
        cin >> arr[i].birthday[2];
        cout << "\n\n";
    }
    cout << "Введите номер месяца: ";
    cin >> xx;
    Search(arr, n, xx);
    cout << "\n";
    system("pause");
    return;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.07.2013, 18:56     Зацикливается. Надо исправить
Посмотрите здесь:

надо исправить ошибку - C++
задание выглядит так: Заполнить файл f натуральными числами, полученными с помощью генератора случайных чисел. Найти количество квадратов...

народ помогите пож-та, надо аттестацию исправить))) - C++
Напишите функцию, которая воспринимает время как три целых аргумента (часы, минуты и секунды) и возвращает количество секунд, прошедших со...

Подсчитать, сколько букв надо исправить в слове Х - C++
Подсчитать, сколько букв надо исправить в слове Х, чтобы получилось слово Y (Х,Y - слова одинаковой длины).

Почему выдает 0, и что надо исправить в вызове функции? - C++
#include &lt;stdio.h&gt; #include &lt;math.h&gt; int ch1,ch2,osn, summa,PROI,PR,pr ; int Perevert(int x)// { int xp = 0; ...

Надо исправить код! Распечатать анкетные данные студентов, успевающих на 4 и 5 - C++
Скажите, пожалуйста, как сделать, чтобы выводились все студенты, у кого 4 и 5. Не получается, выводится только один по этому коду. ...

программа которая переводит введенные числа в буквенную начертанию (надо немного исправить) - C++
Уважаемые программисты, помогите исправить программу, программа должна введенное с клавиатуры число переводить в письменное начертание,...

Надо исправить программу, пожалуйста. Задание: заменить заданное слово в строке другим заданным словом - C++
Задание: заменить заданное слово в строке другим заданным словом Вот какие баги, если можно так выразиться, я нашёл: 1. Программа...

Почему зацикливается? - C++
Такая программка: #include &lt;conio.h&gt; #include &lt;iostream&gt; #include &lt;windows.h&gt; using namespace std; void strCon(char...

Зацикливается программа - C++
Нужно сделать стек из элементов и вывести все положительные значения. Программа на этапе принта зацикливается, посмотрите, что не так: ...

программа зацикливается - C++
помогите скажите пожалуйста почему моя программа зацикливается #include&lt;stdio.h&gt; #include&lt;conio.h&gt; #include&lt;math.h&gt; ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
alsav22
5416 / 4812 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
03.07.2013, 19:38     Зацикливается. Надо исправить #2
Цитата Сообщение от Adamaras Посмотреть сообщение
Так вот, прога зацикливается. Что не так?
Если поискать, в каком месте зацикливается?

Добавлено через 13 минут
У меня не зацикливается, только исправьте поиск, а то ложное сообщение выводит:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
void Search (znak arr[], int num, int xx) 
{
    setlocale(LC_ALL, "Russian");
    bool astrosign1 = false;
    for (int i = 0; i < num; i++) 
    {
        //strosign1 = false;
        if (arr[i].birthday[1] == xx) 
        {
            astrosign1 = true;
            cout << "Человек №" << i + 1 <<": " << endl;
            cout << arr[i].surname << " " << arr[i].name << endl;
            cout << arr[i].birthday[0] << "." << arr[i].birthday[1] << "." << arr[i].birthday[2] << endl;
            cout << "Знак зодиака: " << arr[i].astrosign << endl;
            cout << endl;
        }
        
    };
    if (astrosign1 == false) NotFound();
    
}
denusko
0 / 0 / 0
Регистрация: 29.06.2013
Сообщений: 2
03.07.2013, 19:43     Зацикливается. Надо исправить #3
все работает, MVS2010
Adamaras
0 / 0 / 0
Регистрация: 17.06.2013
Сообщений: 21
03.07.2013, 20:22  [ТС]     Зацикливается. Надо исправить #4
О! Спасибо! =) Теперь и не зацикливается и сообщение как раз назойливое убралось! =) Спасибо!

Добавлено через 33 минуты
Да, ещё хотел спросить, как в данном коде сделать, чтобы записи упорядочивались по знакам Зодиака?
alsav22
5416 / 4812 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
03.07.2013, 21:24     Зацикливается. Надо исправить #5
Цитата Сообщение от Adamaras Посмотреть сообщение
Да, ещё хотел спросить, как в данном коде сделать, чтобы записи упорядочивались по знакам Зодиака?
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
115
116
117
118
119
120
121
#include <iostream>
#include <string.h>
#include <conio.h>
#include <locale.h>
using namespace std;
 
struct znak 
{
    char surname[20];
    char name[20];
    char astrosign[20];
    int birthday[3];
};
 
void NotFound() 
{
     setlocale(LC_ALL, "Russian");
     cout << "В списке нет людей, родившихся в этом месяце!";
}
 
void Search (znak arr[], int num, int xx) 
{
    bool astrosign1 = false;
    for (int i = 0; i < num; i++) 
    {
        if (arr[i].birthday[1] == xx) 
        {
            astrosign1 = true;
            cout << "Человек №" << i + 1 <<": " << endl;
            cout << arr[i].surname << " " << arr[i].name << endl;
            cout << arr[i].birthday[0] << "." << arr[i].birthday[1] << "." << arr[i].birthday[2] << endl;
            cout << "Знак зодиака: " << arr[i].astrosign << endl;
            cout << endl;
        }
        
    };
    if (astrosign1 == false) NotFound();
}
 
void Sorting (znak arr[], int num) 
{
    znak temp;
    for (int i = 0; i < num - 1; i++) 
    {
        for (int j = 0; j < num - 1; ++j)
        {
            if (strcmp(arr[j].astrosign, arr[j + 1].astrosign) > 0) 
            {
                temp = arr[j + 1];
                arr[j + 1] = arr[j];
                arr[j] = temp;
            }
        }
    }
    cout << "Массив отсортирован!\n\n";
}
 
void Show(znak arr[], int num)
{
    for (int i = 0; i < num; i++) 
    {
        cout << "Человек №" << i + 1 <<": " << endl;
        cout << arr[i].surname << " " << arr[i].name << endl;
        cout << arr[i].birthday[0] << "." << arr[i].birthday[1] << "." << arr[i].birthday[2] << endl;
        cout << "Знак зодиака: " << arr[i].astrosign << endl;
        cout << endl;
    }
}
 
void main() 
{
    setlocale(LC_ALL, "Russian");
    int n, i, xx;
    bool astrosign1 = true;
    cout << "================================================" << endl;
    cout << "                  ЗНАКИ ЗОДИАКА" << endl;
    cout << "================================================" << endl;
    cout << "Ввод данных - латиницей. Примеры знаков зодиака: \n"
            "                 Овен - Oven\n"
            "                Телец - Telec\n"
            "             Близнецы - Bliznecy\n"
            "                  Рак - Rak\n"
            "                  Лев - Lev\n"
            "                 Дева - Deva\n"
            "                 Весы - Vesy\n"
            "             Скорпион - Skorpion\n"
            "              Стрелец - Strelec\n"
            "              Козерог - Kozerog\n"
            "              Водолей - Vodolej\n"
            "                 Рыбы - Ryby" << endl << endl;
    cout << "Введите количество человек: "; cin >> n ; cout <<"\n";
    znak *arr = new znak[n];
    for (i = 0; i < n; i++) {
        cout << "Человек №" << i + 1 <<": " << endl;
        cout << "      Введите фамилию: ";
        cin >> arr[i].surname;
        cout << "          Введите имя: ";
        cin >> arr[i].name;
        cout << " Введите знак Зодиака: " ;
        cin >> arr[i].astrosign;
        cout << "Введите дату рождения: " << endl;
        cout << "                 День: ";
        cin >> arr[i].birthday[0];
        cout << "                Месяц: ";
        cin >> arr[i].birthday[1];
        cout << "                  Год: ";
        cin >> arr[i].birthday[2];
        cout << "\n\n";
    }
    
    Show(arr, n);
    Sorting(arr, n);
    Show(arr, n);
    cout << "Введите номер месяца: ";
    cin >> xx;
    Search(arr, n, xx);
    cout << "\n";
    
    system("pause");
    return;
}
Van111
кодер с++
208 / 187 / 4
Регистрация: 03.08.2011
Сообщений: 2,597
Записей в блоге: 12
03.07.2013, 21:26     Зацикливается. Надо исправить #6
Цитата Сообщение от Adamaras Посмотреть сообщение
Да, ещё хотел спросить, как в данном коде сделать, чтобы записи упорядочивались по знакам Зодиака?
почему бы вам не использовать ассоциативный контейнер map, все равно программа простенькая и сверх вычислений не требует. Если будете всё таки использовать map то добавляйте в значение ключа порядковый номер знака зодиака (для сортировки по месяцу а не по алфавиту)
Yandex
Объявления
03.07.2013, 21:26     Зацикливается. Надо исправить
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru