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

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

Войти
Регистрация
Восстановить пароль
 
UnrealFire
0 / 0 / 0
Регистрация: 03.03.2013
Сообщений: 36
#1

Switch. Почему не работает? VC++ Studio 2010 - C++

17.10.2013, 11:11. Просмотров 338. Ответов 9
Метки нет (Все метки)

Помогите плз.
Есть форма Spells.h. Вот код
C++
1
2
3
4
5
6
7
8
9
10
private: System::Void l1_Click(System::Object^  sender, System::EventArgs^  e) 
         {
             Card^ Rf = gcnew Card('l1');
             Rf->ShowDialog();
         }
private: System::Void l2_Click(System::Object^  sender, System::EventArgs^  e) 
         {
             Card^ Rf = gcnew Card('l2');
             Rf->ShowDialog();
         }
В форме Card.h
C++
1
2
3
4
5
6
7
8
9
Card(char varform)
        {
            InitializeComponent();
            //
            //TODO: добавьте код конструктора
            //
            varform = var;
        }
                char var;
C++
1
2
3
4
5
6
7
8
9
10
11
12
private: System::Void Card_Load(System::Object^  sender, System::EventArgs^  e) 
             {
                 switch (var)
                 {
                 case 'l1':
                     this->CardBoxEng->Image = Image::FromFile("Cards\\BasicSet\\Spells\\Light\\Heal.png");
                     break;
                 case 'l2':
                     this->CardBoxEng->Image = Image::FromFile("Cards\\BasicSet\\Spells\\Light\\Cleansing-Light.png");
                     break;
                 }
             }
Почему не работает? С той же переменной через if всё ок. А свич не пашет Через int вместо char тоже не работает.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.10.2013, 11:11
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Switch. Почему не работает? VC++ Studio 2010 (C++):

Почему в Visual studio 2010 работает,а в 6.0 не хочет,с++ - C++
Помогите решить эту проблему, заранее спасибо всем #include "stdafx.h" #include <iostream> #include <conio.h> #include <locale> ...

Работает в Borland Developer Studio 2006 но не работает в Visual Studio 2008, почему? - C++
Вводим строку и меняем в ней первый и последний символы. Всё хорошо в Borland Developer Studio, а Visual Studio 2008 пишет, что проэкт...

Почему не работает ветка в switch ? - C++
Делаю упражнение из четвёртой главы книги "Изучаем С++ через программирование игр" (Майкл Доусон). Не работает код из второй ветки в...

Почему Visual Studio 2010 не нумерует строчки? - C++
Как я понимаю, сами строчки считаются, но их номера мне почему-то не показываются. Вот, например, маленький код: #include <iostream> ...

Не работает Visual Studio 2010 - C++
Пишет что в ходе построения произошла ошибка, нажимаю "ок" и выдает "не удается найти указанный файл". Это пишет при любом коде. ...

visual studio 2010 на работает - C++
поставил на новый ноут visual studio 2010 pro. создаю консольное приложение и питаюсь запустить код #include "stdafx.h" int...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
dzrkot
zzzZZZ...
519 / 349 / 53
Регистрация: 11.09.2013
Сообщений: 1,997
17.10.2013, 11:17 #2
char var - для 1 символа, char var[] - для строки, соответственно в case 'l1': ты сравниваешь 'l1' с 1им символом
UnrealFire
0 / 0 / 0
Регистрация: 03.03.2013
Сообщений: 36
17.10.2013, 11:48  [ТС] #3
Цитата Сообщение от dzrkot Посмотреть сообщение
char var - для 1 символа, char var[] - для строки, соответственно в case 'l1': ты сравниваешь 'l1' с 1им символом
Не очень вас понял, как нужно то
C++
1
2
3
4
5
6
7
8
9
10
public:
        Card(char varform)
        {
            InitializeComponent();
            //
            //TODO: добавьте код конструктора
            //
            varform = var[];
        }
        char var[];
Вот так не работает.
И да, почему через int вместо char и 11 вместо 'l1' и 12 вместо 'l2' не работает?
dzrkot
zzzZZZ...
519 / 349 / 53
Регистрация: 11.09.2013
Сообщений: 1,997
17.10.2013, 11:53 #4
Цитата Сообщение от UnrealFire Посмотреть сообщение
Не очень вас понял, как нужно то
C++
1
2
3
4
5
6
7
8
9
10
public:
        Card(char varform)
        {
            InitializeComponent();
            //
            //TODO: добавьте код конструктора
            //
            varform = var[];
        }
        char var[];
Вот так не работает.
И да, почему через int вместо char и 11 вместо 'l1' и 12 вместо 'l2' не работает?
как ты умудрился такой код написать...?) я думал ты поймёшь....Вообщем если ты используешь тип char для переменной, то в нё ты можешь записать только 1(один) символ. Для того, чтобы хранить в нём строку, ты должен создать массив char'ов , т.е. char a[10] к примеру. У тебя в проге switch сработает, если ты введёшь в var "l1", но это не возможно, т.к. var объявлен как просто char, а не как массив. Если ты в case напишешь не 'l1', а просто '1', то при char var='1'; всё будет работать
UnrealFire
0 / 0 / 0
Регистрация: 03.03.2013
Сообщений: 36
17.10.2013, 11:56  [ТС] #5
C++
1
2
3
4
5
6
7
8
9
10
public:
        Card(char varform[3])
        {
            InitializeComponent();
            //
            //TODO: добавьте код конструктора
            //
            varform = var[3];
        }
        char var[3];
ругается на char var[3]; пишет не может быть стандартным массивом.
dzrkot
zzzZZZ...
519 / 349 / 53
Регистрация: 11.09.2013
Сообщений: 1,997
17.10.2013, 12:04 #6
1)потому что нельзя так их передавать в функцию/конструктор
2)нельзя присваивать 1 массив другому массиву так, как ты написал (надо это делать поэлементно)

читай книги что я могу сказать, у тебя пробелы в базовых знаниях, а ты пытаешься класс написать...
alsav22
5417 / 4813 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
17.10.2013, 12:12 #7
Может, как-то так:
C++
1
2
3
4
5
6
7
8
9
10
public:
        Card(char* varform)
        {
            InitializeComponent();
            //
            //TODO: добавьте код конструктора
            //
            strcpy(var, varform);
        }
        char var[3];
C++
1
2
3
4
5
6
7
8
9
10
private: System::Void l1_Click(System::Object^  sender, System::EventArgs^  e) 
         {
             Card^ Rf = gcnew Card("l1");
             Rf->ShowDialog();
         }
private: System::Void l2_Click(System::Object^  sender, System::EventArgs^  e) 
         {
             Card^ Rf = gcnew Card("l2");
             Rf->ShowDialog();
         }
C++
1
2
3
4
5
6
7
8
9
10
private: System::Void Card_Load(System::Object^  sender, System::EventArgs^  e) 
             {
                 
                 if (!strcmp(var, "l1")
                     this->CardBoxEng->Image = Image::FromFile("Cards\\BasicSet\\Spells\\Light\\Heal.png");
                     
                 if (!strcmp(var, "l2")
                     this->CardBoxEng->Image = Image::FromFile("Cards\\BasicSet\\Spells\\Light\\Cleansing-Light.png");
                     
             }
UnrealFire
0 / 0 / 0
Регистрация: 03.03.2013
Сообщений: 36
17.10.2013, 13:02  [ТС] #8
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
private: System::Void Card_Load(System::Object^  sender, System::EventArgs^  e) 
             {
                 if (a1 = 1)
                 {
                    switch (b1)
                    {
                    case 1:
                        this->CardBoxEng->Image = Image::FromFile("Cards\\BasicSet\\Spells\\Light\\Heal.png");
                        break;
                    case 2:
                        this->CardBoxEng->Image = Image::FromFile("Cards\\BasicSet\\Spells\\Light\\Cleansing-Light.png");
                        break;
                    }
                 }
                 
             }
C++
1
2
3
4
5
6
7
8
9
10
11
12
public:
        
        Card(int a,int b)
        {
            InitializeComponent();
            //
            //TODO: добавьте код конструктора
            //
            a = a1;
            b = b1;
        }
        int a1,b1;
C++
1
2
3
4
5
6
7
8
9
10
private: System::Void l1_Click(System::Object^  sender, System::EventArgs^  e) 
         {
             Card^ Rf = gcnew Card(1,1);
             Rf->ShowDialog();
         }
private: System::Void l2_Click(System::Object^  sender, System::EventArgs^  e) 
         {
             Card^ Rf = gcnew Card(1,2);
             Rf->ShowDialog();
         }
Подскажите тогда плз. Тут то что не так?
Вроде должно работать, но почему то когда приравниваются a = a1 и b = b1 a и b были 1 и 1, а a1 b1 стали нулями. Смотрел по отладке и точкам остановки.
alsav22
5417 / 4813 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
17.10.2013, 13:05 #9
Наоборот нужно:
C++
1
2
a1 = a;
b1 = b;
UnrealFire
0 / 0 / 0
Регистрация: 03.03.2013
Сообщений: 36
17.10.2013, 13:09  [ТС] #10
Цитата Сообщение от alsav22 Посмотреть сообщение
Наоборот нужно:
C++
1
2
a1 = a;
b1 = b;

упс.... что то со мной не так сегодня...
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.10.2013, 13:09
Привет! Вот еще темы с ответами:

Почему при выборе switch у меня не работает вывод дерева на экран?! - C++
////////////////////////////////////////////////////// // // // Ñîçäàòü ïðîãðàììó äëÿ...

Не работает сочетание клавиш в Visual Studio 2010 - C++
Здравствуйте! Стоял у меня Visual Studio 2010! Я переустановил Windows, поставил опять же его, создал проект и как всегда жму сочетание...

не работает ctrl Пробел на Visual Studio 2010 - C++
Создал новый проект в Windows Forms но не работает сочетание клавиш ctrl+Пробел, может кто-нибудь знает в чем может быть проблема?

Как упростить программу и почему она не работает на Visual Studio - C++
Доброго времени суток! Код программы, работающий через онлайн-компилятор отказывается проходить успешно на Visual Studio, не могу...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
17.10.2013, 13:09
Ответ Создать тему
Опции темы

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