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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 04.02.2013, 14:50   #1
Tatiana_91
Пользователь
 
Аватар для Tatiana_91
 
Регистрация: 03.02.2013
Сообщений: 15
Вопрос Циферблат телефона...

Рассматривая клавиатуру кнопочного телефона:
1 2 3
4 5 6
7 8 9
0
Найти количество тех телефонных номеров длины n, которые получаются путем обхода конем по клавиатуре. Проблема в том, что считает первые две цифры правильно, т.е. при n=3 - сумма с=46, а моя программа добавляет еще числа. Подскажите как исправить?
Код:
int main(int argc, char* argv[])
{
int n, c, i, j, m;
int a[10][10];
cout<<"Vvedite n:";
cin>>m;
for(i=0; i<10; i++)
  {
   for(j=0; j<10; j++)
       a[i][j]=0;
   }
a[0][1]=2;
a[1][1]=2;
a[2][1]=2;
a[3][1]=2;
a[4][1]=3;
a[5][1]=0;
a[6][1]=3;
a[7][1]=2;
a[8][1]=2;
a[9][1]=2;

 for (j=1; j<10; j++)
 {
  a[0][j] = a[5][j-1]+a[7][j-1];
  a[1][j] = a[6][j-1]+a[8][j-1];
  a[2][j] = a[3][j-1]+a[7][j-1];
  a[3][j] = a[2][j-1]+a[8][j-1]+a[9][j-1];
  a[4][j] = 0;
  a[5][j] = a[0][j-1]+a[6][j-1]+a[9][j-1];
  a[6][j] = a[1][j-1]+a[5][j-1];
  a[7][j] = a[0][j-1]+a[2][j-1];
  a[8][j] = a[1][j-1]+a[3][j-1];
  a[9][j] = a[3][j-1]+a[5][j-1];
 }
 c=0;
   for (i=0; i<10; i++)
     c = c+a[i][m-1];
cout<<c<<endl;


getch();
        return 0;
}
Изображения
Тип файла: jpg Циферблат.jpg (12.9 Кб, 155 просмотров)
Tatiana_91 вне форума Ответить с цитированием
Старый 06.02.2013, 16:07   #2
Tatiana_91
Пользователь
 
Аватар для Tatiana_91
 
Регистрация: 03.02.2013
Сообщений: 15
По умолчанию

Ребят, подскажите кто-нибудь пожалуйста, где же все-таки ошибка...
Tatiana_91 вне форума Ответить с цитированием
Старый 09.02.2013, 08:06   #3
FataLL
Форумчанин
 
Аватар для FataLL
 
Регистрация: 29.01.2013
Сообщений: 319
По умолчанию

Для начала, хочется пояснений:
Код:
cout<<"Vvedite n:";
cin>>m;
Так и задумано? И вообще, зачем n? И каким вообще образом осуществляется обход?
FataLL вне форума Ответить с цитированием
Старый 10.02.2013, 18:14   #4
Tatiana_91
Пользователь
 
Аватар для Tatiana_91
 
Регистрация: 03.02.2013
Сообщений: 15
По умолчанию

m это длинна телефонного номера. Обход конем по клавиатуре я исправила
Код:
a[0][j] = a[6][j-1]+a[4][j-1];
  a[1][j] = a[6][j-1]+a[8][j-1];
  a[2][j] = a[9][j-1]+a[7][j-1];
  a[3][j] = a[4][j-1]+a[8][j-1]; //+a[9][j-1];
  a[4][j] = a[3][j-1]+a[9][j-1]+a[0][j-1];
  a[5][j] = 0;
  a[6][j] = a[1][j-1]+a[7][j-1]+a[0][j-1];
  a[7][j] = a[2][j-1]+a[6][j-1];
  a[8][j] = a[1][j-1]+a[3][j-1];
  a[9][j] = a[4][j-1]+a[2][j-1];
Теперь ошибка заключается в том, что этот вот цикл
Код:
for(i=0; i<10; i++)
  {
   for(j=0; j<10; j++)
       a[i][j]=0;
   }
массив не обнуляет.

Последний раз редактировалось Tatiana_91; 10.02.2013 в 18:16.
Tatiana_91 вне форума Ответить с цитированием
Старый 10.02.2013, 18:59   #5
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

Цитата:
массив не обнуляет.
Откуда такие выводы?
Кстати memset(a,0,100) обнулит массив не хуже двух твоих циклов.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
прослушка телефона knygagrauzis Безопасность, Шифрование 4 23.11.2012 18:21
громкоговоритель из телефона cargo29 Общие вопросы по Java, Java SE, Kotlin 1 21.07.2011 22:22
Имитатор SIP телефона rapbit89 C# (си шарп) 3 18.03.2011 04:41
Часовой циферблат! tat'yana Паскаль, Turbo Pascal, PascalABC.NET 0 25.01.2011 11:32
Автоопределение телефона [Smarik] PHP 6 15.03.2008 17:26