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

Как сделать вывод массива указателей char на экран?

09.01.2017, 00:45. Показов 2596. Ответов 2
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Доброго времени суток.
Делал наброски на телефонный справочник с несколькими телефонными книгами внутри. При написании пользуюсь тем, что знаю, код сырой. Проблемы на данный момент две:
1) в 113-ой строке ввод cin >> dif; не происходит, перескакивает на 114-ую строку.
2) Есть два класса, в каждом из них пользовался указателем на указатель (два двумерных массива char: 1-ый - имя, 2-ой - номер). Объявление в 12-18 строках, аналогично в 61-67 строках. Заполнение в 21-26 строках (имя и номер пользователя), аналогичное заполнение в строках 75-77. Проблема в том, что при попытке вывода на экран имени и номера пользователя выводится лишь первый символ имени и первый символ номера. Скорее всего я запутался в указателях и либо заполнил не так как нужно, либо вывел на экран не то, что нужно из указателей. Даже от идей буду благодарен. Спасибо заранее.

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
#include "stdafx.h"
#include <windows.h>
#include "iostream"
#include "string"
using namespace std;
 
class User {
public:
    const int len_Number = 50; //Количество строк в массиве
    const int len_Size = 30;   //Длина строки
    int k = 0;
    char **selectName = new char*[len_Number];   //Выделяем память для имен
    char **selectNumber = new char*[len_Number]; //Выделяем память для номеров
 
    User(){
        for (int i = 0; i < len_Number; i++){
            selectName[i] = new char[len_Size];   //Выделяем память под количество символов 
            selectNumber[i] = new char[len_Size]; //в строке для каждой строки в отдельности
        }
    }
    void addUsers(){
        cout << "\tСоздание пользователя " << endl;
        cout << "Введите имя: ";
        cin >> selectName[k];
        cout << "Введите номер: ";
        cin >> selectNumber[k];
        k++;
    }
    void getUsers(){
        const int indSize = 20;
        char *indicator = new char[indSize];
        cout << "Введите имя или номер пользователя, которого вы хотите найти: ";
        cin >> *indicator;
        for (int i = 0; i < k; i++){
            int x;
            do 
            {
                x = 0;
                if (*indicator == *selectName[i]){
                    cout << "Имя пользователя: " << *selectName[i] << "\nНомер пользователя: " << *selectNumber[i] << endl;
                    break;
                }
                else if (*indicator == *selectNumber[i]){
                    cout << "Имя пользователя: " << *selectName[i] << "\nНомер пользователя: " << *selectNumber[i] << endl;
                    break;
                }
                else{
                    cout << "Пользователя с таким Именем и Номером нет! Повторите ввод! ";
                    x = 1;
                }
            } while (x == 1);
        }
    }
};
 
class ContactList {
public:
    const int lenNumber = 50; //Количество строк в массиве
    const int lenSize = 30;   //Длина строки
    int j = 0;
    char **MassiveName = new char*[lenNumber];   //Выделяем память для имен
    char **MassiveNumber = new char*[lenNumber]; //Выделяем память для номеров
 
    ContactList(){
        for (int i = 0; i < lenNumber; i++){
            MassiveName[i] = new char[lenSize];   //Выделяем память под количество символов 
            MassiveNumber[i] = new char[lenSize]; //в строке для каждой строки в отдельности
        }
    }
    void addContacts(){
        string clue;
        do{
            cout << "\t*Добавление контакта* " << endl;
            cout << "Введите имя контакта: ";
            cin >> MassiveName[j];   //Вводим имя на экран
            cout << "Введите номер контакта: ";
            cin >> MassiveNumber[j]; //Вводим номер на экран
            j++;
            cout << "\nДобавить еще один контакт? Да/Нет ";
            cin >> clue;
        } while (clue == "Да" || clue == "да");
    }
 
    // void getContacts()
    // {
    //
    // }
 
};
 
int main()
{
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
    string enter;
    User Create;
    ContactList PhoneBook;
    string dif;
    do{
        cout << "Создать или Найти пользователя? Создать/Найти " << endl;
        cin >> dif;
        if (dif == "Создать" | dif == "создать"){
            do{
                Create.addUsers();
                PhoneBook.addContacts();
                cout << "\nДобавить еще одного пользователя? Да/Нет ";
                cin >> dif;
            } while (dif == "Да" || dif == "да");
        }
        if (dif == "Найти" | dif == "найти") 
            Create.getUsers();
        cout << "Продолжить или Выйти? ";
        cin >> dif;
    } while (dif != "Выйти" | dif != "выйти");
    system("pause");
    return 0;
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
09.01.2017, 00:45
Ответы с готовыми решениями:

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

В чем отличие двумерного массива типа char от массива указателей на char?
В чем отличие двумерного массива типа char и массива указателей на char ?

Вывод массива на экран функцией с использованием указателей
Привет, при написании функции возникла проблема: в помеченной комментарием строке выдало ошибку(...

array char* to char* (значения массива указателей в один указатель)
Как сложить(или вывести в формате char*) все значения массива указателей(char *) воедино, то есть...

2
nd2
3437 / 2816 / 1249
Регистрация: 29.01.2016
Сообщений: 9,426
09.01.2017, 01:29 2
Цитата Сообщение от Bonchy Посмотреть сообщение
1) в 113-ой строке ввод cin >> dif; не происходит, перескакивает на 114-ую строку.
Ну, это навряд ли, но условие там неправильно задано. Нужно:
C++
1
while (dif != "Выйти" && dif != "выйти");
Добавлено через 7 минут
Цитата Сообщение от Bonchy Посмотреть сообщение
cin >> *indicator;
C++
1
cin >> indicator;
Цитата Сообщение от Bonchy Посмотреть сообщение
C++
1
2
3
if (*indicator == *selectName[i])
{ cout << "Имя пользователя: " << *selectName[i] << "\nНомер пользователя: " << *selectNumber[i] << endl; 
break; }
C++
1
2
3
4
5
if (strcmp(indicator, selectName[i]) == 0)
{
         cout << "Имя пользователя: " << selectName[i] << "\nНомер пользователя: " << selectNumber[i] << endl;
         break;
}
И т.д., и т.п....
1
5 / 0 / 0
Регистрация: 12.11.2016
Сообщений: 24
09.01.2017, 13:14  [ТС] 3
nd2, спасибо большое за помощь, все подставил, разобрался. Благодарю)
0
09.01.2017, 13:14
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
09.01.2017, 13:14
Помогаю со студенческими работами здесь

Инициализация массива указателей char
Здравствуйте. Никак не могу найти информацию по следующему вопросу. Есть фрагмент: char...

Сортировка массива указателей на char
Есть массив указателей на char-ы. Нужно отсортировать их по алфавиту. Прошу помочь как можно...

Как сделать вывод переменной char на русском
Выводит символы, я так понимаю из ASCII #include &lt;iostream&gt; #include &lt;locale.h&gt; #include...

Динамическое выделение памяти для массива указателей на char
Доброго времени суток! пытаюсь выделить память для массива указателей на char следующий код...


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

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