20 / 27 / 1
Регистрация: 14.03.2015
Сообщений: 792
1

Возвращается не то, что было помещено в массив

18.01.2016, 17:54. Показов 449. Ответов 8
Метки нет (Все метки)

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include "stdafx.h"
#include <iostream>
using namespace std;
 
int _tmain(int argc, _TCHAR* argv[])
{
    setlocale(0, "");
    char name[100];
    cout << " Пиши что хочешь:"; 
    // Пишу Привет Мир!
    cin.getline(name, 100);
    for (int i = 0; i < sizeof(name); i++)
    {
        cout << name[i] << ' '; // Вместо р буква а, вместо других букв какие-то символы
    }
    cout << endl << endl;
 
    system("pause");
    return 0;
}
Объясните такому как я, что здесь происходит и как это исправить.
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
18.01.2016, 17:54
Ответы с готовыми решениями:

Если возвращается переменная ссылочного типа, то возвращается объект или просто ссылка
Почему-то авторы всегда акцентируют внимание на передачу параметров в функцию, а на возврат не...

Что возвращается?
Longs :: TInteger Longs :: TInteger :: operator -= (const ...

Что необходимо сделать, чтобы при массив можно было вводить в виде таблицы
а не как у меня-только в столбик

Массив не возвращается
Есть три файла: index.php &lt;?php //Front Controler //1. Общие настрйки. ...

8
473 / 425 / 290
Регистрация: 10.03.2015
Сообщений: 1,782
18.01.2016, 18:02 2
Касаемо твоего сообщения - с русскими буквами проблема.
Касаемо остальных символов - мусор, который ты не очистил.
Можешь объявить так: char name[100] = { "" }; и лишних символов не выведется, однако пробелы останутся, которые ты в цикле выводишь
0
Любитель чаепитий
3726 / 1786 / 561
Регистрация: 24.08.2014
Сообщений: 5,983
Записей в блоге: 1
18.01.2016, 18:02 3
gogaloh, Вот тут скорее всего ваше решение.
0
Хитрая блондиночка $)
1468 / 983 / 399
Регистрация: 21.12.2015
Сообщений: 3,785
18.01.2016, 18:04 4
Цитата Сообщение от gogaloh Посмотреть сообщение
Пишу Привет Мир!
Так может локаль российскую включить?
C++
1
setlocale(LC_ALL, "Russian");
0
Эксперт PHP
3101 / 2586 / 1219
Регистрация: 14.05.2014
Сообщений: 7,231
Записей в блоге: 1
18.01.2016, 18:05 5
Hikari, она включена
Цитата Сообщение от gogaloh Посмотреть сообщение
C++
1
setlocale(0, "");
0
473 / 425 / 290
Регистрация: 10.03.2015
Сообщений: 1,782
18.01.2016, 18:06 6
Hikari, Не поможет ему твоя локаль, после ввода все равно русские буквы в фигню преобразуются
0
76 / 57 / 19
Регистрация: 22.11.2015
Сообщений: 193
18.01.2016, 18:20 7
Попробуй так. Некоторые буквы все равно не кодируются. Все заглавные должны отображаться корректно. Остальные буквы смотри по литературам, или методом проб и ошибок.
C++
1
2
3
4
for (int i = 0; i < sizeof(name); i++)
    {
        cout << char (int(name[i] + 64)) << ' '; // Вместо р буква а, вместо других букв какие-то символы
    }
0
Хитрая блондиночка $)
1468 / 983 / 399
Регистрация: 21.12.2015
Сообщений: 3,785
18.01.2016, 18:42 8
Цитата Сообщение от SuperKir Посмотреть сообщение
после ввода все равно русские буквы в фигню преобразуются
Никогда не сталкивалась с такой проблемой, если локаль выставлена соответственно и виндовс с поддержкой кириллицы.
0
76 / 57 / 19
Регистрация: 22.11.2015
Сообщений: 193
18.01.2016, 20:26 9
Вот не поленился же я
Есть стандартная функция, о которой говорит makfak, но как ей воспользоваться так и не понял.
Вся фишка в том, что стандартный поток вывода работает как нужно, а вот ввод почему-то меняет числовое представление символьных констант.

Вот функция, которая корректирует числовое представление символов

Кликните здесь для просмотра всего текста

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
char rus(char& letter) {
 
    if (int(letter) < 0) {
        if (int(letter) == -16)
        {
            return char(int(letter) - 72);
        }
        else if (int(letter) == -15)
        {
            return char(int(letter) - 57);
        }
        else if (int(letter) <= -1 && int(letter) >= -32)
        {
            return char(int(letter) + 16);
        }
        else {
            return char(int(letter) + 64);
        }
    }
    return letter;
}


Написал для себя. Пользоваться ей или нет, дело Ваше. Протестировал в таком виде:

Кликните здесь для просмотра всего текста
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
#include <iostream>
using namespace std;
 
char rus(char& letter) {
 
    if (int(letter) < 0) {
        if (int(letter) == -16)
        {
            return char(int(letter) - 72);
        }
        else if (int(letter) == -15)
        {
            return char(int(letter) - 57);
        }
        else if (int(letter) <= -1 && int(letter) >= -32)
        {
            return char(int(letter) + 16);
        }
        else {
            return char(int(letter) + 64);
        }
    }
    return letter;
}
 
int main()
{   
    setlocale(0, "Russian");
    char letter;
    cout << "Введите символ или строку\n";
    while (cin >> letter)
    {
        cout << rus(letter);
    }   
    return 0;
}


Вводить можно как посимвольно, так и целой строкой без пробелов. Работает вроде корректно.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
18.01.2016, 20:26
Помогаю со студенческими работами здесь

Создать массив с нулями и единицами в шахматном порядке, что бы его размер можно было вводить с клавиатуры
Помогите пожалуйста создать массив с нулями и единицами в шахматном порядке, что бы его размер...

создать массив с нулями и единицами в шахматном порядке, что бы его размер можно было вводить с клавиатуры
Помогите пожалуйста

Массив не возвращается функцией
Есть такая проблема. Есть две функции. Одна возвращает массив. Массив заполняется верно. Вторая...

Не возвращается результат функции, что делать?
#include &lt;iostream&gt; #define N 10 using namespace std; int *SortedArray(int a) { int m;...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru