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

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

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

Author24 — интернет-сервис помощи студентам
помогите разобрать. почти уверен, что неправильно выделена память в конструкторе (в нем через 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
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
04.04.2020, 17:31
Ответы с готовыми решениями:

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

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

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

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

64
1 / 1 / 0
Регистрация: 11.01.2020
Сообщений: 62
05.04.2020, 10:40  [ТС] 21
Author24 — интернет-сервис помощи студентам
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
6579 / 4564 / 1843
Регистрация: 07.05.2019
Сообщений: 13,726
05.04.2020, 10:48 22
Цитата Сообщение от 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  [ТС] 23
падает, когда я ввел все данные в цикле do/while и выходит сообщение "Хотите добавить еще абонента? (да/нет)\n"
я жму "да" и все падает. и показывает на " fio = new char[strlen(obj.fio) + 1]; // вот тут вылетает "
0
6579 / 4564 / 1843
Регистрация: 07.05.2019
Сообщений: 13,726
05.04.2020, 11:07 24
Цитата Сообщение от 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  [ТС] 25
надеюсь видно скрин

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

Добавлено через 1 минуту
Цитата Сообщение от oleg-m1973 Посмотреть сообщение
Я тебе вроде правильно писал, нафига поменял?
поменял, потому что ваще вылетало ))
и если честно не понимаю. как мы удалил память, а потом сделали присваивание??
0
1 / 1 / 0
Регистрация: 11.01.2020
Сообщений: 62
05.04.2020, 11:18  [ТС] 26
Цитата Сообщение от oleg-m1973 Посмотреть сообщение
Там, в отладчике, весь стек видно, покажи его
до помследних изменений было так, как на скрине. сейчас получился "типа бесконечный цикл" ну, он принимает значения, а второй раз не принимает. т.е. не создает массив
Миниатюры
Почему не выполняет повторно функцию addCont?  
0
6579 / 4564 / 1843
Регистрация: 07.05.2019
Сообщений: 13,726
05.04.2020, 11:21 27
Цитата Сообщение от ttshkalol Посмотреть сообщение
до помследних изменений было так, как на скрине. сейчас получился "типа бесконечный цикл" ну, он принимает значения, а второй раз не принимает. т.е. не создает массив
Покажи, как сделал
0
1 / 1 / 0
Регистрация: 11.01.2020
Сообщений: 62
05.04.2020, 11:23  [ТС] 28
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
6579 / 4564 / 1843
Регистрация: 07.05.2019
Сообщений: 13,726
05.04.2020, 11:27 29
Всё нормально, всё создаётся и ничего не должно падать.
А данные не запрашиваются - потому что их надо каждый раз запрашивать внутри цикла do- while (daNet != "нет");, а не один раз снаружи
0
1 / 1 / 0
Регистрация: 11.01.2020
Сообщений: 62
05.04.2020, 11:37  [ТС] 30
так у меня же функция внутри цикла. но все равно цикл отрабатывает только один раз, а дальше не хочет в функцию заходить
0
6579 / 4564 / 1843
Регистрация: 07.05.2019
Сообщений: 13,726
05.04.2020, 11:39 31
Цитата Сообщение от ttshkalol Посмотреть сообщение
так у меня же функция внутри цикла. но все равно цикл отрабатывает только один раз, а дальше не хочет в функцию заходить
С чего ты это взял?
0
1 / 1 / 0
Регистрация: 11.01.2020
Сообщений: 62
05.04.2020, 11:40  [ТС] 32
вот как получается
Миниатюры
Почему не выполняет повторно функцию addCont?  
0
6579 / 4564 / 1843
Регистрация: 07.05.2019
Сообщений: 13,726
05.04.2020, 11:41 33
Цитата Сообщение от ttshkalol Посмотреть сообщение
вот как получается
Набери 'нет'
0
1 / 1 / 0
Регистрация: 11.01.2020
Сообщений: 62
05.04.2020, 11:42  [ТС] 34
с нет работает. оно и раньше работало. но мне же надо создать несколько контактор, а не один
Миниатюры
Почему не выполняет повторно функцию addCont?  
0
6579 / 4564 / 1843
Регистрация: 07.05.2019
Сообщений: 13,726
05.04.2020, 11:44 35
Цитата Сообщение от ttshkalol Посмотреть сообщение
с нет работает. оно и раньше работало. но мне же надо создать несколько контактор, а не один
У тебя несколько и создалось, одинаковых. Потому что
Цитата Сообщение от oleg-m1973 Посмотреть сообщение
А данные не запрашиваются - потому что их надо каждый раз запрашивать внутри цикла do- while (daNet != "нет");, а не один раз снаружи
Добавлено через 49 секунд
Введи несколько раз да, потом - нет
0
1 / 1 / 0
Регистрация: 11.01.2020
Сообщений: 62
05.04.2020, 11:49  [ТС] 36
хммм, так они же все одинаковые)) видимо я слишком туп)))
Миниатюры
Почему не выполняет повторно функцию addCont?  
0
1 / 1 / 0
Регистрация: 11.01.2020
Сообщений: 62
05.04.2020, 11:50  [ТС] 37
когда я писал, я подразумевал, что после "да" он будет записывать новый контакт. (в дальнейшем через менюшку). а оказалось, я написал лабуду. шок
0
6579 / 4564 / 1843
Регистрация: 07.05.2019
Сообщений: 13,726
05.04.2020, 11:51 38
Цитата Сообщение от ttshkalol Посмотреть сообщение
хммм, так они же все одинаковые)) видимо я слишком туп)))
А же тебе вроде уже два раза сказал, почему так
0
1 / 1 / 0
Регистрация: 11.01.2020
Сообщений: 62
05.04.2020, 11:53  [ТС] 39
Цитата Сообщение от oleg-m1973 Посмотреть сообщение
А же тебе вроде уже два раза сказал, почему так
типа он их просто скопировал. а как их тогда изменить? можете навести на мыслЮ? как сделать, чтобы после заветного "да" он сразу записывал новый контакт?
0
6579 / 4564 / 1843
Регистрация: 07.05.2019
Сообщений: 13,726
05.04.2020, 11:56 40
Цитата Сообщение от 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
05.04.2020, 11:56
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
05.04.2020, 11:56
Помогаю со студенческими работами здесь

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
40
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru