Dimentre
@Dimentre
Начинающий

Почему неправильно работает цикл(язык С)?

#include<stdio.h>
main()
{
	/*4.28*/
	int earnings, wagesperunit, wages, hourly, hours, cod, i, numberofunits;
	for(i=1;i<=5;i++){
		printf("Enter the cod of worker: ");
		cod=getchar();
		switch(cod){
				case '1':
				printf("Enter the wages for administrator: ");
				scanf("%d",&wages);
				printf("Wages is: %d\n",wages);
				break;

				case '2':
				printf("Enter the business hours: ");
				scanf("%d",&hours);
				printf("Enter the hourly: ");
				scanf("%d",&hourly);
				hourly=hourly*40;
				if(hours>=40)
					hourly=hourly+((hours-40)*1.5);
				printf("Wages is: %d\n",hourly);
				break;

				case '3':
				printf("Enter the earnings: ");
				scanf("%d",&earnings);
				earnings=earnings*0.057+250;
				printf("Wages is: %d\n", earnings);
				break;

				case '4':
				printf("Enter wages per unit: ");
				scanf("%d", &wagesperunit);
				printf("Enter number of units: ");
				scanf("%d", &numberofunits);
				wagesperunit=wagesperunit*numberofunits;
				printf("Wages is: %d\n", wagesperunit);
				break;

				case '\n': case ' ':
				break;

				default:
					printf("Incorrect letter cod. Enter a new cod.\n");
					break;
			}
	}

return 0;
}


Это обычное упражнение из книги Дейтела "Как программировать на С++" завело меня в тупик. В цикле как-то неправильно проводятся итерации. Впрочем вот скриншот консольной проги.
6fc6d8db766f446ba26789ceca8b73de.bmp
Не знаю почему, но после первого ввода значения, программа начинает выводить по два раза сообщения о просьбе ввести значения.
  • Вопрос задан
  • 2589 просмотров
Пригласить эксперта
Ответы на вопрос 1
gbg
@gbg Куратор тега Программирование
Любые ответы на любые вопросы
В буфере остается лишний 'Enter', далее срабатывает
case '\n': case ' ':
        break;
и вы оказываетесь снова на приглашении ввести код.
Можете убедиться, дописав какое-нибудь сообщение перед break в этом case.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы