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

Подскажите как сделать ввод с клавиатуры пользователем - C++

Восстановить пароль Регистрация
 
 
Мария1501
0 / 0 / 0
Регистрация: 26.11.2013
Сообщений: 29
28.11.2013, 12:12     Подскажите как сделать ввод с клавиатуры пользователем #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
#include <cstdlib>
#include <iostream>
 
using namespace std;
 
class String
{
private:
    char* str;
    int n; 
public:
    String(char* string = "")
    {
        n = strlen(string) + 1;
        str = new char[n];
        memcpy(str, string, n);
    }
 
    String(char* string, size_t size)  //ГЄГ®Г*ñòðóêòîð, ïîçâîëÿþùèé ñîçäГ*ГІГј ñòðîêó ГЁГ§ size ñèìâîëîâ
    {
        n = size + 1;
        str = new char[n];      
        memcpy(str, string, n * sizeof(char));
        str[size] = 0;
    }
 
    ~String()
    {
        if (str)
        delete str;
    }
 
    void print()
    {
        std::cout << str << std::endl;
    }
 
    int const getnum() //êîë-ГўГ® ñèìâîëîâ Гў ñòðîêå
    {
        return n - 1;
    }
 
    char const getchar(int n) // ñèìâîë ГЁГ§ ïîçèöèè n
    {
        return str[n - 1];
    }
 
    void upper()  // Гў âåðõГ*ГЁГ© ðåãèñòð
    {
        for (int i = 0; i < n; i++)
            str[i] = toupper(str[i]);
    }
 
    int const punctuation() // êîë-ГўГ® Г§Г*Г*êîâ ïðåïèГ*Г*Г*ГЁГї
    {
 int count = 0;
 for (int i = 0; i < n; i++)
 if (ispunct(str[i]))
    count++;
    return count;
    }
};
 
