C, PHP, VB, .NET

Дневникът на Филип Петров


* Условен оператор Switch

Публикувано на 25 септември 2008 в раздел С/С++.

Оператоът switch позволява разклонение на програмата (както беше в if-else), но към повече от два клона:

    switch(<израз-тест>)
    {
        case израз1:
            оператори;
            break;
        case израз2:
            оператори;
            break;
        ...
        default:
            оператори;
            break;
    }

<израз-тест> е условие за преход и може да бъде допустим израз за С със стойност от тип int или char. Ако стойността на този израз съвпадне със стойността на някой от изразите след case:, то ще се изпълнят операторите след него до достигане на оператор break. Ако няма съвпадение ще се изпълнят операторите след default.

Пример: Въвеждаме число и символ от клавиатурата. Ако сме въвели c, s или t ще изведем периметъра на окръжност с радиус това число, квадрат със страна това число или равностранен триъгълник със страна това число:

	// тип на фигурата
	char figtype;
	// x е страната, P е периметъра
	float x, P;
	printf("Please type the figure code (c, s or t): ");
	figtype = getchar();
	// проверяваме типа на фигурата
	switch(figtype){
		case 'c':
			printf("Please type the radius: ");
			scanf("%f", &x);
			P = 2*3.14*x;
			break;
		case 's':
			printf("Please type the side length: ");
			scanf("%f", &x);
			P = 4*x;
			break;
		case 't':
			printf("Please type the side length: ");
			scanf("%f", &x);
			P = 3*x;
			break;
		default:
			printf("Incorrect code!");
			P = 0;
			break;
	}
	// Ще отпечатаме резултата ако има такъв
	if (P!=0) printf("The perimeter is %f\n", P);

Естествено примера може да се преработи така, че да се правят проверки дали въведената дължина е положително число. Направете го!

Задача: Напишете програма, която намира лицата на фигурите: окръжност по даден радиус, квадрат по дадена страна, правоъгълник по дадени две страни и триъгълник по дадени страна и височина към нея. Използвайте предишния пример като шаблон.

Задача: Проверете как ще работи програмата ако не напишете операторите break и направете изводи за какво служат.

Задача: Напишете програма, която извежда броя на дните от месеца по зададено число от 1 до 12.
Пояснение: За месец Февруари трява допълнително да попитате потребителя за годината и след това да проверите дали е високосна: 28+(year%400==0 || (year%4==0 && year%100!=0)). Какъв резултат очаквате от израза в скобите?

 



Добави коментар

Адресът на електронната поща няма да се публикува


*