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

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

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 4.89
adamo86
2 / 2 / 0
Регистрация: 10.04.2011
Сообщений: 185
#1

Помогите разобраться с switch - C++

14.08.2011, 16:33. Просмотров 1183. Ответов 21
Метки нет (Все метки)

Вот код программы:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
    int i_1x;
    i_1x = 0;
    char a_n[10];
 
    ifstream input("input.txt");
    input >> a_n;
 
    switch (a_n[0])
    {
    case 'C': 
        i_1x = 3; 
        break;
    default:  
        cout << "ERROR"; 
    }
Программа выводит "ERROR".
В читаемом файле "input.txt" находится символ 'C', но программа все равно выводит "ERROR". Ничего не пойму;
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.08.2011, 16:33
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Помогите разобраться с switch (C++):

Помогите пожалуйста разобраться с Switch case - C++
Сразу предупрежу ,что я полный ламер) Мне нужно выполнить лабораторку с использованием конструкции switch-case. Вот ее условие: ...

не могу разобраться со switch. - C++
мне надо переделать программу через switch, но у меня вылазит ряд ошибок, разобраться с ними не получается, так как не знаю как их...

If else помогите разобраться - C++
Доброго времени суток всем. Не так давно начали программировать в C++ MS Visual Studio 2010? и возникло у меня затруднение в работе с if ...

Помогите разобраться - C++
У меня есть координаты North,West,East,South. Мне нужно отобразить их на осях ОХ и ОУ. Допустим я ввожу North 5 East 3 South 1 ...

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

Помогите разобраться с классами в C++ - C++
Есть задание по ООП С++ Используя классы создать кольцо.Записи кольца включают в себя указатели на очередь, содержащую указатели на на...

21
villu
203 / 204 / 4
Регистрация: 06.08.2011
Сообщений: 600
Записей в блоге: 1
14.08.2011, 16:35 #2
В читаемом файле "input.txt" находится символ 'C
а что в a_n? файл не юникодный?
1
Kastaneda
Нарушитель
Эксперт С++
4667 / 2873 / 232
Регистрация: 12.12.2009
Сообщений: 7,305
Записей в блоге: 2
Завершенные тесты: 1
14.08.2011, 16:36 #3
перед switch добавь строку:
C++
1
std::cout<<a_n<<std::endl;
посмотри, что реально читается.
1
adamo86
2 / 2 / 0
Регистрация: 10.04.2011
Сообщений: 185
14.08.2011, 16:40  [ТС] #4
Цитата Сообщение от Kastaneda Посмотреть сообщение
перед switch добавь строку:
C++
1
std::cout<<a_n<<std::endl;
посмотри, что реально читается.
Смотрел, выводит символ 'C' без всяких сюрпризов.

Добавлено через 25 секунд
Цитата Сообщение от villu Посмотреть сообщение
а что в a_n? файл не юникодный?
А как это проверить?
0
Ree.exe
56 / 56 / 4
Регистрация: 01.08.2011
Сообщений: 141
14.08.2011, 16:40 #5
всё работает!!!а ты создал файл input.txt?
1
villu
203 / 204 / 4
Регистрация: 06.08.2011
Сообщений: 600
Записей в блоге: 1
14.08.2011, 16:40 #6
тогда давай сюда этот файл.
1
adamo86
2 / 2 / 0
Регистрация: 10.04.2011
Сообщений: 185
14.08.2011, 16:42  [ТС] #7
Цитата Сообщение от Ree.exe Посмотреть сообщение
всё работает?а ты создал файл input.txt?
Да. Он этот символ читает.

Добавлено через 1 минуту
Цитата Сообщение от villu Посмотреть сообщение
тогда давай сюда этот файл.
А как его дать?
0
villu
203 / 204 / 4
Регистрация: 06.08.2011
Сообщений: 600
Записей в блоге: 1
14.08.2011, 16:44 #8
кнопка "ответить" -> внизу "Вложить файлы"
1
Сыроежка
Заблокирован
14.08.2011, 16:45 #9
Цитата Сообщение от adamo86 Посмотреть сообщение
Вот код программы:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
    int i_1x;
    i_1x = 0;
    char a_n[10];
 
    ifstream input("input.txt");
    input >> a_n;
 
    switch (a_n[0])
    {
    case 'C': 
        i_1x = 3; 
        break;
    default:  
        cout << "ERROR"; 
    }
