Модераторы: bsa
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Неправильное отображение символов 
:(
    Опции темы
Hetls
Дата 18.3.2017, 20:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 48
Регистрация: 18.10.2016
Где: Русь Матушка! !!

Репутация: нет
Всего: нет



При компиляции, программа выводит неправильные символы - http://hdd.tomsk.ru/gallery/iewmkjul#eakjilht  (хотя программа должна выводить вот эти символы http://hdd.tomsk.ru/gallery/iewmkjul#dllcscrm ). В чём собственно заключаться ошибка и как её исправить? (ошибка появилась после того, как я добавил в исходный код - справку).

Код

#include <iostream>
#include <windows.h>
#include <conio.h>

using namespace std;

int n;

void gameOverManagement()
{
cout << "\n\n\n\n\n\n\n\n\n\n\n\n\t\t\t\t     Game Over!\n\n\n\n\n\n\n\n\n\n\n";
system("pause");
Sleep(1000);
exit(0);
} void gameVictoryManagement()
{
system("cls");
cout << "\n\n\n\n\n\n\n\n\n\n\n\n\t\t\t\t     Victory!\n\n\n\n\n\n\n\n\n\n\n";
system("pause");
} int dataManagement(int management, int stopGame)
{
if(management == 1)
{
  gameOverManagement();
  stopGame = 1;
}
if(management == 3)
{
  gameVictoryManagement();
  stopGame = 1;
}
management = 2;

return management,stopGame;
}
int main()
{
    setlocale(0, "");
    int l=2;
    
    cout << "Если вы хотите получить справку о работе программы введите 1, а если нет то - 2" << endl;
    cin >> l;
    if (l==1)
    {
        cout << "\n Данная игра - Лабиринт, была написана исключительно на языке C++" << endl;
}
    cout<<"\n Для выполнения программы нажмите - 1, а для её завершения нажмите - 2"<<endl;
    cin>>n;
    cout<<"------------------------------------------------------------------------------\n";
 
    if(n==1){
     
  int mas[24][24] = {   {1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,},
                        {1,0,1,0,0,1,0,1,0,0,0,1,1,1,1,0,0,0,0,1,},
                        {1,0,1,1,0,1,0,1,0,1,0,0,0,0,1,0,1,1,0,1,},
                        {1,0,0,0,0,0,0,1,0,1,1,1,1,0,1,0,0,1,0,1,},
                        {1,1,1,1,1,1,0,1,0,1,0,0,1,0,1,1,0,1,0,1,},
                        {1,0,0,1,0,0,0,0,0,1,1,0,0,0,0,0,0,1,0,1,},
                        {1,0,1,1,0,1,1,1,1,1,0,0,1,0,1,1,1,1,0,1,},
                        {1,0,0,0,0,0,0,0,0,1,1,1,1,0,1,0,0,0,0,1,},
                        {1,1,1,1,1,1,0,1,1,1,0,0,0,0,1,0,1,1,1,1,},
                        {1,1,0,0,0,1,0,0,1,1,0,1,1,1,1,0,0,0,0,1,},
                        {1,0,0,1,0,0,0,0,0,1,0,0,0,0,1,1,1,1,0,1,},
                        {1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,0,0,0,0,1,},
                        {1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,1,1,1,1,},
                        {1,0,1,1,0,1,1,1,1,1,1,1,1,1,1,0,0,0,0,1,},
                        {1,0,1,0,0,0,1,0,0,0,1,0,0,0,0,0,1,1,0,1,},
                        {1,0,1,1,1,1,1,0,1,0,1,1,1,0,1,0,0,0,0,1,},
                        {1,0,1,0,0,0,1,0,1,0,0,0,1,1,1,1,1,1,1,1,},
                        {1,0,1,0,1,0,1,0,1,0,1,0,0,0,0,0,0,0,0,1,},
                        {1,0,1,0,1,0,1,0,1,0,1,1,1,1,1,1,1,1,0,1,},
                        {1,0,1,0,1,0,1,0,1,0,0,0,0,0,0,0,0,0,0,1,},
                        {1,0,1,0,1,0,0,0,1,0,1,1,1,1,1,1,0,1,0,1,},
                        {1,0,1,0,1,1,1,1,1,0,0,0,1,0,1,0,0,1,0,1,},
                        {1,0,1,0,0,0,0,0,1,1,1,0,0,0,1,0,1,1,0,1,},
                        {1,3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,} };
unsigned short keysArrow; int s1 = 0;
int s2 = 1;
int stopGame(0);
mas[s1][s2] = 2; do
{
  system("cls");
  for (int i = 0; i < 24; i++) //переключение по строкам
  {
   for (int j = 0; j < 20; j++)// переключение по столбцам
   {
    if (mas[i][j] == 1)
    {
     // вывести два раза символ (номер которого 176 в таблице аски) в консоль
     cout << static_cast<char>(176);
     cout << static_cast<char>(176);
    }
    if (mas[i][j] == 0 || mas[i][j] == 3)
    {
      cout << "  ";
    }
    if (mas[i][j] == 2)
    {
      cout << static_cast<char>(182);
      cout << static_cast<char>(182);
    }
   }
   cout << endl;
  }
  keysArrow = getch();
  keysArrow = getch();   if(keysArrow == 0)
  keysArrow = getch();
  if(keysArrow == 72 || keysArrow == 150 || keysArrow == 230)
  {
   // Вверх
   mas[s1][s2] = 1;
   s1--;
   dataManagement(mas[s1][s2],stopGame);
   mas[s1][s2] = 2;
  }
  if(keysArrow == 80 || keysArrow == 155 || keysArrow == 235)
  {
   // Вниз
   mas[s1][s2] = 1;
   s1++;
   dataManagement(mas[s1][s2],stopGame);
   mas[s1][s2] = 2;
  }
  if(keysArrow == 77 || keysArrow == 130 || keysArrow == 262)
  {
   // Вправо
   mas[s1][s2] = 1;
   s2++;
   dataManagement(mas[s1][s2],stopGame);
   mas[s1][s2] = 2;
  }
  if(keysArrow == 75 || keysArrow == 148 || keysArrow == 235)
  {
   // Влево
   mas[s1][s2] = 1;
   s2--;
   dataManagement(mas[s1][s2],stopGame);
   mas[s1][s2] = 2;
  }
}while(true);
getch();
return 0;
}

    else if(n==2){
     cout<<"\n Программа была завершена"<<endl;
    }

}


Это сообщение отредактировал(а) Hetls - 18.3.2017, 20:05
PM MAIL WWW IM Skype GTalk Jabber AOL YIM MSN   Вверх
Hetls
Дата 19.3.2017, 08:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 48
Регистрация: 18.10.2016
Где: Русь Матушка! !!

Репутация: нет
Всего: нет



Больше 100+ просмотров, а никто не в состояние помочь!? Хотя бы напишите в чём может заключаться ошибка...
PM MAIL WWW IM Skype GTalk Jabber AOL YIM MSN   Вверх
volatile
Дата 19.3.2017, 10:17 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2107
Регистрация: 7.1.2011

Репутация: 16
Всего: 85



Проблема в этом:
Цитата(Hetls @  18.3.2017,  20:02 Найти цитируемый пост)
setlocale(0, "");

Оно переключает вашу консоль на таблицы символов cp1251
а в этой таблице нет того символа который вам нужен
Но если вы уберете эту команду, то ваша помощь на русском будет выдаваться крякозябрами.

Возожные выходы из ситуации:
  • Перевести помощь в исходниках в таблицу cp866
  • Перейти на использование юникода.

Добавлено через 3 минуты и 24 секунды
Ну или перекодировать вывод помощи в рантайме в cp866, см. что-то типа CharToOem()

PM MAIL   Вверх
Hetls
Дата 19.3.2017, 17:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 48
Регистрация: 18.10.2016
Где: Русь Матушка! !!

Репутация: нет
Всего: нет



Цитата(volatile @ 19.3.2017,  10:17)
Проблема в этом:
Цитата(Hetls @  18.3.2017,  20:02 Найти цитируемый пост)
setlocale(0, "");

Оно переключает вашу консоль на таблицы символов cp1251
а в этой таблице нет того символа который вам нужен
Но если вы уберете эту команду, то ваша помощь на русском будет выдаваться крякозябрами.

Возожные выходы из ситуации:

  • Перевести помощь в исходниках в таблицу cp866
  • Перейти на использование юникода.

Добавлено @ 10:21
Ну или перекодировать вывод помощи в рантайме в cp866, см. что-то типа CharToOem()

Большое спасибо за советы, но я решил проблему иначе - заменил все русские буквы на транскрипт.
PM MAIL WWW IM Skype GTalk Jabber AOL YIM MSN   Вверх
xvr
Дата 20.3.2017, 14:30 (ссылка)  | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

Репутация: 35
Всего: 223



Цитата(Hetls @  19.3.2017,  17:02 Найти цитируемый пост)
Большое спасибо за советы, но я решил проблему иначе - заменил все русские буквы на транскрипт. 

Вам пользователя вышей программы не жалко? Мне например жалко  smile 
PM MAIL   Вверх
Hetls
Дата 26.3.2017, 10:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 48
Регистрация: 18.10.2016
Где: Русь Матушка! !!

Репутация: нет
Всего: нет



Цитата(xvr @ 20.3.2017,  14:30)
Цитата(Hetls @  19.3.2017,  17:02 Найти цитируемый пост)
Большое спасибо за советы, но я решил проблему иначе - заменил все русские буквы на транскрипт. 

Вам пользователя вышей программы не жалко? Мне например жалко  smile

Единственный пользователь это я!)

Это сообщение отредактировал(а) Hetls - 26.3.2017, 10:29
PM MAIL WWW IM Skype GTalk Jabber AOL YIM MSN   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0778 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.