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

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

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

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

14.08.2011, 16:33. Просмотров 1147. Ответов 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". Ничего не пойму;
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.08.2011, 16:33     Помогите разобраться с switch
Посмотрите здесь:

Помогите пожалуйста разобраться с 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++
Код - проверка ввода данных. Если вводиться &quot;x6x&quot;, то вызывается исключение, правильным вводом являются только символы, например: &quot;xxx&quot;,...

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

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

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

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

Добавлено через 1 минуту
Цитата Сообщение от villu Посмотреть сообщение
тогда давай сюда этот файл.
А как его дать?
villu
202 / 202 / 4
Регистрация: 06.08.2011
Сообщений: 600
Записей в блоге: 1
14.08.2011, 16:44     Помогите разобраться с switch #8
кнопка "ответить" -> внизу "Вложить файлы"
Сыроежка
Заблокирован
14.08.2011, 16:45     Помогите разобраться с switch #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.
adamo86
2 / 2 / 0
Регистрация: 10.04.2011
Сообщений: 185
14.08.2011, 16:47  [ТС]     Помогите разобраться с switch #10
Цитата Сообщение от villu Посмотреть сообщение
кнопка "ответить" -> внизу "Вложить файлы"
Вот файл input.txt
Вложения
Тип файла: txt input.txt (5 байт, 18 просмотров)
adamo86
2 / 2 / 0
Регистрация: 10.04.2011
Сообщений: 185
14.08.2011, 16:52  [ТС]     Помогите разобраться с switch #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".
Ree.exe
56 / 56 / 4
Регистрация: 01.08.2011
Сообщений: 141
14.08.2011, 16:54     Помогите разобраться с switch #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 в консоль.
silentnuke
Android Programmer
138 / 139 / 5
Регистрация: 08.12.2010
Сообщений: 421
14.08.2011, 16:58     Помогите разобраться с switch #13
хм, даже с вашим файлом все нормально выводит, вы уверены что файл лежит рядом с исполняемым файлом?
adamo86
2 / 2 / 0
Регистрация: 10.04.2011
Сообщений: 185
14.08.2011, 17:01  [ТС]     Помогите разобраться с switch #14
Цитата Сообщение от silentnuke Посмотреть сообщение
хм, даже с вашим файлом все нормально выводит, вы уверены что файл лежит рядом с исполняемым файлом?
Да конечно лежит. Ведь cout << a_n[0]; выводит "C"
Сыроежка
Заблокирован
14.08.2011, 17:08     Помогите разобраться с switch #15
Цитата Сообщение от adamo86 Посмотреть сообщение
Да конечно лежит. Ведь cout << a_n[0]; выводит "C"
Дело в тогм, что у вас нет проверки того, успешно ли файл открылся, или нет. Я думаю, проблема в том, что у вас файл на самом деле не отткрывается, и в первом элементе массива у вас находится "мусор".

Поэтому сделайте проверку на то, что файл открылся успешно.
adamo86
2 / 2 / 0
Регистрация: 10.04.2011
Сообщений: 185
14.08.2011, 17:12  [ТС]     Помогите разобраться с switch #16
Цитата Сообщение от Сыроежка Посмотреть сообщение
Дело в тогм, что у вас нет проверки того, успешно ли файл открылся, или нет. Я думаю, проблема в том, что у вас файл на самом деле не отткрывается, и в первом элементе массива у вас находится "мусор".

Поэтому сделайте проверку на то, что файл открылся успешно.
А как сделать эту проверку?

Добавлено через 2 минуты
Попробую сейчас комп перезагрузить...
Ree.exe
56 / 56 / 4
Регистрация: 01.08.2011
Сообщений: 141
14.08.2011, 17:13     Помогите разобраться с switch #17
C++
1
2
3
4
if(file)
        cout<<"Открыт";
    else
        cout<<"Не открыт";
Сыроежка
Заблокирован
14.08.2011, 17:15     Помогите разобраться с switch #18
Цитата Сообщение от adamo86 Посмотреть сообщение
А как сделать эту проверку?

Добавлено через 2 минуты
Попробую сейчас комп перезагрузить...
C++
1
if ( !input ) return ( 1 );
adamo86
2 / 2 / 0
Регистрация: 10.04.2011
Сообщений: 185
14.08.2011, 17:25  [ТС]     Помогите разобраться с switch #19
Ребят!!! Заработало.
После перезагрузки заработало. По моему я нашел ошибку:
Я ведь после открытия файла "input.txt" его и не закрывал (input.close(). Наверное из-за этого там какой-то мусор может накопился. Это лишний раз доказывает, что в C++ надо быть осторожно с памятью.
Всеv спасибо за оказанную поддержку.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.08.2011, 18:52     Помогите разобраться с switch
Еще ссылки по теме:

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

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

reinterpret_cast помогите разобраться - C++
#include &lt;iostream&gt; #include &lt;conio.h&gt; using namespace std; int schet_not_null(int *matrix, int i_matrix, int j_matrix, int...

Помогите разобраться с итераторами - C++
У меня есть шаблон класса контейнер. Я использую vector из stl. Так вот мне нужен итератор для поиска find ( first, last, value ) но...

Помогите разобраться с задачей.... - C++
Дорогие программисты прошу вас помочь в следующем вопросе: мне нужно открыть в С++ файл формата BMP и получить значение его пикселей в виде...


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

Или воспользуйтесь поиском по форуму:
silentnuke
Android Programmer
138 / 139 / 5
Регистрация: 08.12.2010
Сообщений: 421
14.08.2011, 18:52     Помогите разобраться с switch #20
Цитата Сообщение от Сыроежка Посмотреть сообщение
Дело в тогм, что у вас нет проверки того, успешно ли файл открылся, или нет. Я думаю, проблема в том, что у вас файл на самом деле не отткрывается, и в первом элементе массива у вас находится "мусор".

Поэтому сделайте проверку на то, что файл открылся успешно.
если у него из файл счисталось, и cout вывел то что надо, как файл мог быть не открыт, оО?
Yandex
Объявления
14.08.2011, 18:52     Помогите разобраться с switch
Ответ Создать тему
Опции темы

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