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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
ДурачОк
0 / 0 / 0
Регистрация: 18.09.2015
Сообщений: 10
#1

Элементарная программа не работает. Почему? - C++

18.09.2015, 12:27. Просмотров 339. Ответов 20
Метки нет (Все метки)

Несколько лет не юзал плюсы. Что-то изменилось или я что-то забыл? Почему работает не правильно?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <iostream>
#include <string.h>
 
using namespace std;
 
int main()
{
    setlocale (LC_ALL, "RUS");
    float sqare;
    int zp, price = 200;
    string fio;
    cout << "Введите ФИО:" << endl;
    cin >> fio;
    cout << "Введите площадь:" << endl;
    cin >> sqare;
    zp = sqare * 200;
    cout << fio << ":" << endl;
    cout << "Ваша зарплата составляет: " << zp << "руб. за " << sqare << "кв.м." << endl;
    return 0;
}
через char тоже пробовал, не пашет
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.09.2015, 12:27     Элементарная программа не работает. Почему?
Посмотрите здесь:

Элементарная программа на файлы - C++
Здравствуйте ув. форумчане. Нужно реализовать простенькую программу которая будет при запуске предлагать: 1)записать рандомную...

Почему не работает программа? - C++
//--------------------------------------------------------------------------- #include &lt;stdio.h&gt; #include &lt;conio.h&gt; #include &lt;vcl.h&gt; ...

Почему не работает программа? - C++
Пожалуйста, подскажите, почему программа при введении 1 или 2 ничего не выводит? #include &lt;iostream&gt; #include &lt;windows.h&gt; using...

Почему программа не работает? - C++
Здраствуйте, я решил изучить с++, делал все упражнения по бесплатным урокам Михаила Майорова, но как только я попробовал самостоятельно...

Почему не работает программа - C++
задача взята из учебника Дейтел Х. Как програмировать на С++ рис 6.1 вроде все набрал правильно но выдает ошибки вот код: #include...

Почему не работает программа? - C++
#include &lt;iostream&gt; #include &lt;cstdio&gt; #include &lt;string&gt; using namespace std; void sortGroup(string *surnames, string...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
MotionMaster
Заблокирован
18.09.2015, 12:33     Элементарная программа не работает. Почему? #2
Что именно работает не правильно?
zss
Модератор
Эксперт С++
6282 / 5885 / 1906
Регистрация: 18.12.2011
Сообщений: 15,099
Завершенные тесты: 1
18.09.2015, 12:50     Элементарная программа не работает. Почему? #3
C++
1
#include <string>
DrOffset
6917 / 4110 / 940
Регистрация: 30.01.2014
Сообщений: 6,905
18.09.2015, 12:51     Элементарная программа не работает. Почему? #4
Цитата Сообщение от ДурачОк Посмотреть сообщение
Что-то изменилось или я что-то забыл? Почему работает не правильно?
Может дело в том, что zp типа int и при присваивании sqare * 200, дробная часть отбрасывается?
Но это так было всегда.
ДурачОк
0 / 0 / 0
Регистрация: 18.09.2015
Сообщений: 10
18.09.2015, 12:54  [ТС]     Элементарная программа не работает. Почему? #5
MotionMaster, вместо введенных ФИО выводит иероглифы.
zss, не помогло
DrOffset, хорошее замечание. спасибо! но я говорил про другую проблему
Kerry_Jr
Модератор
Эксперт PHP
2165 / 1961 / 685
Регистрация: 14.05.2014
Сообщений: 5,738
Записей в блоге: 1
Завершенные тесты: 5
18.09.2015, 12:55     Элементарная программа не работает. Почему? #6
ДурачОк, кодировка
ДурачОк
0 / 0 / 0
Регистрация: 18.09.2015
Сообщений: 10
18.09.2015, 12:56  [ТС]     Элементарная программа не работает. Почему? #7
Kerry_Jr, а как изменить? от IDE зависит?
DrOffset
6917 / 4110 / 940
Регистрация: 30.01.2014
Сообщений: 6,905
18.09.2015, 12:57     Элементарная программа не работает. Почему? #8
Цитата Сообщение от ДурачОк Посмотреть сообщение
но я говорил про другую проблему
В том и дело, что не понятно про какую.
Если ошибка компиляции - то в студию ее.
Если ошибка в логике работы, то надо описать то поведение, которое является правильным с твоей точки зрения.
zss
Модератор
Эксперт С++
6282 / 5885 / 1906
Регистрация: 18.12.2011
Сообщений: 15,099
Завершенные тесты: 1
18.09.2015, 12:58     Элементарная программа не работает. Почему? #9
setlocale позволяет выводить в консоль символы в кодировке Windows.
Однако ввод остается старым (в кодировке 866).
C++
1
2
3
4
5
6
#include <windows.h>
...
    char fio[100];
    cout << "Введите ФИО:" << endl;
    cin >> fio;
    OemToChar(fio,fio);