int main()
{ 
    
    String str("I!love!!!programming!");
    str.upper();
    str.print();
 
    std::cout << str.getnum() << std::endl;
    std::cout << str.punctuation() << std::endl;
    std::cout << str.getchar(1) << std::endl;
 
    system("PAUSE");
    return 0;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.11.2013, 12:12     Подскажите как сделать ввод с клавиатуры пользователем
Посмотрите здесь:

C++ _TCHAR szTestString[] = как сделать тут ввод с клавиатуры и возможно ли это
C++ Подскажите как сделать, например "для продолжения нажмите клавишу х" и дальше выводится результат с шагом заданым пользователем
C++ Ввод массива как с клавиатуры, так и из файла
C++ Как считывать слова/цифры пока не закончился ввод пользователем
Как правильно заменить ввод данных простой на ввод с клавиатуры? C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
28.11.2013, 12:18     Подскажите как сделать ввод с клавиатуры пользователем #2
C++
1
2
3
char s[255];
std::cin.getline(s, 255);
String str(s);
Мария1501
0 / 0 / 0
Регистрация: 26.11.2013
Сообщений: 29
28.11.2013, 12:29  [ТС]     Подскажите как сделать ввод с клавиатуры пользователем #3
Спасибо поняла

Добавлено через 7 минут
А еще вопросик, мне сказали что, В конструкторе, который принимает укатель на char, не проставляется терминирующий ноль. Во втором конструкторе, терминирующий ноль проставляется в неправильное место (должен проставляться в n-й символ).,как это исправить?
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
28.11.2013, 12:32     Подскажите как сделать ввод с клавиатуры пользователем #4
Зачем вы memcpy() используете? Для строк С есть функции копирования (например, strcpy(), strncpy()) которые сами ставят '\0'.
Мария1501
0 / 0 / 0
Регистрация: 26.11.2013
Сообщений: 29
28.11.2013, 12:35  [ТС]     Подскажите как сделать ввод с клавиатуры пользователем #5
Я не знаю, мне помогали делать, помогите исправить пожалуйста
Raali
572 / 276 / 12
Регистрация: 06.07.2013
Сообщений: 917
Завершенные тесты: 1
28.11.2013, 12:35     Подскажите как сделать ввод с клавиатуры пользователем #6
Цитата Сообщение от Мария1501 Посмотреть сообщение
Подскажите как сделать ввод с клавиатуры пользователем
C++
1
std::cin >> something;
Мария1501
0 / 0 / 0
Регистрация: 26.11.2013
Сообщений: 29
28.11.2013, 12:56  [ТС]     Подскажите как сделать ввод с клавиатуры пользователем #7
Цитата Сообщение от Raali Посмотреть сообщение
C++
1
std::cin >> something;
А это вместо чего?

Добавлено через 18 минут
Цитата Сообщение от alsav22 Посмотреть сообщение
char s[255];
std::cin.getline(s, 255);
String str(s);
А теперь у меня регистр не меняется, как прежде, что сделать?
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
28.11.2013, 12:59     Подскажите как сделать ввод с клавиатуры пользователем #8
Цитата Сообщение от Мария1501 Посмотреть сообщение
помогите исправить
C++
1
2
3
4
5
6
7
String(char* string = "")
{
    n = strlen(string);
    str = new char[n + 1];
    //memcpy(str, string, n);
    strcpy(str, string);
}
C++
1
2
3
4
5
6
7
8
9
String(char* string, size_t size)  //конструктор, позволяющий создать строку из size символов
{
     n = size;
     str = new char[n + 1];      
     //memcpy(str, string, n * sizeof(char));
     strncpy(str, string, n);
     if (strlen(string) > size)
           str[n] = '\0';
}
Добавлено через 2 минуты
Цитата Сообщение от Мария1501 Посмотреть сообщение
А теперь у меня регистр не меняется, как прежде, что сделать?
Всё там меняется.
Миниатюры
Подскажите как сделать ввод с клавиатуры пользователем  
Мария1501
0 / 0 / 0
Регистрация: 26.11.2013
Сообщений: 29
28.11.2013, 13:05  [ТС]     Подскажите как сделать ввод с клавиатуры пользователем #9
Блин, всё, извините, всё в норме, а кто нибудь скажет что за терминирующий ноль?
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
28.11.2013, 13:07     Подскажите как сделать ввод с клавиатуры пользователем #10
И испарвьте:
C++
1
2
3
4
5
~String()
{
    if (str)
    delete [] str;
}
C++
1
2
3
4
int const getnum() //кол-во символов в строке
{
     return n;
}
Добавлено через 1 минуту
Цитата Сообщение от Мария1501 Посмотреть сообщение
как ввожу
Покажите, что вводите.
Мария1501
0 / 0 / 0
Регистрация: 26.11.2013
Сообщений: 29
28.11.2013, 13:12  [ТС]     Подскажите как сделать ввод с клавиатуры пользователем #11
Цитата Сообщение от alsav22 Посмотреть сообщение
И испарвьте:
C++
1
2
3
4
5
~String()
{
    if (str)
    delete [] str;
}
C++
1
2
3
4
int const getnum() //кол-во символов в строке
{
     return n;
}
Добавлено через 1 минуту

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

Добавлено через 2 минуты
Цитата Сообщение от Мария1501 Посмотреть сообщение


Добавлено через 7 минут
А еще вопросик, мне сказали что, В конструкторе, который принимает укатель на char, не проставляется терминирующий ноль. Во втором конструкторе, терминирующий ноль проставляется в неправильное место (должен проставляться в n-й символ).,как это исправить?
Это не кто-нибудь объяснит?
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
28.11.2013, 13:13     Подскажите как сделать ввод с клавиатуры пользователем #12
В свойствах консоли нужно выбрать шрифт: Lucida Console.

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
#include <cstdlib>
#include <iostream>
#include <Windows.h>
 
using namespace std;
 
class String
{
private:
    char* str;
    int n; 
public:
    String(char* string = "")
    {
        n = strlen(string);
        str = new char[n + 1];
        strcpy(str, string);
    }
 
    String(char* string, size_t size)  //конструктор, позволяющий создать строку из size символов
    {
        n = size;
        str = new char[n + 1];      
        strncpy(str, string, n);
        if (strlen(string) > size)
             str[n] = '\0';
    }
 
    ~String()
    {
        if (str)
        delete [] str;
    }
 
    void print()
    {
        std::cout << str << std::endl;
    }
 
    int const getnum() //кол-во символов в строке
    {
        return n;
    }
 
    char const getchar(int n) // символ из позиции n
    {
        return str[n - 1];
    }
 
    void upper()  // в верхний регистр
    {
        for (int i = 0; i < n; i++)
            str[i] = toupper((unsigned char)str[i]);
    }
 
    int const punctuation() // кол-во знаков препинания
    {
        int count = 0;
        for (int i = 0; i < n; i++)
        if (ispunct((unsigned char)str[i]))
            count++;
        return count;
    }
};
 
int main()
{ 
    setlocale(0, "");
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
    
    char s[255];
    std::cin.getline(s, 255);
    String str(s);
    str.upper();
    str.print();
 
    std::cout << str.getnum() << std::endl;
    std::cout << str.punctuation() << std::endl;
    std::cout << str.getchar(1) << std::endl;
 
    String str2(s, 3); 
 
    str2.upper();
    str2.print();
 
    std::cout << str2.getnum() << std::endl;
    std::cout << str2.punctuation() << std::endl;
    std::cout << str2.getchar(1) << std::endl;
 
    system("PAUSE");
    return 0;
}
Миниатюры
Подскажите как сделать ввод с клавиатуры пользователем  
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
28.11.2013, 13:14     Подскажите как сделать ввод с клавиатуры пользователем #13
Цитата Сообщение от Мария1501 Посмотреть сообщение
Это не кто-нибудь объяснит?
Что объяснять, когда уже исправлено?
Мария1501
0 / 0 / 0
Регистрация: 26.11.2013
Сообщений: 29
28.11.2013, 13:25  [ТС]     Подскажите как сделать ввод с клавиатуры пользователем #14
Кликните здесь для просмотра всего текста
Кликните здесь для просмотра всего текста
Подскажите как сделать ввод с клавиатуры пользователем
Цитата Сообщение от alsav22 Посмотреть сообщение
В свойствах консоли нужно выбрать шрифт: Lucida Console.

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
#include <cstdlib>
#include <iostream>
#include <Windows.h>
 
using namespace std;
 
class String
{
private:
    char* str;
    int n; 
public:
    String(char* string = "")
    {
        n = strlen(string);
        str = new char[n + 1];
        strcpy(str, string);
    }
 
    String(char* string, size_t size)  //конструктор, позволяющий создать строку из size символов
    {
        n = size;
        str = new char[n + 1];      
        strncpy(str, string, n);
        if (strlen(string) > size)
             str[n] = '\0';
    }
 
    ~String()
    {
        if (str)
        delete [] str;
    }
 
    void print()
    {
        std::cout << str << std::endl;
    }
 
    int const getnum() //кол-во символов в строке
    {
        return n;
    }
 
    char const getchar(int n) // символ из позиции n
    {
        return str[n - 1];
    }
 
    void upper()  // в верхний регистр
    {
        for (int i = 0; i < n; i++)
            str[i] = toupper((unsigned char)str[i]);
    }
 
    int const punctuation() // кол-во знаков препинания
    {
        int count = 0;
        for (int i = 0; i < n; i++)
        if (ispunct((unsigned char)str[i]))
            count++;
        return count;
    }
};
 
int main()
{ 
    setlocale(0, "");
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
    
    char s[255];
    std::cin.getline(s, 255);
    String str(s);
    str.upper();
    str.print();
 
    std::cout << str.getnum() << std::endl;
    std::cout << str.punctuation() << std::endl;
    std::cout << str.getchar(1) << std::endl;
 
    String str2(s, 3); 
 
    str2.upper();
    str2.print();
 
    std::cout << str2.getnum() << std::endl;
    std::cout << str2.punctuation() << std::endl;
    std::cout << str2.getchar(1) << std::endl;
 
    system("PAUSE");
    return 0;
}
Мария1501
0 / 0 / 0
Регистрация: 26.11.2013
Сообщений: 29
28.11.2013, 17:34  [ТС]     Подскажите как сделать ввод с клавиатуры пользователем #15
Всё, с этим ясно, можете еще проверить всё ли у меня по заданию сделано?
Создать класс для работы сo строками. Разработать элементы класса:
a. Поля:
• * указатель на char - хранит адрес динамически выделенной памяти;
• int n.
b. Конструктор, позволяющий создать строку из n символов.
c. Методы, позволяющие:
• подсчитать количество знаков препинания в строке;
• заменить в строке все строчные символы на прописные;
• прочитать символ из заданной позиции.
d. Свойства:
• возвращающее общее количество элементов в строке (доступное только для чтения);
• позволяющее установить значение поля, в соответствии с введенным значением строки с клавиатуры, а также получить значение данного поля (доступно для чтения и записи).

Добавлено через 2 минуты
Цитата Сообщение от alsav22 Посмотреть сообщение
Что объяснять, когда уже исправлено?
Сообщение позже пришло, не успела прочитать

Добавлено через 4 часа 5 минут
Цитата Сообщение от Мария1501 Посмотреть сообщение
C++
1
2
3
4
5
6
String str2(s, 3); 
str2.upper();
* * str2.print();
std::cout << str2.getnum() << std::endl;
* * std::cout << str2.punctuation() << std::endl;
* * std::cout << str2.getchar(1) << std::endl;
C++
1
 

А зачем сделано вот это?
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
28.11.2013, 17:36     Подскажите как сделать ввод с клавиатуры пользователем #16
Цитата Сообщение от Мария1501 Посмотреть сообщение
А зачем сделано вот это?
Проверка работы второго конструктора.
Мария1501
0 / 0 / 0
Регистрация: 26.11.2013
Сообщений: 29
28.11.2013, 17:52  [ТС]     Подскажите как сделать ввод с клавиатуры пользователем #17
Цитата Сообщение от Мария1501 Посмотреть сообщение
Всё, с этим ясно, можете еще проверить всё ли у меня по заданию сделано?
Создать класс для работы сo строками. Разработать элементы класса:
a. Поля:
• * указатель на char - хранит адрес динамически выделенной памяти;
• int n.
b. Конструктор, позволяющий создать строку из n символов.
c. Методы, позволяющие:
• подсчитать количество знаков препинания в строке;
• заменить в строке все строчные символы на прописные;
• прочитать символ из заданной позиции.
d. Свойства:
• возвращающее общее количество элементов в строке (доступное только для чтения);
• позволяющее установить значение поля, в соответствии с введенным значением строки с клавиатуры, а также получить значение данного поля (доступно для чтения и записи).
А в соответствии с заданием это обязательно?
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
28.11.2013, 17:56     Подскажите как сделать ввод с клавиатуры пользователем #18
Это я для себя сделал, а соответствует ли это заданию не знаю, сами думайте.
Мария1501
0 / 0 / 0
Регистрация: 26.11.2013
Сообщений: 29
28.11.2013, 18:37  [ТС]     Подскажите как сделать ввод с клавиатуры пользователем #19
Цитата Сообщение от Мария1501 Посмотреть сообщение
Всё, с этим ясно, можете еще проверить всё ли у меня по заданию сделано?
Создать класс для работы сo строками. Разработать элементы класса:
a. Поля:
• * указатель на char - хранит адрес динамически выделенной памяти;
• int n.
b. Конструктор, позволяющий создать строку из n символов.
c. Методы, позволяющие:
• подсчитать количество знаков препинания в строке;
• заменить в строке все строчные символы на прописные;
• прочитать символ из заданной позиции.
d. Свойства:
• возвращающее общее количество элементов в строке (доступное только для чтения);
• позволяющее установить значение поля, в соответствии с введенным значением строки с клавиатуры, а также получить значение данного поля (доступно для чтения и записи).
А в соответствии с заданием это обязательно?

Добавлено через 54 секунды
спасибо хоть на этом

Добавлено через 6 минут
Свойство getchar на данный момент позволяет только вернуть символ (то есть чтение), но никак не записать его. Для того, чтобы можно было записывать в тот символ, который мы вернули, символ нужно возвращать не по значению, а по ссылке. После этого в главной программе можно будет написать следующую строчку кода (и она будет работать):
C++
1
str.getchar(1) = 'R';
Исправте это, пожалуйста, очень прошу
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
28.11.2013, 18:57     Подскажите как сделать ввод с клавиатуры пользователем
Еще ссылки по теме:

C++ Как завершить ввод данных с клавиатуры
C++ Как сделать ввод с клавиатуры?
C++ Как сделать ввод элементов массива с клавиатуры?

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

Или воспользуйтесь поиском по форуму:
alsav22
28.11.2013, 18:57     Подскажите как сделать ввод с клавиатуры пользователем
  #20

Не по теме:

Я на сколько ваших вопросов уже ответил?

Yandex
Объявления
28.11.2013, 18:57     Подскажите как сделать ввод с клавиатуры пользователем
Ответ Создать тему
Опции темы

Текущее время: 23:57. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru