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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 22.12.2011, 13:17   #1
Leeto
Новичок
Джуниор
 
Регистрация: 22.12.2011
Сообщений: 1
По умолчанию с++.switch-case счетчик. не работает программа.

Ребята помогите, пожалуйста, справиться с задачей.
Условие задачи:
Создайте программу, которая бы подсчитывала сколько раз числа от 0 - 4 вводились. Используйте switch-case конструкцию. Используйте default для подсчета других чисел. Input прерывается с ^Z(EOF). EOF - end of file <stdio.h>. Таким образом. эта константанта EOF может использоваться (протестируйте если EOF печатался). Распечатайте число раз конкретное число печатолось.

Я тут накидала некоторое решение, но сталкнулась с некоторыеми сложностями.
1. Счеткие почему то не работает. Выдает нули.
2. Не знаю как пользоваться EOF поэтому пока программа заканчивает ввод строки по нажатию enter (\n)

Код:
#include <iostream>
#include <ctype.h>
#include <stdio.h>
#include <string.h>
using namespace std;
int main()
{
char ch;
int aCnt=0, eCnt=0, iCnt=0, oCnt=0, uCnt=0,
consonantCount=0;
while  (ch = getchar() != '\n')   
{
switch ( ch) 
{
case '1':
aCnt++;
break;
case '2':
eCnt++;
break;
case '3':
iCnt++;
break;
case '4':
oCnt++;
break;
default:
if ( isalpha( ch ) )
consonantCount++;
break;
}
}
cout << "the amount of 1: \t" << aCnt << '\n';
cout<< "the amount of 2: \t" << eCnt << '\n';
cout<< "the amount of 3: \t" << iCnt << '\n';
cout<< "the amount of 4: \t" << oCnt << '\n';
cout<< "the amount of other numbers: \t" << consonantCount;
cout<< '\n';
system ("PAUSE");
}

Так же я нашла в книге Кернигана альтернативное решение, но оно почему то же не работает !
Наверное издание старое и проблемы с библиотеками...

Код:
#include <stdio.h>
main() /* count digits, white space, others */
{
int c, i, nwhite, nother, ndigit[10];
nwhite = nother = 0;
for (i = 0; i < 10; i++)
ndigit[i] = 0;
while ((c = getchar()) != EOF) {
switch (c) {
case '0': case '1': case '2': case '3': case '4':
case '5': case '6': case '7': case '8': case '9':
	ndigit[c,'0']++;
break;
case ' ':
case '\n':
case '\t':
nwhite++;
break;
default:
nother++;
break;
}
}
printf("digits =");
for (i = 0; i < 10; i++)
printf(" %d", ndigit[i]);
printf(", white space = %d, other = %d\n",
nwhite, nother);
return 0;
}
Заранее огромное спасибо за помощь!
Leeto вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
switch и case C++ countteran Общие вопросы C/C++ 18 06.04.2013 20:52
switch case и if -=Andriushka=- Помощь студентам 1 19.04.2011 21:45
Switch/case (сравнение) I_student Помощь студентам 6 26.09.2010 14:33
switch - case 1 to 5 boris-blade Общие вопросы .NET 1 12.03.2010 07:13