Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 17.02.2013, 16:52   #1
valadorn
Новичок
Джуниор
 
Регистрация: 17.02.2013
Сообщений: 1
По умолчанию не могу найти ошибку

здрасте, мне надо сделать программу, которая, при введении числа 1-4 выбивает мои ФИО разными цветам, вот текст

#include <conio.h>
#include <stdio.h>
void main()
{
int a;
printf("/n Vvedite variant: ");
scanf("%d", &a);
switch(a)
{
case '1' : textcolor(LIGHTRED);
cprintf("\n Kinash Oleg Mukolaevich"); break;
case '2' : textcolor(LIGHTBLUE);
cprintf("\n Kinash Oleg Mukolaevich"); break;
case '3' : textcolor(WHITE);
cprintf("\n Kinash Oleg Mukolaevich"); break;
case '4' : textcolor(YELLOW);
cprintf("\n Kinash Oleg Mukolaevich"); break;


}
getch();
}

ввод предлагает, но ничего не делает, в чем ошибка, помогите?
valadorn вне форума Ответить с цитированием
Старый 17.02.2013, 17:52   #2
ROD
Linux C++ Qt ARM
Старожил
 
Аватар для ROD
 
Регистрация: 30.11.2008
Сообщений: 3,030
По умолчанию

Вариант 1:
Смените тип переменной "a" на char. (должно работать, но делать так не рекомендую).

Вариант 2:
В кейсах сравнивайте "a" не с символом, а с числом.

Код:
...
case 1 : textcolor(LIGHTRED);
...
Подробнее объясняю суть происходящего.
scanf("%d", &a); - записывает в переменную "a" - число, которое вы ввели в виде строки (она "строку, изображающую число" "превращает" в это число).
далее мы делаем
case '1' :
Как это работает - компилятор вместо символа (в одиночных кавычках пишется символ) подставляет его числовое значение. И для символа "1" оно не равно числу 1. по этому условие не выполняется.

к стати, еще рекомендую делать вот-так:
Код:
switch(a)
{
case 1:  
   break;
case 2:  
   break;
case 3:  
   break;
case 4:  
   break;
default://Обратите сюда внимание
   printf("/n Vi vveli nepravilnoe chislo");  
   break;
}
default будет выбран, если не был выбран другой кейс (т.е. если "a" != 1,2,3,4).
Дилетант широкого профиля.

"Слова ничего не стоят - покажите мне код!" © Линус Торвальдс

Последний раз редактировалось ROD; 17.02.2013 в 18:05.
ROD вне форума Ответить с цитированием
Старый 17.02.2013, 18:48   #3
Bugrimov
C/C++, Java
Участник клуба
 
Аватар для Bugrimov
 
Регистрация: 28.03.2012
Сообщений: 1,679
По умолчанию

Пользуясь случаем, хочу задать вопрос!
В Visual C++ 2008, 2010 функция textcolor() работает и какой файл нужно подключить для ее функционирования, в данном случае в Си?
"Keep it simple" - придерживайтесь простоты!
Уильям Оккам - "Не следует множить сущее без необходимости"
Сложность - враг простоты и удобства!
Bugrimov вне форума Ответить с цитированием
Старый 17.02.2013, 19:00   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

ИМХО не работает.
Все равно лучше в VS использовать SetConsoleTextAttribute().
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
не могу найти ошибку sasha0705 Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 1 10.12.2012 20:33
Не могу найти ошибку (VB) Radmir853 Помощь студентам 1 24.11.2012 02:07
Не могу найти ошибку GoldmasteR PHP 5 20.02.2011 12:37
не могу найти ошибку! novi4ok_Delphi Помощь студентам 4 24.04.2010 21:46
Не могу найти ошибку! Эдуард Общие вопросы C/C++ 7 27.02.2008 16:34