Форум программистов, компьютерный форум CyberForum.ru

Шахматный телефонный номер через рекурсию(с Паскаля на C++) - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Массивы. Определение максимального целого числа из произвольного количества введенных значений http://www.cyberforum.ru/cpp-beginners/thread909465.html
определение максимального целого числа из произвольного количества введенных значений.На каждом цикле ввода нового значения числа рассчитать среднее значение и количество введенных чисел.Обеспечить вывод на консоль минимального значения,среднего значения и количество введенных значений. выход из программы выполнить по клавише "ESC".
C++ Вычисление конечных и бесконечных сумм и произведений 1) Для заданного натурального n и действительного x подсчитать следующие суммы: S=1!+2!+3!+...+n!; Помогите пожалуйста, просто лекций по этим темам не было, а сдать задачи требуют. http://www.cyberforum.ru/cpp-beginners/thread909461.html
Дан текстовый файл.Найти самую длинную строку и её длину C++
Помогите, подготовиться к отчету.Дан текстовый файл.Найти самую длинную строку и её длину.на языке С++.
Файл: Создать файл и записать в него обратные натуральные числа 1,1/2,...1/n. C++
Помогите подготовиться к отчету.Создать файл и записать в него обратные натуральные числа 1,1/2,...1/n.Вывести на экран все компоненты файла с порядковым номером 3.
C++ Создать строку со всех больших английских букв алфавита и вывести на экран http://www.cyberforum.ru/cpp-beginners/thread909444.html
Привет форумчане, поставлено задание "Создать строку со всех больших английских букв алфавита и вывести на экран. " Как это можно реализовать? Зарание благодарен.
C++ Проблемы с Eclipse (под убунту, если это важно) При создании проекта с++ не могу собрать, если выбираю Empty Project. Если выбираю HelloWorld, то там есть две папки, Debug и src, когда создаю Empty то нет ничего, ну так и должно быть конечно. но... Я добавляю source, пишу туда свой Hello World, но build сделать не получается, пишет нечего собирать( nothing to build for project first ); подробнее

Показать сообщение отдельно
LifeWind
 Аватар для LifeWind
4 / 4 / 1
Регистрация: 13.09.2012
Сообщений: 36
22.06.2013, 18:53     Шахматный телефонный номер через рекурсию(с Паскаля на C++)
Здравствуйте, вот задача: Телефонный номер называется “шахматным”, если его цифры набираются на телефонном кнопочном номеронабирателе ходом шахматного коня. Написать программу, подсчитывающую, сколько можно набрать различных семизначных “шахматных” номеров, начинающихся с заданной цифры.(Задачу надо сделать через рекурсивную функцию).
Есть код на паскале, а мне нужно на C++. Помогите переделать пожалуйста. В mas - варианты хода для чисел от 0 до 9, -1 означает что хода нет. Если N=5, то таких номеров нет.
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
const
  mas:array[0..9,1..3] of integer =
      ((4,6,-1), (6,8,-1), (7,9,-1),
      (4,8,-1), (3,9,0), (-1,-1,-1),
      (1,7,0), (2,6,-1), (1,3,-1), (2,4,-1));
 
 
var
  N:integer;
  Tel:integer;
 
 
procedure Find(digit:integer; count: integer);
var i:integer;
begin
  if digit=-1 then exit;
  if count =7 then begin inc(Tel);exit;end;
  for i:=1 to 3 do
  Find(mas[digit,i],count+1);
end;
 
begin
writeln('Введите число: ')
read(N);
find(N,1);
writeln(Tel);
readln;
end.
Добавлено через 2 часа 38 минут
Вот, я всё-таки сделал:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
#include <iostream>
 
using namespace std;
 
const int mas[10][3] = {
    {4,6,-1},
    {6,8,-1},
    {7,9,-1},
    {4,8,-1},
    {3,9,0},
    {-1,-1,-1},
    {1,7,0},
    {2,6,-1},
    {1,3,-1},
    {2,4,-1}
};
 
void find(int digit, int count, int &Tel)
{
    if (digit == -1)
        return;
    if (count == 7) {
        Tel++;
        return;
    }
    for (int i = 0; i < 3; ++i)
        find(mas[digit][i], count + 1, Tel);
    return;
}
void main()
{
    setlocale(LC_ALL, "Russian" );
    int Tel = 0;
    int n;
    cout <<"Введите первую цифру номера: ";
    cin >> n;
    if (!(0<=n && n<=9))
    {
        cout<<endl<<"Цифра должна быть в промежутке от 0 до 9"<<endl;
        return;
    }
    find(n, 1, Tel);
    cout << endl <<"Количество номеров с заданной цифры: ";
    cout << Tel <<endl;
    return;
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 16:38. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru