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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
IVIbILLIb
0 / 0 / 0
Регистрация: 13.03.2011
Сообщений: 6
#1

преобразование типов - C++

13.03.2011, 20:49. Просмотров 680. Ответов 2
Метки нет (Все метки)

помогите у меня программа выдает ошибки преобразования типов подскажите как должно быть чтоб все работало программа делает перестановки чисел массива <8
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
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
#include "stdafx.h"
#include <iostream>
#include <math.h>     //математические функции
#include "conio.h"
using namespace std;
int i=0,t=0,z=0,c[100],q=0,x=0,y=0,l=0;
char ch;                //переменная по воодимый символ
long double A=0,kol_per;    //переменные по исходные данные и результат
long double f(long double);
void Perestanovki(int,int,int);
void swap(int &,int &);
void Obrabotka(int,int);
int B[]={1,2,3,4,5,6,7,8};
 
int _tmain()
{
    setlocale(LC_ALL,"rus_rus.1251");
    printf("Введите размерность шахматной доски (желательно не больше 8)");
    do{ //цикл по обработке вводимой последовательности цифр
    ch=_getch(); //
    if (ch==27) //если нажали клавишу "ESC" во время ввода данных, то
    {
        q=1;    //ставим признак прерывания программы и
        break;   //прерываем ввод данных
    }
    if (ch>='0'&&ch<='9'&&z!=0) //обрабатываем вводимые символы после первого
    {
        z=z+1;
        c[z]=ch-48;
        cout<<c[z];
    }
    if (ch=='.'&&t==0&&z!=0) //обрабатываем ввод точки,
               //если она идет не на первом месте и не после нуля
    {
        t=z;
        cout<<".";
    }
    if (ch=='.'&&t==0&&z==0) //обрабатываем, если первой введена точка
    {
        z=1;
        c[z]=0; //первый символ '0', затем точка
        t=1;  //флаг и позиция точки
        cout<<"0.";
    }
    if (ch=='0'&&t==0&&z==0) //если вводим сначала 0
    {
        z=1;
        c[z]=0; //первый символ 0, затем точка
        t=1;  //флаг и позиция точки
        cout<<"0.";
    }
    if (ch>='0'&&ch<='9'&&z==0) //если первый символ не точка
    {
        z=1;
        c[z]=ch-48;
        cout<<c[z];
    }
    }while (ch!='\r');//ждем конца ввода строки - нажатия "Enter"
    if (t==0) for (i=1;i<=z;i++) A=A+c[i]*pow(10.0,z-i); //если точек не было,
                          //то формируем исходное число
    else for (i=1;i<=z;i++) A=A+c[i]*pow(10.0,t-i);      //то же, если точка была
    printf("\n");
    kol_per=f(A);
    cout<<"Количество вариантов перестановок="<<kol_per<<"\n";
    Perestanovki(B,A,A);
    _getch();
}
 
void Obrabotka(int *M,int n)
{
    for(int h=0;h<n;h++)cout<<M[h]<<" ";
}
void swap(int &a,int &b)
{
    int temp=a;
    a=b;
    b=temp;
}
void Perestanovki(int *M,int n, int N)//M - массив, n - число переставляемых элементов, 
                                      //N - реальный размер массива  
{
    if(n==1)Obrabotka(M,N); //если нечего переставлять
    else 
    {
    for(int h=0;h<n;h++)
    {
            swap(M[h],M[n-1]); //меняем последний элемент с каждым,
                              //в том числе и с самим собой.
        Perestanovki(M,n-1,N); //запускаем функцию, для n-1 элементов
        swap(M[h],M[n-1]); //поигрались - и хватит. Надо вернуть массив в прежнее
                                           //состояние для следующего обмена элементов
    }
    }
}
 
long double f(long double l)
{
    if (l==1)
        return(l);
    else
    {
        l=l*f(l-1);
        return(l);
    }
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.03.2011, 20:49
Здравствуйте! Я подобрал для вас темы с ответами на вопрос преобразование типов (C++):

Преобразование типов - C++
Подскажите пожалуйста. Есть класс для работы со строками class String // Объявление строкового класса { private:...

Преобразование типов - C++
Вопрос по преобразованию строки в число , и наоборот . Например на форме расположен MaskedTextBox , Button и Label . Как при нажатии на...

Преобразование типов - C++
С учебника переписал код на применение структур, но возникла проблема с преобразованием типов. Вот код проги: #include &quot;stdafx.h&quot; ...

Преобразование типов в С++ - C++
Задача: Определить два класса, String с преобразованием из char * в строку и обратно. Мой код: #include &lt;iostream&gt; ...

Преобразование типов - C++
Цель копировать из одного объекта в другой инофрмацию, типы разные, поэтому приходится приводитьTypeA a; TypeB b; a = *(a*)&amp;b; А вот...

Преобразование типов - C++
Вообщем допустим есть два класа, класс T и класс A, комплексные числа в разной форме записи(тригонометрической и алгебраической). Для класа...

2
M128K145
Эксперт С++
8293 / 3513 / 143
Регистрация: 03.07.2009
Сообщений: 10,706
13.03.2011, 20:54 #2
C++
1
void Perestanovki(int,int,int);
измените на
C++
1
void Perestanovki(int*, int, int);
0
IVIbILLIb
0 / 0 / 0
Регистрация: 13.03.2011
Сообщений: 6
13.03.2011, 21:09  [ТС] #3
Спасибо все заработало
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.03.2011, 21:09
Привет! Вот еще темы с ответами:

Преобразование типов - C++
Вот я создаю двумерный массив n=1; m=2; char **mas=new char *; mas=new char; после этого мне нужно увеличить размер...

Преобразование типов - C++
Доброго времени суток. В программе нужен корректный ввод числа. Если, например вводим буковки - выводится сообщение, далее в цикле -...

Преобразование типов - C++
есть следующая маленькая программка #include &lt;iostream&gt; #include &lt;conio.h&gt; using namespace std; int main() { int oldFunt,...

Преобразование типов - C++
Как преобразовать char * в float?


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru