Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
0 / 0 / 0
Регистрация: 04.05.2019
Сообщений: 50
1

Баг в программе. Без цикла работает нормально. С циклом выдает баг

05.05.2019, 11:38. Просмотров 368. Ответов 1

Здравствуйте. Пишу программу. И как не пытался ее переписать, как дохожу до момента включения в код большого цикла while, который запускает программу на второй круг, начинаются баги. Суть в том, что я ввожу абонентов. Построчно. И без этого цикла while для каждого абонента приходится перезапускать консоль. Чтобы этого не делать, вставил цикл while (так же пытался с оператором безусловного перехода goto и оператором условия if. Но результат тот же) . И тут понеслись баги. А конкретно 1 и тот же. Программа не считывает первую позицию второго абонента и последующих абонентов. Код прилагается. Для понятности ситуации советую прогнать код у себя, кому не лень)) Заранее благодарю.
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
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
int main() {
    system("chcp 1251");
    system("cls");
 
    string name;
    string surname;
    string adress;
    string town;
    string index;
    string phone;
    string mail;
    int a;
    int check = 0;
    fstream abonent;
    abonent.open("Phone_book.txt", ios::app);
    abonent.seekp(0, ios::end);
    if (abonent.tellp() == 0) {
        abonent << "-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------" << endl;
        abonent << "|        Имя         |      Фамилия       |            Адрес проживания            |       Город        |  Почтовый индекс   |   Номер телефона   |     Адрес эл. почты     |" << endl;
        abonent << "-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------" << endl;
    }
    abonent.close();
    while (check == 0) {   //ТОТ САМЫЙ ЦИКЛ
    abonent.open("Phone_book.txt", ios::app);
 
        cout << "Введите имя : ";
        getline(cin, name);
        while (name.size() > 20) {
            cout << "Имя слишком длинное. Введите имя длиной до 20 символов." << endl;
            cout << "Введите имя : ";
            getline(cin, name);
        }
        abonent << "|" << name;
        a = name.size();
        while (a < 20) {
            abonent << " ";
            a++;
        }
        abonent << "|";
        name = "";
        
 
        cout << "Введите фамилию : ";
        getline(cin, surname);
        while (surname.size() > 20) {
            cout << "Фамилия слишком длинная. Введите фамилию длиной до 20 символов." << endl;
            cout << "Введите фамилию : ";
            getline(cin, surname);
        }
        abonent << surname;
        a = surname.size();
        while (a < 20) {
            abonent << " ";
            a++;
        }
        abonent << "|";
        surname = "";
 
        cout << "Введите адрес : ";
        getline(cin, adress);
        while (adress.size() > 40) {
            cout << "Адрес слишком длинный. Введите адрес длиной до 40 символов." << endl;
            cout << "Введите адрес : ";
            getline(cin, adress);
        }
        abonent << adress;
        a = adress.size();
        while (a < 40) {
            abonent << " ";
            a++;
        }
        abonent << "|";
        adress = "";
 
        cout << "Введите город : ";
        getline(cin, town);
        while (town.size() > 20) {
            cout << "Название города слишком длинное. Введите название длиной до 20 символов." << endl;
            cout << "Введите город : ";
            getline(cin, town);
        }
        abonent << town;
        a = town.size();
        while (a < 20) {
            abonent << " ";
            a++;
        }
        abonent << "|";
        town = "";
 
        cout << "Введите индекс : ";
        getline(cin, index);
        while (index.size() > 20) {
            cout << "Индекс слишком длинный. Введите индекс длиной до 20 символов." << endl;
            cout << "Введите индекс : ";
            getline(cin, index);
        }
        abonent << index;
        a = index.size();
        while (a < 20) {
            abonent << " ";
            a++;
        }
        abonent << "|";
        index = "";
 
        cout << "Введите номер телефона : ";
        getline(cin, phone);
        while (phone.size() > 20) {
            cout << "Номер телефона слишком длинный. Введите номер длиной до 20 символов." << endl;
            cout << "Введите номер телефона : ";
            getline(cin, phone);
        }
        abonent << phone;
        a = phone.size();
        while (a < 20) {
            abonent << " ";
            a++;
        }
        abonent << "|";
        phone = "";
 
        cout << "Введите адрес эл. почты : ";
        getline(cin, mail);
        while (mail.size() > 25) {
            cout << "Адрес эл. почты слишком длинный. Введите адрес длиной до 25 символов." << endl;
            cout << "Введите адрес эл. почты : ";
            getline(cin, mail);
        }
        abonent << mail;
        a = mail.size();
        while (a < 25) {
            abonent << " ";
            a++;
        }
        abonent << "|" << endl;
        mail = "";
        abonent << "-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------" << endl;
 
        abonent.close();
        cout << "чтобы продолжить, нажмите 0";
        cin >> check;
    }
    cin.get();
    return 0;
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
05.05.2019, 11:38
Ответы с готовыми решениями:

Баг с циклом и BeginInvoke()
метод нажатия кнопки for (int i = 0; i &lt; richTextBox1.Lines.Length; i++) { ...

std::regex : баг на сайте или баг компилятора?
http://en.cppreference.com/w/cpp/regex/regex_match этот код выкидывает throw... Добавлено через...

Баг asio? или баг TCP стека?
всем привет. повстречался с очень странным багом. и не могу определить кто бажит, asio, или...

Letter-spacing баг или не баг?
Здравствуйте! Использовал letter-spacing для увеличения расстояния между буквами. Как оказалось...

1
1515 / 871 / 405
Регистрация: 01.10.2018
Сообщений: 1,820
Записей в блоге: 2
05.05.2019, 23:04 2
C++
1
2
3
4
        cout << "чтобы продолжить, нажмите 0";
        cin >> check;
        cin.ignore();
    }
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
05.05.2019, 23:04

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Забавный баг Делфи ...или не баг?
кароч кидаем на форму 2 editа и кнопку и пишем такой код unit Unit1; interface uses ...

Баг в программе
Задание. Код. При тестировании программы 2 значения не проходят. В чем баг - не знаю. Помогайте с:

Баг в программе
Столкнулся с проблемой когда ввожу данные, нажимаю ОК! первый раз программа всё делает правильно)...

Баг в программе
Всем привет! Столкнулся с багом: когда ветвь программы доходит до главного меню ( т.е. просят...


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

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