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

Почему не выполняет повторно функцию addCont?

04.04.2020, 17:31. Показов 5858. Ответов 64
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
помогите разобрать. почти уверен, что неправильно выделена память в конструкторе (в нем через new, а в мейне пользуюсь realloc`ом). и почему в цикле do/while не заполняет массив повторно?

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
#define _CRT_SECURE_NO_WARNINGS // директива использование функция со строками
#include<iostream>
#include"PhoneBook.h"
#include<Windows.h> //вывод кириллицы
#define _CRTDBG_MAP_ALLOC // проверка удаления памяти
#include <cstdlib>  // проверка удаления памяти
#include <crtdbg.h> // проверка удаления памяти
#include <stdlib.h> // библиотека для system("cls")
 
using namespace std;
 
char re(char*, char*, char*, char*&);
void addNumOfPhone(long&, long&, long long&);
void addCont(PhoneBook*& arr, int& n, char* rez, long homeNum, long workNum, long long mobNum);
void print(PhoneBook* arr, int n);
 
int main()
{
    setlocale(0, "");
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
    int sizeOfArr = 128;
    char* surname = new char[sizeOfArr];
    char* name = new char[sizeOfArr];
    char* lastname = new char[sizeOfArr];
    char* rez = new char[sizeOfArr];
 
    cout << "Введите ФИО" << "\n";
    cout << "Фамилия: ";
    cin >> surname;
    cout << "Имя: ";
    cin >> name;
    cout << "Отчество: ";
    cin >> lastname;
    re(surname, name, lastname, rez);
    delete[]surname;
    delete[]name;
    delete[]lastname;
    long homeNum;           
    long workNum;
    long long mobNum;
    addNumOfPhone(homeNum, workNum, mobNum);
    int sizeofPhoneBook = 0;
    PhoneBook* obj;
    obj = NULL;
    string daNet;
    do
    {
        addCont(obj, sizeofPhoneBook, rez, homeNum, workNum, mobNum);
        system("cls");
        cout << "Хотите добавить еще абонента? (да/нет)\n";
        cin >> daNet;
    } while (daNet != "нет");
 
    print(obj, sizeofPhoneBook);
    delete[]rez;
    free(obj);
    _CrtDumpMemoryLeaks();
    return 0;
}
 
char re(char* a, char* b, char* c, char*& rez) // создание общей строки для ФИО
{
    rez = new char[strlen(a) + strlen(b) + strlen(c) + 3];
    strcat(strcat(strcat(strcat(strcpy(rez, a), " "), b), " "), c);
    return *rez;
}
 
void addNumOfPhone(long& homeNum, long& workNum, long long& mobNum)
{
    cout << "Введите домашний номер телефона: ";
    cin >> homeNum;
    cout << "Введите рабочий номер телефона: ";
    cin >> workNum;
    cout << "Введите мобильный номер телефона: +";
    cin >> mobNum;
}
 
void addCont(PhoneBook*& arr, int& n, char* rez, long homeNum, long workNum, long long mobNum)  //добавляем элемент в массив
{
    arr = (PhoneBook*)realloc(arr, (n + 1) * sizeof(PhoneBook));
    arr[n].setAdd(rez, homeNum, workNum, mobNum);
    n++;
}
 
void print(PhoneBook* arr, int n)
{
    for (int i = 0; i < n; i++)
        arr[i].getPrint();
}
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
#define _CRT_SECURE_NO_WARNINGS
#include "PhoneBook.h"
#include<iostream>
#include <cstring>
 
using namespace std;
 
PhoneBook::PhoneBook()  // пустой конструктор
{
    *fio = 0;
    homeNum = 0;
    workNum = 0;
    mobNum = 0;
    size = 0;
    contact = NULL;
}
 
PhoneBook::PhoneBook(int size, char*& fio, long& homeNum, long& workNum, long long& mobNum)
{
    this->size = size;
    contact = new PhoneBook[this->size];
    contact[size].setAdd(fio, homeNum, workNum, mobNum);
}
 
void PhoneBook::setAdd(char*& fio, long& homeNum, long& workNum, long long& mobNum)
{
    this->fio = new char[strlen(fio) + 1];
    strcpy(this->fio, fio);
    this->homeNum = homeNum;
    this->workNum = workNum;
    this->mobNum = mobNum;
}
 
void PhoneBook::getPrint()
{
    cout << "ФИО: " << fio;
    cout << "\nДомашний телефон: " << homeNum;
    cout << "\nРабочий телефон: " << workNum;
    cout << "\nМобильный телефон: +" << mobNum;
}
 
PhoneBook::~PhoneBook()
{
    delete[] fio;
    delete[] contact;
    cout << "\n";
}

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#pragma once
class PhoneBook
{
private:
    char* fio;
    PhoneBook* contact;
    long homeNum;
    long workNum;
    long long mobNum;
    int size;
public:
    PhoneBook();
    PhoneBook(int, char*&, long&, long&, long long&);
    void setAdd(char*&, long&, long&, long long&);
    void getPrint();
 
    ~PhoneBook();
};
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
04.04.2020, 17:31
Ответы с готовыми решениями:

Почему строка из файла считывается повторно?
Здравствуйте! Скажите, пожалуйста, почему последняя строка из файла может считываться повторно? Например: ...

Почему конструктор вызывается повторно при преобразовании типов?
В качестве примера предлагаю рассмотреть примерчик из учебника. В примере мы создаём класс, содержащий в качестве поля строку символов и...

Почему PDO не выполняет запрос?
Мой код ?php set_time_limit(100); session_start(); require&quot;conect.php&quot;; $pdo-&gt;setAttribute(PDO::ATTR_ERRMODE,...

64
1 / 1 / 0
Регистрация: 11.01.2020
Сообщений: 62
05.04.2020, 10:40  [ТС]
Студворк — интернет-сервис помощи студентам
PhoneBook.h
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#pragma once
class PhoneBook
{
private:
    char* fio;
    long homeNum;
    long workNum;
    long long mobNum;
public:
    PhoneBook();
    PhoneBook(const char*, long, long, long long);
    PhoneBook(const PhoneBook&);
    PhoneBook& operator= (const PhoneBook&);
 
    void setAdd(const char*, long, long, long long);
    void getPrint();
 
    ~PhoneBook();
};
PhoneBook.cpp
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
#define _CRT_SECURE_NO_WARNINGS
#include "PhoneBook.h"
#include<iostream>
#include <cstring>
 
using namespace std;
 
PhoneBook::PhoneBook()  // пустой конструктор
{
    fio = nullptr;
    homeNum = 0;
    workNum = 0;
    mobNum = 0;
}
 
PhoneBook::PhoneBook(const char* fio, long homeNum, long workNum, long long mobNum)
{
    setAdd(fio, homeNum, workNum, mobNum);
}
 
PhoneBook::PhoneBook(const PhoneBook& obj)
{
    fio = new char[strlen(obj.fio) + 1];
    strcpy(fio, obj.fio);
 
    homeNum = obj.homeNum;
    workNum = obj.workNum;
    mobNum = obj.mobNum;
}
 
void PhoneBook::setAdd(const char* fio, long homeNum, long workNum, long long mobNum)
{
    this->fio = new char[strlen(fio) + 1];
    strcpy(this->fio, fio);
    this->homeNum = homeNum;
    this->workNum = workNum;
    this->mobNum = mobNum;
}
 
PhoneBook& PhoneBook::operator= (const PhoneBook &obj)
{
    fio = new char[strlen(obj.fio) + 1];    // вот тут вылетает 
    strcpy(fio, obj.fio);
    homeNum = obj.homeNum;
    workNum = obj.workNum;
    mobNum = obj.mobNum;
    return *this;
}
 
void PhoneBook::getPrint()
{
    cout << "ФИО: " << fio;
    cout << "\nДомашний телефон: " << homeNum;
    cout << "\nРабочий телефон: " << workNum;
    cout << "\nМобильный телефон: +" << mobNum;
}
 
PhoneBook::~PhoneBook()
{
    delete[] fio;
    fio = NULL; 
    cout << "\n";
}
main.cpp
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
#define _CRT_SECURE_NO_WARNINGS // директива использование функция со строками
#include<iostream>
#include"PhoneBook.h"
#include<Windows.h> //вывод кириллицы
#define _CRTDBG_MAP_ALLOC // проверка удаления памяти
#include <cstdlib>  // проверка удаления памяти
#include <crtdbg.h> // проверка удаления памяти
#include <stdlib.h> // библиотека для system("cls")
 
using namespace std;
 
char re(char*, char*, char*, char*&);
void addNumOfPhone(long&, long&, long long&);
void addCont(PhoneBook*& arr, int& n, char* rez, long homeNum, long workNum, long long mobNum);
void print(PhoneBook* arr, int n);
 
int main()
{
    setlocale(0, "");
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
    int sizeOfArr = 128;
    char* surname = new char[sizeOfArr];
    char* name = new char[sizeOfArr];
    char* lastname = new char[sizeOfArr];
    char* rez = new char[sizeOfArr];
 
    cout << "Введите ФИО" << "\n";
    cout << "Фамилия: ";
    cin >> surname;
    cout << "Имя: ";
    cin >> name;
    cout << "Отчество: ";
    cin >> lastname;
    re(surname, name, lastname, rez);
    delete[]surname;
    delete[]name;
    delete[]lastname;
    long homeNum;           
    long workNum;
    long long mobNum;
    addNumOfPhone(homeNum, workNum, mobNum);
    int sizeofPhoneBook = 0;
    PhoneBook* obj = new PhoneBook;
    string daNet;
    do
    {
        addCont(obj, sizeofPhoneBook, rez, homeNum, workNum, mobNum);
        system("cls");
        cout << "Хотите добавить еще абонента? (да/нет)\n";
        cin >> daNet;
    } while (daNet != "нет");
 
    print(obj, sizeofPhoneBook);
    delete[]rez;
    delete obj;
    _CrtDumpMemoryLeaks();  // проверка удаления памяти
    return 0;
}
 
char re(char* a, char* b, char* c, char*& rez) // создание общей строки для ФИО
{
    rez = new char[strlen(a) + strlen(b) + strlen(c) + 3];
    strcat(strcat(strcat(strcat(strcpy(rez, a), " "), b), " "), c);
    return *rez;
}
 
void addNumOfPhone(long& homeNum, long& workNum, long long& mobNum)
{
    cout << "Введите домашний номер телефона: ";
    cin >> homeNum;
    cout << "Введите рабочий номер телефона: ";
    cin >> workNum;
    cout << "Введите мобильный номер телефона: +";
    cin >> mobNum;
}
 
void addCont(PhoneBook*& arr, int& n, char* rez, long homeNum, long workNum, long long mobNum)  //добавляем элемент в массив
{
    PhoneBook* arr2 = new PhoneBook[n + 1];
    arr2[n].setAdd(rez, homeNum, workNum, mobNum);
    move(arr, arr + n, arr2);
    arr = arr2;
    delete[] arr;
    n++;
}
 
void print(PhoneBook* arr, int n)
{
    for (int i = 0; i < n; i++)
        arr[i].getPrint();
}
признаться, первый раз такие проблемы)))))
0
6772 / 4565 / 1844
Регистрация: 07.05.2019
Сообщений: 13,726
05.04.2020, 10:48
Цитата Сообщение от ttshkalol Посмотреть сообщение
признаться, первый раз такие проблемы)))))
Запусти под отладчиком - F5 - и посмотри на какой строчке падает

Добавлено через 4 минуты
Цитата Сообщение от ttshkalol Посмотреть сообщение
int sizeOfArr = 128;
    char* surname = new char[sizeOfArr];
    char* name = new char[sizeOfArr];
    char* lastname = new char[sizeOfArr];
    char* rez = new char[sizeOfArr];
C++
1
2
3
4
5
    const int sizeOfArr = 128;
    char surname[sizeOfArr];
    char name[sizeOfArr];
    char lastname[sizeOfArr];
    char rez[sizeOfArr];
Добавлено через 36 секунд
Соответственно, delete[] для них убери

Добавлено через 50 секунд
Иначе cin >> surname; не работает
0
1 / 1 / 0
Регистрация: 11.01.2020
Сообщений: 62
05.04.2020, 10:49  [ТС]
падает, когда я ввел все данные в цикле do/while и выходит сообщение "Хотите добавить еще абонента? (да/нет)\n"
я жму "да" и все падает. и показывает на " fio = new char[strlen(obj.fio) + 1]; // вот тут вылетает "
0
6772 / 4565 / 1844
Регистрация: 07.05.2019
Сообщений: 13,726
05.04.2020, 11:07
Цитата Сообщение от ttshkalol Посмотреть сообщение
я жму "да" и все падает. и показывает на " fio = new char[strlen(obj.fio) + 1]; // вот тут вылетает "
Там, в отладчике, весь стек видно, покажи его
Цитата Сообщение от ttshkalol Посмотреть сообщение
void addCont(PhoneBook*& arr, int& n, char* rez, long homeNum, long workNum, long long mobNum)  //добавляем элемент в массив
{
    PhoneBook* arr2 = new PhoneBook[n + 1];
    arr2[n].setAdd(rez, homeNum, workNum, mobNum);
    move(arr, arr + n, arr2);
    arr = arr2;
    delete[] arr;
    n++;
}
    delete[] arr;
    arr = arr2;

Добавлено через 54 секунды
Я тебе вроде правильно писал, нафига поменял?

Добавлено через 3 минуты
Цитата Сообщение от ttshkalol Посмотреть сообщение
int sizeofPhoneBook = 0;
    PhoneBook* obj = new PhoneBook;
    string daNet;
PhoneBook* obj = nullptr;

Добавлено через 3 минуты
Цитата Сообщение от ttshkalol Посмотреть сообщение
print(obj, sizeofPhoneBook);
    delete[]rez;
    delete obj;
    _CrtDumpMemoryLeaks();  // проверка удаления памяти
delete[] obj;
0
1 / 1 / 0
Регистрация: 11.01.2020
Сообщений: 62
05.04.2020, 11:14  [ТС]
надеюсь видно скрин

Добавлено через 4 минуты
исправил как вы написали. теперь перестал заходить в функцию addCont. т.е. один раз записывает и все

Добавлено через 1 минуту
Цитата Сообщение от oleg-m1973 Посмотреть сообщение
Я тебе вроде правильно писал, нафига поменял?
поменял, потому что ваще вылетало ))
и если честно не понимаю. как мы удалил память, а потом сделали присваивание??
0
1 / 1 / 0
Регистрация: 11.01.2020
Сообщений: 62
05.04.2020, 11:18  [ТС]
Цитата Сообщение от oleg-m1973 Посмотреть сообщение
Там, в отладчике, весь стек видно, покажи его
до помследних изменений было так, как на скрине. сейчас получился "типа бесконечный цикл" ну, он принимает значения, а второй раз не принимает. т.е. не создает массив
Миниатюры
Почему не выполняет повторно функцию addCont?  
0
6772 / 4565 / 1844
Регистрация: 07.05.2019
Сообщений: 13,726
05.04.2020, 11:21
Цитата Сообщение от ttshkalol Посмотреть сообщение
до помследних изменений было так, как на скрине. сейчас получился "типа бесконечный цикл" ну, он принимает значения, а второй раз не принимает. т.е. не создает массив
Покажи, как сделал
0
1 / 1 / 0
Регистрация: 11.01.2020
Сообщений: 62
05.04.2020, 11:23  [ТС]
PhoneBook.h
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#pragma once
class PhoneBook
{
private:
    char* fio;
    long homeNum;
    long workNum;
    long long mobNum;
public:
    PhoneBook();
    PhoneBook(const char*, long, long, long long);
    PhoneBook(const PhoneBook&);
    PhoneBook& operator= (const PhoneBook&);
 
    void setAdd(const char*, long, long, long long);
    void getPrint();
 
    ~PhoneBook();
};
PhoneBook.cpp
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
#define _CRT_SECURE_NO_WARNINGS
#include "PhoneBook.h"
#include<iostream>
#include <cstring>
 
using namespace std;
 
PhoneBook::PhoneBook()  // пустой конструктор
{
    fio = nullptr;
    homeNum = 0;
    workNum = 0;
    mobNum = 0;
}
 
PhoneBook::PhoneBook(const char* fio, long homeNum, long workNum, long long mobNum)
{
    setAdd(fio, homeNum, workNum, mobNum);
}
 
PhoneBook::PhoneBook(const PhoneBook& obj)
{
    fio = new char[strlen(obj.fio) + 1];
    strcpy(fio, obj.fio);
 
    homeNum = obj.homeNum;
    workNum = obj.workNum;
    mobNum = obj.mobNum;
}
 
void PhoneBook::setAdd(const char* fio, long homeNum, long workNum, long long mobNum)
{
    this->fio = new char[strlen(fio) + 1];
    strcpy(this->fio, fio);
    this->homeNum = homeNum;
    this->workNum = workNum;
    this->mobNum = mobNum;
}
 
PhoneBook& PhoneBook::operator= (const PhoneBook &obj)
{
    fio = new char[strlen(obj.fio) + 1];    // вот тут вылетает 
    strcpy(fio, obj.fio);
    homeNum = obj.homeNum;
    workNum = obj.workNum;
    mobNum = obj.mobNum;
    return *this;
}
 
void PhoneBook::getPrint()
{
    cout << "ФИО: " << fio;
    cout << "\nДомашний телефон: " << homeNum;
    cout << "\nРабочий телефон: " << workNum;
    cout << "\nМобильный телефон: +" << mobNum;
}
 
PhoneBook::~PhoneBook()
{
    delete[] fio;
    fio = NULL; 
    cout << "\n";
}
Main.cpp
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
#define _CRT_SECURE_NO_WARNINGS // директива использование функция со строками
#include<iostream>
#include"PhoneBook.h"
#include<Windows.h> //вывод кириллицы
#define _CRTDBG_MAP_ALLOC // проверка удаления памяти
#include <cstdlib>  // проверка удаления памяти
#include <crtdbg.h> // проверка удаления памяти
#include <stdlib.h> // библиотека для system("cls")
 
using namespace std;
 
char re(char* a, char* b, char* c, char* rez);
void addNumOfPhone(long&, long&, long long&);
void addCont(PhoneBook*& arr, int& n, char* rez, long homeNum, long workNum, long long mobNum);
void print(PhoneBook* arr, int n);
 
int main()
{
    setlocale(0, "");
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
    const int sizeOfArr = 128;
    char surname[sizeOfArr];
    char name[sizeOfArr];
    char lastname[sizeOfArr];
    char rez[sizeOfArr];
 
    cout << "Введите ФИО" << "\n";
    cout << "Фамилия: ";
    cin >> surname;
    cout << "Имя: ";
    cin >> name;
    cout << "Отчество: ";
    cin >> lastname;
    re(surname, name, lastname, rez);
    long homeNum;           
    long workNum;
    long long mobNum;
    addNumOfPhone(homeNum, workNum, mobNum);
    int sizeofPhoneBook = 0;
    PhoneBook* obj = nullptr;
    string daNet;
    do
    {
        addCont(obj, sizeofPhoneBook, rez, homeNum, workNum, mobNum);
        system("cls");
        cout << "Хотите добавить еще абонента? (да/нет)\n";
        cin >> daNet;
    } while (daNet != "нет");
 
    print(obj, sizeofPhoneBook);
    delete[] obj;
    _CrtDumpMemoryLeaks();  // проверка удаления памяти
    return 0;
}
 
char re(char* a, char* b, char* c, char* rez) // создание общей строки для ФИО
{
    strcat(strcat(strcat(strcat(strcpy(rez, a), " "), b), " "), c);
    return *rez;
}
 
void addNumOfPhone(long& homeNum, long& workNum, long long& mobNum)
{
    cout << "Введите домашний номер телефона: ";
    cin >> homeNum;
    cout << "Введите рабочий номер телефона: ";
    cin >> workNum;
    cout << "Введите мобильный номер телефона: +";
    cin >> mobNum;
}
 
void addCont(PhoneBook*& arr, int& n, char* rez, long homeNum, long workNum, long long mobNum)  //добавляем элемент в массив
{
    PhoneBook* arr2 = new PhoneBook[n + 1];
    arr2[n].setAdd(rez, homeNum, workNum, mobNum);
    move(arr, arr + n, arr2);
    delete[] arr;
    arr = arr2;
    n++;
}
 
void print(PhoneBook* arr, int n)
{
    for (int i = 0; i < n; i++)
        arr[i].getPrint();
}
0
6772 / 4565 / 1844
Регистрация: 07.05.2019
Сообщений: 13,726
05.04.2020, 11:27
Всё нормально, всё создаётся и ничего не должно падать.
А данные не запрашиваются - потому что их надо каждый раз запрашивать внутри цикла do- while (daNet != "нет");, а не один раз снаружи
0
1 / 1 / 0
Регистрация: 11.01.2020
Сообщений: 62
05.04.2020, 11:37  [ТС]
так у меня же функция внутри цикла. но все равно цикл отрабатывает только один раз, а дальше не хочет в функцию заходить
0
6772 / 4565 / 1844
Регистрация: 07.05.2019
Сообщений: 13,726
05.04.2020, 11:39
Цитата Сообщение от ttshkalol Посмотреть сообщение
так у меня же функция внутри цикла. но все равно цикл отрабатывает только один раз, а дальше не хочет в функцию заходить
С чего ты это взял?
0
1 / 1 / 0
Регистрация: 11.01.2020
Сообщений: 62
05.04.2020, 11:40  [ТС]
вот как получается
Миниатюры
Почему не выполняет повторно функцию addCont?  
0
6772 / 4565 / 1844
Регистрация: 07.05.2019
Сообщений: 13,726
05.04.2020, 11:41
Цитата Сообщение от ttshkalol Посмотреть сообщение
вот как получается
Набери 'нет'
0
1 / 1 / 0
Регистрация: 11.01.2020
Сообщений: 62
05.04.2020, 11:42  [ТС]
с нет работает. оно и раньше работало. но мне же надо создать несколько контактор, а не один
Миниатюры
Почему не выполняет повторно функцию addCont?  
0
6772 / 4565 / 1844
Регистрация: 07.05.2019
Сообщений: 13,726
05.04.2020, 11:44
Цитата Сообщение от ttshkalol Посмотреть сообщение
с нет работает. оно и раньше работало. но мне же надо создать несколько контактор, а не один
У тебя несколько и создалось, одинаковых. Потому что
Цитата Сообщение от oleg-m1973 Посмотреть сообщение
А данные не запрашиваются - потому что их надо каждый раз запрашивать внутри цикла do- while (daNet != "нет");, а не один раз снаружи
Добавлено через 49 секунд
Введи несколько раз да, потом - нет
0
1 / 1 / 0
Регистрация: 11.01.2020
Сообщений: 62
05.04.2020, 11:49  [ТС]
хммм, так они же все одинаковые)) видимо я слишком туп)))
Миниатюры
Почему не выполняет повторно функцию addCont?  
0
1 / 1 / 0
Регистрация: 11.01.2020
Сообщений: 62
05.04.2020, 11:50  [ТС]
когда я писал, я подразумевал, что после "да" он будет записывать новый контакт. (в дальнейшем через менюшку). а оказалось, я написал лабуду. шок
0
6772 / 4565 / 1844
Регистрация: 07.05.2019
Сообщений: 13,726
05.04.2020, 11:51
Цитата Сообщение от ttshkalol Посмотреть сообщение
хммм, так они же все одинаковые)) видимо я слишком туп)))
А же тебе вроде уже два раза сказал, почему так
0
1 / 1 / 0
Регистрация: 11.01.2020
Сообщений: 62
05.04.2020, 11:53  [ТС]
Цитата Сообщение от oleg-m1973 Посмотреть сообщение
А же тебе вроде уже два раза сказал, почему так
типа он их просто скопировал. а как их тогда изменить? можете навести на мыслЮ? как сделать, чтобы после заветного "да" он сразу записывал новый контакт?
0
6772 / 4565 / 1844
Регистрация: 07.05.2019
Сообщений: 13,726
05.04.2020, 11:56
Цитата Сообщение от ttshkalol Посмотреть сообщение
типа он их просто скопировал. а как их тогда изменить? можете навести на мыслЮ? как сделать, чтобы после заветного "да" он сразу записывал новый контакт?
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
  int sizeofPhoneBook = 0;
    PhoneBook* obj = nullptr;
    string daNet; 
 
 
   do
    {
 
 
    cout << "Введите ФИО" << "\n";
    cout << "Фамилия: ";
    cin >> surname;
    cout << "Имя: ";
    cin >> name;
    cout << "Отчество: ";
    cin >> lastname;
    re(surname, name, lastname, rez);
    long homeNum;           
    long workNum;
    long long mobNum;
    addNumOfPhone(homeNum, workNum, mobNum);
    //int sizeofPhoneBook = 0;
    //PhoneBook* obj = nullptr;
    //string daNet; 
 
       addCont(obj, sizeofPhoneBook, rez, homeNum, workNum, mobNum);
        system("cls");
        cout << "Хотите добавить еще абонента? (да/нет)\n";
        cin >> daNet;
    } while (daNet != "нет");
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
05.04.2020, 11:56

Почему spring security не выполняет своих обязятельств?
Здравствуйте. Помогите, пожалуйста, решить следующую проблему. Пытаюсь поднять spring security Его конфигурация ...

Не понимаю почему не выполняет проверку на квадратный корень
условие задачи: Вычислите sqrt(x−sqrt(y)), если x и y вводит пользователь. Перед вычислением выполнить проверку на существование квадратных...

Ф5 выполняет функцию кнопки sabmit
При обновлении страницы САМА нажимается кнопка Submit(вычисление и обновление БД). Подскажите новичку, как сделать так, что бы на странице...

Нить не выполняет свою функцию
Имеется следующий код: public class Solution { String name1 = &quot;Оля&quot;; String name2 = &quot;Лена&quot;; public static void...

Какую функцию выполняет оператор **
Наткнулся на оператор ** в статье про арифметические операции. Вот что там написано: To exponentiate two types, the ** exponentiation...


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

Или воспользуйтесь поиском по форуму:
40
Ответ Создать тему
Новые блоги и статьи
BitTorrent (версия 7.11 English) и Меню Настройки
russiannick 15.11.2026
Пункты, отвечающие за отключение обновлений в BitTorrent версии 7. 11 (английской) Options Preferences General Language
Транслитерация текста с кириллицы на латиницу (вариант №4)
Maks 15.11.2026
Что-то я перемудрил с предыдущими версиями, в этот раз сделал всё проще, обратившись к функции "СтрокаЛатиницей" из типового общего модуля "СтроковыеФункцииКлиент". В данной функции нет апострофов,. . .
BitTorrent (версия 4.3.9) и Меню Настройки
russiannick 15.11.2026
В меню Настройки можно отключить автоматическое обновление программы. Карта этого меню приложена ниже. Нужный пункт выделен красным. Сервис Настройки Поведение
Транслитерация текста с кириллицы на латиницу (вариант №3)
Maks 15.11.2026
Обновленная версия предыдущей обработки. Изменения коснулись букв: Ъ, Ы, Ь, Э, отображения которых зависят от положения реквизита "Транслитерация имён". Изменено отображение буквы Й. Добавлена. . .
Транслитерация текста с кириллицы на латиницу (вариант №2)
Maks 13.11.2026
Обновленная версия ранее созданной обработки. Добавлено: - Проверка исходного текста на кириллицу, через обращение к стандартной функции "ТолькоКириллицаВСтроке" из общего модуля. . .
Часы с термометром и праздничным календарем
yariko 12.11.2026
Сегодня мы рассмотрим как можно сделать отличные многофункциональные часы. Итак, поставим конкретную задачу: разработать часы с календарем, двумя термодатчиками, выводом поздравительных сообщений. . .
Транслитерация текста с кириллицы на латиницу (вариант №1)
Maks 11.11.2026
Решил облегчить жизнь себе и коллегам админам при создании электронных почтовых ящиков для пользователей, в результате написал обработку "Транслитерация текста" с кириллицы на латиницу, а в ней. . .
Книги по геймдизайну, левел-дизайну, игровым механикам и проектированию игрового опыта
8Observer8 08.11.2026
Содержание блога | English Version 1. 2003 - 06 - Designing Virtual Worlds (1st Edition) Автор: Richard A. Bartle | Объем: 768 стр. Ссылки: Amazon . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru