Неверная кодировка текста - C (СИ)
Формулировка задачи:
Уверен, что эта тему уже поднималась ранее.
Собственно переписываю прогу с С++ на Си, и тут столкнулся с абракадаброй в сообщениях пользователю. В С++ обходил
В Си не проканало естественно. Думал управится с
но компилятор в шоке и начинает ругаться.
Как я понял он видит в Она же выполнена в С++, только еще и зациклена с помощью while и выходом из него.
Надеюсь на вашу критику по поводу оформления программ и поста.
З.Ы. Юзал поиск по названию своей темы, но увы...
setlocale (LC_ALL, "Rissian_Russia.1251");
using std::setlocale (LC_ALL, "Rissian_Russia.1251");
setlocale
функцию и ожидает, что с ним работает опытный юзер и щас все исправит, но поскольку сам таким не являюсь прошу помощи у вас: 1. Откуда появилась setlocale и с чем можно его использовать еще. 2. Можно ли попробовать запустить setlocale через пространство имен? 3. Какая есть альтернатива в Си этой setlocale. (включение русского шрифта) Сама программа. Вот только без понятия: рабочая она или нет, т.к. застрял на абракадабре.#include <stdio.h> #include <conio.h> #include <math.h> int main () { using std::setlocale (LC_ALL, "Rissian_Russia.1251"); int upr; // переменный для управления switch double aT,bT,cT,sT, pT,ppT; // для расчетов с треугольником printf("\nВведите соответствующие условное обозначение "); printf("\nдля перехода к нужным Вам вычислениям "); printf( "\n\n 1 - треугольник\t 2 - прямоугольник\n"); printf(" 3 - круг\t \t4 - трапеция\n\n "); printf ("Для выхода из программы введите -1 \n "); scanf ("%f",&upr); switch (upr) { case 1: { printf("Вы выбрали функцию расчета площади треугольника!\n"); printf("Введите 3 стороны треугольника:"); printf ("\n a:"); scanf ("%f",&aT); printf("\nb: "); scanf ("%f",&bT); printf ("\nc: "); scanf ("%f",&cT); pT=aT+bT+cT; ppT=pT/2; sT=sqrt(ppT*(ppT-aT)*(ppT-bT)*(ppT-cT)); printf ("Периметр равен: %.2\n",pT) ; printf ("Площадь треугольника: %.2\n",sT); break; } case 2: { printf ("Вы выбрали функцию расчета площади прямоугольника!\n "); printf("Введи значение сторон a , b\n"); double aP,bP; scanf ("%f",&aP); scanf ("%f",&bP); double SP=aP*bP; printf("Площадь прямоугольника: %.2\n",SP); } break; case 3: { printf(" Вы выбрали функцию для расчета площади круга!"); printf ("Введите значение радиуса: "); double R, SO; scanf ("%f",&R); SO=3.14*pow(R,2); printf ("Площадь круга: %.4\n",SO); } break; case 4: { double aU,bU,hU, SU; printf("Вы выбрали функцию расчета площади трапеции!\n"); printf("Введите значение сторон a , b и высота h соответственно: "); scanf ("%f",&aU); scanf ("%f",&bU); scanf ("%f",&hU); SU=((aU+bU)/2)*hU; printf(" Площадь трапеции: %.4\n ",SU); break; } default: printf("Вы ввели неверное значение\n\n"); } // закрытие тела switch return 0; } // закрытие главной функции
// .С++ #include <iostream.h> #include <math.h> int main () {setlocale (LC_ALL, "Russian_Russia.1251"); int upr; // переменный для управления switch double aT,bT,cT,sT, pT,ppT; // для расчетов с треугольником while (true) { cout<< ("\nВведите соответствующие условное обозначение ") << ("\nдля перехода к нужным Вам вычислениям ") <<( "\n\n 1 - треугольник\t 2 - прямоугольник\n") <<(" 3 - круг\t \t4 - трапеция\n\n ") << "Для выхода из программы введите -1 "<<endl; cin>> upr; if(upr != -1) { switch (upr) { case 1: { cout<<("Вы выбрали функцию расчета площади треугольника!\n") <<("Введите 3 стороны треугольника:") << "\n a:"; cin>> aT; cout <<("\nb: "); cin>> bT; cout<< "\nc: "; cin>> cT; pT=aT+bT+cT; ppT=pT/2; sT=sqrt(ppT*(ppT-aT)*(ppT-bT)*(ppT-cT)); cout<< ("Периметр равен: ")<< pT << (" Площадь треугольника: ")<< sT<< endl; break; } case 2: { cout<< "Вы выбрали функцию расчета площади прямоугольника! " << "Введи значение сторон a , b"<<endl; double aP,bP; cin>>aP>>bP; double SP=aP*bP; cout<< "Площадь прямоугольника: "<< SP<< endl; } break; case 3: { cout<< " Вы выбрали функцию для расчета площади круга!" <<"Введите значение радиуса: "; double R, SO; cin>>R; SO=3.14*pow(R,2); cout<< "Площадь круга: "<< SO<<endl; } break; case 4: { double aU,bU,hU,SU; cout<< "Вы выбрали функцию расчета площади трапеции!"<<endl << "Введите значение сторон a , b и высота h соответственно: "; cin>> aU >>bU >> hU; SU=((aU+bU)/2)*hU; cout<< " Площадь трапеции: "<< SU<< endl; break; } default: cout<< "Вы ввели неверное значение\n"<< endl; } // закрытие тела switch } // закрытие оператора if при положительных результатах else { // Открыт else cout<<" Программа завершена."<<endl; break; } // закрыите значение else } // закрытие цикла WHILE return 0; } // закрытие главной функции
Решение задачи: «Неверная кодировка текста»
textual
Листинг программы
#include <locale.h> int main(){ setlocale(LC_ALL, "rus"); ..... }
Объяснение кода листинга программы
- #include
Включает в программу библиотеку, которая содержит функции для работы с локалью. - int main(){ Функция main() является точкой входа в программу.
- setlocale(LC_ALL,
rus
); Устанавливает локаль для работы с русским языком. - ..... Замените многоточие на код, который Вы не предоставили.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д