Программа выводит "ERROR".
В читаемом файле "input.txt" находится символ 'C', но программа все равно выводит "ERROR". Ничего не пойму;
'Cэ может быть и русской буквлй 'C', и латинской буквой 'C'. Поэтому для проверки распечатайте ее hex код с помощью манипулятора потока std::hex.
1
adamo86
2 / 2 / 0
Регистрация: 10.04.2011
Сообщений: 185
14.08.2011, 16:47  [ТС] #10
Цитата Сообщение от villu Посмотреть сообщение
кнопка "ответить" -> внизу "Вложить файлы"
Вот файл input.txt
0
Вложения
Тип файла: txt input.txt (5 байт, 18 просмотров)
adamo86
2 / 2 / 0
Регистрация: 10.04.2011
Сообщений: 185
14.08.2011, 16:52  [ТС] #11
Цитата Сообщение от Сыроежка Посмотреть сообщение
'Cэ может быть и русской буквлй 'C', и латинской буквой 'C'. Поэтому для проверки распечатайте ее hex код с помощью манипулятора потока std::hex.
Я как-то не знаком с этим - "hex". Что именно надо сделать?

Добавлено через 2 минуты
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
    int i_1x;
    i_1x = 0;
    char a_n[10];
 
    ifstream input("input.txt");
    input >> a_n;
 
    switch (a_n[0])
    {
 
    case 'C': 
        i_1x = 3; 
        break;
 
    default:  
        cout << "ERROR"; 
        b_b = false; break;
    }
    cout << i_1x;
Сейчас ERROR не выводит, но и переменной i_1x не приравнивает 3. Программа выводит "0".
0
Ree.exe
56 / 56 / 4
Регистрация: 01.08.2011
Сообщений: 141
14.08.2011, 16:54 #12
Ну незнаю, у меня всё отлично работает.
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
#include <iostream>
#include<fstream>
 
using namespace std;
int main()
{
    int i_1x;
    char a_n[10];
 
    ofstream file_("input.txt");
    file_<<"C7-D5";
    file_.close();
    ifstream file("input.txt",0x20);
    file>>a_n;
 
    switch (a_n[0])
    {
    case 'C': 
            i_1x = 3; 
            break;
    default:  
            cout << "ERROR"; 
    }
    cout<<i_1x;
    file.close();
}
В итоге выводит 3 в консоль.
1
silentnuke
Android Programmer
139 / 140 / 5
Регистрация: 08.12.2010
Сообщений: 421
14.08.2011, 16:58 #13
хм, даже с вашим файлом все нормально выводит, вы уверены что файл лежит рядом с исполняемым файлом?
1
adamo86
2 / 2 / 0
Регистрация: 10.04.2011
Сообщений: 185
14.08.2011, 17:01  [ТС] #14
Цитата Сообщение от silentnuke Посмотреть сообщение
хм, даже с вашим файлом все нормально выводит, вы уверены что файл лежит рядом с исполняемым файлом?
Да конечно лежит. Ведь cout << a_n[0]; выводит "C"
0
Сыроежка
Заблокирован
14.08.2011, 17:08 #15
Цитата Сообщение от adamo86 Посмотреть сообщение
Да конечно лежит. Ведь cout << a_n[0]; выводит "C"
Дело в тогм, что у вас нет проверки того, успешно ли файл открылся, или нет. Я думаю, проблема в том, что у вас файл на самом деле не отткрывается, и в первом элементе массива у вас находится "мусор".

Поэтому сделайте проверку на то, что файл открылся успешно.
1
14.08.2011, 17:08
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.08.2011, 17:08
Привет! Вот еще темы с ответами:

помогите разобраться с gcc - C++
начал изучать c++. не могу скомпилировать первую программу. Вот что я делал. 1.запускаю файл gcc.exe. Создаю папку с адресом C:\gcc. В...

ПОМОГИТЕ РАЗОБРАТЬСЯ В КОДЕ - C++
#include &lt;time.h&gt; #include &lt;conio.h&gt; #include &lt;iostream&gt; #include &lt;assert.h&gt; #include &lt;string.h&gt; #include &lt;stdlib.h&gt; using...

Помогите разобраться в Наследование - C++
#include&lt;iostream&gt; using namespace std; class Counter1 { protected: int count; public: Counter1():count(0) { }

Помогите новичку разобраться с С++ - C++
Доброго всем времени суток! Пытаюсь изучать С++ и у меня такие вопросы(накопились из разных тем): 1.Когда надо в конце типу float...


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

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

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