ДурачОк
0 / 0 / 0
Регистрация: 18.09.2015
Сообщений: 10
18.09.2015, 12:58  [ТС]     Элементарная программа не работает. Почему? #10
DrOffset, вместо введенных ФИО выводит иероглифы
Kerry_Jr
Модератор
Эксперт PHP
2165 / 1961 / 685
Регистрация: 14.05.2014
Сообщений: 5,738
Записей в блоге: 1
Завершенные тесты: 5
18.09.2015, 12:59     Элементарная программа не работает. Почему? #11
ДурачОк, а все остальное, что кириллицей написано, нормально выводится?
DrOffset
6917 / 4110 / 940
Регистрация: 30.01.2014
Сообщений: 6,905
18.09.2015, 12:59     Элементарная программа не работает. Почему? #12
В порядке телепатии.
Цитата Сообщение от ДурачОк Посмотреть сообщение
cin >> fio;
C++
1
std::getline(std::cin, fio);
Если там ФИО, то по любому будут пробелы. А >> читает только до пробела.
ДурачОк
0 / 0 / 0
Регистрация: 18.09.2015
Сообщений: 10
18.09.2015, 13:01  [ТС]     Элементарная программа не работает. Почему? #13
zss, иероглифы изменились на символы и английские буквы
Kerry_Jr
Модератор
Эксперт PHP
2165 / 1961 / 685
Регистрация: 14.05.2014
Сообщений: 5,738
Записей в блоге: 1
Завершенные тесты: 5
18.09.2015, 13:01     Элементарная программа не работает. Почему? #14
Цитата Сообщение от ДурачОк Посмотреть сообщение
иероглифы изменились на символы и английские буквы
у Вас кодировка в консоли какая? UTF-8?
ДурачОк
0 / 0 / 0
Регистрация: 18.09.2015
Сообщений: 10
18.09.2015, 13:06  [ТС]     Элементарная программа не работает. Почему? #15
DrOffset, иероглифы

Добавлено через 3 минуты
Kerry_Jr, Kerry_Jr, windows-1251
DrOffset
6917 / 4110 / 940
Регистрация: 30.01.2014
Сообщений: 6,905
18.09.2015, 13:08     Элементарная программа не работает. Почему? #16
Цитата Сообщение от ДурачОк Посмотреть сообщение
иероглифы
Я это писал когда еще не видел твое сообщение про иероглифы.
Это разные проблемы. Твоя проблема не связана напрямую с С++, это особенность виндовой консоли, которая работает в кодировке DOS 866 на русской винде. Забороть это можно разными способами, но простые способы зависят от используемой среды.
Код пишем в VS?
ДурачОк
0 / 0 / 0
Регистрация: 18.09.2015
Сообщений: 10
18.09.2015, 13:27  [ТС]     Элементарная программа не работает. Почему? #17
DrOffset, codeblock

Добавлено через 7 минут
Kerry_Jr, скажите какую поставить кодировку. я нашёл где менять

Добавлено через 2 минуты
Kerry_Jr,

Не по теме:

пол жизни прожил в Сочи. Как он там после моего уезда? Не раздраконили?



Добавлено через 1 минуту

Не по теме:

ошибка не в коде и желающих помочь стало меньше

zss
Модератор
Эксперт С++
6282 / 5885 / 1906
Регистрация: 18.12.2011
Сообщений: 15,099
Завершенные тесты: 1
18.09.2015, 13:29     Элементарная программа не работает. Почему? #18
Попробуйте поменять OemToChar(fio,fio);
На
C++
1
CharToOem(fio,fio);
DrOffset
6917 / 4110 / 940
Регистрация: 30.01.2014
Сообщений: 6,905
18.09.2015, 13:32     Элементарная программа не работает. Почему? #19
Цитата Сообщение от ДурачОк Посмотреть сообщение
codeblock
Простой способ, но не самый хороший, состоит в том, чтобы преобразовать кодировку из 866 в текущую системную.
Для этого есть функция OemToChar
Можно сделать как-то так:
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
#include <iostream>
#include <string>
#include <vector>
#include <windows.h>
 
using namespace std;
 
std::string conv(std::string const & x)
{
    if(size_t len = x.size())
    {
        std::vector<char> buf(len + 1);
        OemToChar(x.c_str(), &buf[0]);
        return std::string(buf.begin(), buf.end());
    }
    return x;
}
 
int main()
{
    setlocale(LC_ALL, "RUS");
 
    float sqare;
    float zp, price = 200;
    string fio;
    cout << "Введите ФИО:" << endl;
    getline(cin, fio);
    cout << "Введите площадь:" << endl;
    cin >> sqare;
    zp = sqare * 200;
 
    cout << conv(fio) << ":" << endl;
    cout << "Ваша зарплата составляет: " << zp << "руб. за " << sqare << "кв.м." << endl;
    return 0;
}
Добавлено через 1 минуту

Не по теме:

Цитата Сообщение от ДурачОк Посмотреть сообщение
ошибка не в коде и желающих помочь стало меньше
Слишком быстро хотите результата. Нужно быть терпеливее.

MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.09.2015, 13:34     Элементарная программа не работает. Почему?
Еще ссылки по теме:

Почему программа Работает? - C++
Объясните пожалуйста, как это может работать? Определять переменную вроде можно только один раз. А тут цикл каждый раз проверяет условие, и...

Почему не работает программа? - C++
что нужно изменить??? #include &lt;iostream&gt; using namespace std; class s { private: char str; //строка, которая вместит...

Почему программа неправильно работает - C++
string IntToStr(int a) { if (a == 0) return &quot;0&quot;; string str = &quot;&quot;; int b = a; if (a &lt; 0) a *= -1; while (a &gt; 0) str =...

Почему не работает консольная программа. - C++
Я написал простенькую консольную программку выдающую таблицу умножения. Но у моих друзей почему-то не открывается exe файл.Что я...


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

Или воспользуйтесь поиском по форуму:
ДурачОк
0 / 0 / 0
Регистрация: 18.09.2015
Сообщений: 10
18.09.2015, 13:34  [ТС]     Элементарная программа не работает. Почему? #20
DrOffset, и мне потом к каждой программе этот вагон цеплять? должно быть общее решение. Попробую погуглить, вам спасибо. и вам zss, и вам Kerry_Jr, и вам за участие MotionMaster,
Если вдруг будет решение - отпишитесь пжл тут. Я поставлю уведомление на почту
Yandex
Объявления
18.09.2015, 13:34     Элементарная программа не работает. Почему?
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru